3

I have the following code I am using for creating a challenge on the following site : 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

I would like to set the value of x in prop_check to be a positive int greater than 4 and at max a five-digit number (no more than five digits, i.e : max value = 99999).

How would I go about approaching it ?

Mark Seemann
  • 225,310
  • 48
  • 427
  • 736
Any3nymous user
  • 216
  • 2
  • 11

1 Answers1

5

You can use QuickCheck's choose function to select a value in an inclusive range. The easiest approach is probably to write prop_check with do notation:

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

Here, x is an Integer value between 5 and 99999.

Depending on the types of solution and ref_sol, you may not need the Gen Integer type annotation on the first line. Since I didn't know the types of those functions, though, I had to add the annotation.

Mark Seemann
  • 225,310
  • 48
  • 427
  • 736