Тестирование генератора случайных чисел с использованием QuickCheck

Я написал генератор случайных чисел для создания доски тральщика. Он возвращает Gen Board, где Board - мой собственный определенный тип данных. Я хочу проверить, что он делает то, что должен. Поскольку это генератор, я не могу использовать функции, к которым я привык, которые возвращают Bool или Property. Есть ли хороший способ проверить генераторы с помощью quickCheck?

1 ответ

Решение

Предполагая, что у вас есть

genBoard :: Gen Board
isValidBoard :: Board -> Bool

Вы можете проверить, что генератор действителен с forAll комбинатор,

prop_genBoardMakesValidBoards :: Property
prop_genBoardMakesValidBoards = forAll genBoard isValidBoard

Сложнее проверить, что генератор достаточно случайный, например, он не всегда возвращает тривиальную плату.

Другие вопросы по тегам