我正在编写一个单元测试框架(IoCheck)。将有一个forAll
方法接受一个属性,例如isEven
,它返回一个整数是否为偶数,以及一个生成器列表list(genInt)
。
语法将如下所示:
isEven := block(i, i % 2 == 0)
forAll(isEven, list(genInt))
由于并非所有整数都是偶数,因此输出将如下所示:
***Failed!
57
forAll
将调用生成器,将值存储在列表中,并将值应用于属性 100 次。如果该属性返回 false,则测试用例被视为失败,并且违规值将打印到屏幕上。
为了做到这一点,forAll
必须接受一个未知数量的块并使用参数列表调用它。我不知道该怎么做。
注意:这与Io 语言 'apply arguments'不同,因为在这种情况下,代码知道元数但不知道函数。在这种情况下,代码都不知道。