标签: assertions

对于C#中byte []类型的键,为什么Hashtable不会为"ContainsKey"返回true?

请考虑以下代码:

byte[] bytes = new byte[] { 1, 2, 5, 0, 6 };
byte[] another = new byte[] { 1, 2, 5, 0, 6 };

Hashtable ht = new Hashtable();
ht.Add(bytes, "hi");
Assert.IsTrue(ht.ContainsKey(another));
Run Code Online (Sandbox Code Playgroud)

为什么这个断言失败了?作为基本类型的数组不应该使用对象引用,是吗?那么为什么它会返回假?我可以做些什么来使这个哈希表工作吗?

c# hashtable assertions

2
推荐指数
1
解决办法
2378
查看次数

我怎样才能最好地断言Python中的值可以转换为int?

我正在用 Python 编写一些测试,对于其中一个测试,我需要验证一个值是 int 还是可以干净地转换为 int。

应该通过:

0
1
"0"
"123456"
Run Code Online (Sandbox Code Playgroud)

应该失败:

""
"x"
"1.23"
3.14
Run Code Online (Sandbox Code Playgroud)

我怎样才能最好地写出这个断言?

python testing assertions

2
推荐指数
1
解决办法
3178
查看次数

在使用argparse和'nargs =*'参数声明所需参数时断言

以下是解析参数的当前代码:

parser = argparse.ArgumentParser()

parser.add_argument('-a', '--action', required=True, metavar='', nargs=1, help='{block|release|clear|show|show_extended|}')
parser.add_argument('-i', '--interface', required=True, metavar='', nargs=1, help='interface name')
parser.add_argument('-d', '--debug', action='store_true', help='debug prints')
parser.add_argument('--ips', metavar='ips', nargs='*', help='ip addresses to block')
parser.add_argument('--handles', metavar='handles', nargs='*', help='filters handles to delete (usually 800::xxx), run with [show] to see')
args = parser.parse_args()
Run Code Online (Sandbox Code Playgroud)

当我尝试执行它而不键入-a或-i时,我得到一个断言:

Traceback (most recent call last):
  File "./block_traffic.py", line 112, in <module>
    args = parser.parse_args()
  File "/usr/lib/python2.7/argparse.py", line 1690, in parse_args
    args, argv = self.parse_known_args(args, namespace)
  File "/usr/lib/python2.7/argparse.py", line 1722, in parse_known_args
    namespace, args …
Run Code Online (Sandbox Code Playgroud)

python assertions argparse

2
推荐指数
1
解决办法
627
查看次数

如何在systemverilog断言中使用整个运算符

