Как выбрать значение в диапазоне с помощью QuickCheck?

У меня есть следующий код, который я использую для создания задачи на следующем сайте: codewars

describe "Random cases" $ do
    it "It should handle random test cases" $ 
        property $ prop_check where 
            prop_check  (Positive x) = solution x == ref_sol x
            --- ref_sol function

Я хотел бы установить значение x в prop_check как положительное целое число больше 4 и максимально пятизначное число (не более пяти цифр, т.е.: максимальное значение = 99999).

Как мне подойти к нему?


person Any3nymous user    schedule 08.09.2018    source источник


Ответы (1)


Вы можете использовать функцию choose QuickCheck, чтобы выбрать значение в широком диапазоне. Самый простой подход, вероятно, состоит в том, чтобы написать prop_check с нотацией do:

prop_check :: Gen Bool
prop_check = do
  x <- choose (5, 99999) :: Gen Integer
  return $ solution x == ref_sol x

Здесь x — это значение Integer между 5 и 99999.

В зависимости от типов solution и ref_sol вам может не понадобиться аннотация типа Gen Integer в первой строке. Однако, поскольку я не знал типов этих функций, мне пришлось добавить аннотацию.

person Mark Seemann    schedule 08.09.2018
comment
Ах, спасибо :) это объясняет это - person Any3nymous user; 08.09.2018