:
newtype CAndS = CAndS String
instance Arbitrary CAndS where
arbitrary = CAndS <$> listOf (elements "CS")
, , 'C' 'S' es :
prop_CountersAddUp :: CAndS -> Bool
prop_CountersAddUp (CAndS css) = length css == cs + ss
where (cs, ss) = countCAndS css
, 'C' 'S' es ( ), , , , 'C' 'S':
newtype CAndS = CAndS String
instance Arbitrary CAndS where
arbitrary = CAndS <$> listOf (frequency [ (1, return 'C')
, (1, return 'S')
, (2, arbitrary) ])
:
newtype CAndS = CAndS (String, Int, Int)
instance Arbitrary CAndS where
arbitrary = CAndS <$> sized (\n -> do
cs <- choose (0, n)
let ss = n - cs
css <- shuffle (replicate cs 'C' ++ replicate ss 'S')
return (css, cs, ss))
, :
prop_CountersEqual :: CAndS -> Bool
prop_CountersEqual (CAndS (css, cs, ss)) = cs == cs' && ss == ss'
where (cs', ss') = countCAndS css