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