我正在尝试编写一个基于属性的测试,以验证相等性的一致性。
为此,我需要通过提供2个类型的Gen a值来运行它。
fun_cong_equality
:: forall m a
. (Monad m, Arg a, Vary a, Eq a, Show a)
=> Gen a
-> Gen a
-> PropertyT m ()
fun_cong_equality genA genB = do
a <- forAll genA
b <- forAll genB
f <- forAllFn $ fn @a genA
f a === f b
prop_fun_cong_equality :: Property
prop_fun_cong_equality =
property $
fun_cong_equality $ -- TODO need to pass 2 `Gen a` values as arguments我的问题是:如何创建Gen a类型的值?
注意:基于属性的测试尚未完成,它仍然需要过滤生成的值相等。
发布于 2019-08-17 15:45:49
我需要的是一个具有类型类Vary、Arg、Eq和Show实例的类型的值。
Int恰好满足了这一标准。
一种解决办法是使用:
fun_cong_equality (Gen.int (Range.linear 1 100)) (Gen.int (Range.linear 1 100))https://stackoverflow.com/questions/57537503
复制相似问题