FSCheck генерирует списки определенного размера - PullRequest
2 голосов
/ 19 марта 2012

Вероятно, глупый вопрос, но как мне сгенерировать список определенного размера для FSCheck?

Я могу ограничиться использованием:

let fn_of_2_check xs = (xs.Length=2) ==> fn_of_2 xs

, но, очевидно, это отброситзагрузка списков.

Здесь fn_of_2 выполняет некоторые проверки только для списков длиной 2 и возвращает true или false.

Ответы [ 2 ]

5 голосов
/ 19 марта 2012

Как насчет:

let listOfLength n = Gen.listOfLength n Arb.generate |> Arb.fromGen
Check.Quick (Prop.forAll (listOfLength 2) fn_of_2)
2 голосов
/ 19 марта 2012

Тривиальным решением было бы написать тест, который принимает два входа и строит из них двухэлементный список:

let fn_of_2_check x y = fn_of_2 [x; y]

Однако, если вы тестируете функцию только для двухэлементного списка, тогда, возможно, функция должна принимать двухэлементный кортеж в качестве входных данных.Или вы можете написать тест, который проверяет некоторое поведение для списков из двух элементов и другое поведение для списков другой длины.

(Но если вы хотите проверить поведение для двухэлементных списков, то вышеприведенное должно работать.)

...