Я пишу единую тестовую структуру, которая будет снабжать случайные целые числа, булевы, символы и строки для тестирования функций.Ошибка случайного значения в Io
Github репо: IoCheck. Код в вопросе:
genChar := method(
Random value(128) floor asCharacter
)
genSeq := method(gen,
len := Random value(100) floor
0 to(len) map(i,
gen()
)
)
genString := method(
genSeq(genChar) join
)
# below always has same genChar
"Random string: #{genString}" interpolate println
genSeq
должен генерировать случайную последовательность от 0 до 99 элементов, используя функцию генератора для заполнения последовательности. По какой-то причине, когда genChar
передан (см. Вызов genString
в example.io
), genSeq
возвращает тот же самый элемент во всех позициях.
Замечательно подробное объяснение. Да, меняя все на блоки, исправлена ошибка. И блоки необходимы для метода forAll, который будет принимать список генераторов и вызывать их несколько раз для создания тестовых значений для функции. – mcandre