Я пишу фреймворк для юнит-теста ( IoCheck ).Будет метод forAll
, который принимает свойство, такое как isEven
, которое возвращает четное целое число, и список генераторов list(genInt)
.
Синтаксис будет выглядеть следующим образом:
isEven := block(i, i % 2 == 0)
forAll(isEven, list(genInt))
Поскольку не все целые числа являются четными, выходные данные будут выглядеть следующим образом:
***Failed!
57
forAll
вызовет генераторы, сохранят значения в списке и применят значения ксобственность 100 раз.Если свойство возвращает значение false, тестовый случай считается неудачным, и на экран выводятся ошибочные значения.
Для этого forAll
должен принять блок неизвестной арности и вызвать егосо списком аргументов.Я не знаю, как это сделать.
Примечание: это НЕ то же самое, что Io язык 'применять аргументы' , потому что в этом случае код знает арность, но не функцию,В этом случае код не будет знать ни того, ни другого.