这是一个规范:如果信号a被置位,那么它必须被置位直到信号b被置位然后它应该在下一个时钟边沿取消置位.我正在阅读LRM的16.9.9(以及http://www.testbench.in/AS_06_SEQUENCES.html)和我理解的方式,上面提到的规范可以写成

   property a2b_notA;
        @(posedge clk) ($rose (a) ##0 (a throughout b)) |=> (~a);
   endproperty
   a_a2b_notA: assert property (a2b_notA);
Run Code Online (Sandbox Code Playgroud)

然而,这在启动后第二个时钟边沿立即失败,我无法弄清楚原因.

assertions system-verilog system-verilog-assertions

2
推荐指数
1
解决办法
8300
查看次数

"vector"中的代码是什么意思?(C++)

我创建了一个程序,它使用了vector.h #include和迭代器等......但是当我运行程序时,在某些情况下(我还在试图找出那些会是什么)我得到一个断言错误将我引用到vector.h的第98行.我去了vector.h的第98行,得到了这个:

 #if _HAS_ITERATOR_DEBUGGING
        if (this->_Mycont == 0
            || _Myptr < ((_Myvec *)this->_Mycont)->_Myfirst
            || ((_Myvec *)this->_Mycont)->_Mylast <= _Myptr)
            {
            _DEBUG_ERROR("vector iterator not dereferencable");
            _SCL_SECURE_OUT_OF_RANGE;
            }
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我这意味着什么以及我的程序中有什么导致这个断言?

注意:第98行是记录的开头,是"_DEBUG_ERROR("vect ......")

注意:这是我相信我的程序中的代码触发了错误,但我并不完全确定.

码:

for(aI = antiviral_data.begin(); aI < antiviral_data.end();)
    {
        for(vI = viral_data.begin(); vI < viral_data.end();)
        {
            if((*aI)->x == (*vI)->x && (*aI)->y == (*vI)->y)
            {
                vI = viral_data.erase(vI);
                aI = antiviral_data.erase(aI);
            }
            else
            {
                vI++;
            }
        }
        if((*aI)->x >= maxx || (*aI)->x < 0 || (*aI)->y >= maxy || (*aI)->y < 0)
        { …
Run Code Online (Sandbox Code Playgroud)

c++ iterator vector assertions

1
推荐指数
3
解决办法
1755
查看次数

C++ 11 static_assert(以及其中使用的函数)

static_assert 似乎是一个非常好的功能与模板.

但是,我无法在标准库中查找函数,以便在编译时进行各种测试.

例如,我正在寻找一个函数来检查类型是否是另一个类型的子类型.boost::is_base_of但是,这项工作在std中是一个类似的功能,所以我不需要依赖boost.

基本上,是否有一个很好的源代码可以在static_assertC++ 11的标准库中使用并包含在函数列表中?

什么时候static_assert执行?我可以将它放在模板中的任何位置,并针对每个模板实例进行评估吗?它可以用来将模板参数约束为类的特定子类型吗?

c++ static-assert assertions c++11

1
推荐指数
2
解决办法
2612
查看次数

如何编写失败的SQL查询?

我需要此查询来测试异常处理,所以我更希望查询不依赖于模式.我正在寻找类似SELECT 1;但当然不会失败的东西.

我正在使用Java和MySQL,但我希望找到不依赖于编程语言和/或RDBMS的答案.

mysql sql testing assertions

1
推荐指数
2
解决办法
90
查看次数

为什么这个Groovy日期断言失败了?

我有一个非常简单的脚本,用于在Groovy中使用日期范围.它如下:

def today = new Date()
def yesterday = today - 1
def tomorrow = today + 1
assert [yesterday..tomorrow].contains(today)
assert [yesterday..tomorrow].size() == 3  
Run Code Online (Sandbox Code Playgroud)

断言失败,我收到错误:

Assertion failed: 

assert [yesterday..tomorrow].contains(today)
        |          |         |        |
        |          |         false    Sun Aug 17 00:24:17 IST 2014
        |          Mon Aug 18 00:24:17 IST 2014
        Sat Aug 16 00:24:17 IST 2014  
Run Code Online (Sandbox Code Playgroud)

这很奇怪因为星期六到星期一确实包含星期天.

我认为断言失败的唯一原因是如果一周从星期日开始,那么星期日不会在星期六和星期一之间.

但是我的脚本方式,断言不应该通过吗?

groovy assertions

1
推荐指数
1
解决办法
433
查看次数

根据SAML请求创建SAML响应

我开发了一个Java Web应用程序,我想实现SAML.这些是我认为实施SAML的正确步骤.

  1. 服务提供商(SP,在本例中为我的应用程序)向IdP发送SAML身份验证请求.
  2. 然后,IdP对其进行验证并创建SAML响应断言并使用证书对其进行签名,然后发送回SP.
  3. 然后,SP使用密钥库中的证书公钥对其进行验证,并在此基础上进一步进行.

我有一个示例代码,我能够创建SAML请求,就像这样

<samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
    ID="_c7b796f4-bc16-4fcc-8c1d-36befffc39c2" Version="2.0"
    IssueInstant="2014-10-30T11:21:08Z" ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
    AssertionConsumerServiceURL="http://localhost:8080/mywebapp/consume.jsp">
    <saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">http://localhost:8080/mywebapp
    </saml:Issuer>
    <samlp:NameIDPolicy
        Format="urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified"
        AllowCreate="true"></samlp:NameIDPolicy>
    <samlp:RequestedAuthnContext Comparison="exact">
        <saml:AuthnContextClassRef xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
        </saml:AuthnContextClassRef>
    </samlp:RequestedAuthnContext>
</samlp:AuthnRequest>
Run Code Online (Sandbox Code Playgroud)

我可以编码并发送给IdP.

我想创建示例Java代码以获取此SAML请求,然后创建SAML响应.如何解码请求并验证并创建响应?我是否需要使用证书签署saml响应?然后发送回SP?

谢谢.

java saml assertions saml-2.0

1
推荐指数
1
解决办法
6748
查看次数

什么检查CollectionAssert.AreEquivalent

我正在阅读MSDN文章中的方法CollectionAssert.AreEquivalent,并根据MSDN:

如果两个集合具有相同数量的相同元素,则它们是等效的,但是以任何顺序排列.如果元素的值相等,则元素相等,而不是它们引用相同的对象.

我在Visual Studio中尝试了以下代码:

var first = new TradeData { ID = "A", MarketPrice = 0 };
var mockFir = new TradeData { ID = "A", MarketPrice = 0 };
var collection = new List<TradeData> { first };
var mockCollection = new List<TradeData> { mockFir };
CollectionAssert.AreEquivalent(collection, mockCollection);
Run Code Online (Sandbox Code Playgroud)

但我有一个例外:

CollectionAssert.AreEquivalent失败

所以,我的问题是:当他们说"如果他们的价值相等时,元素是相等的,而不是他们引用同一个对象"时MSDN究竟是什么意思?

c# assertions

1
推荐指数
1
解决办法
489
查看次数