QuickCheck 从静态排列列表生成
QuickCheck to Generate from Static Permutations List
假设我有以下数据类型:
data A = A1 | A2 | A3
data B = B1 A | B2 A
我可以轻松生成B的所有可能性的列表。我想测试所有可能的排列,但我仍然想使用QuickCheck吐出应用它的列表中的所有元素。在这种情况下,我想测试一条规则是否适用于所有可能性,因此我不想生成随机数据。
假设我已经拥有列表中的所有可能性,我怎样才能使 QuickCheck 只输出列表中的每个元素一次?每次都给出完全相同的一组值。
大概你有这样的东西:
prop_for_b :: B -> Bool
prop_for_b = undefined
test_for_b :: IO ()
test_for_b = quickCheck prop_for_b
您可以在普通 Bool
上使用 quickCheck
及其变体,它只会巧妙地只 运行 一个 "test";因此:
prop_for_all_bs :: Bool
prop_for_all_bs = all prop_for_b [{- ... -}]
test_for_all_bs :: IO ()
test_for_all_bs = quickCheck prop_for_all_bs
假设我有以下数据类型:
data A = A1 | A2 | A3
data B = B1 A | B2 A
我可以轻松生成B的所有可能性的列表。我想测试所有可能的排列,但我仍然想使用QuickCheck吐出应用它的列表中的所有元素。在这种情况下,我想测试一条规则是否适用于所有可能性,因此我不想生成随机数据。
假设我已经拥有列表中的所有可能性,我怎样才能使 QuickCheck 只输出列表中的每个元素一次?每次都给出完全相同的一组值。
大概你有这样的东西:
prop_for_b :: B -> Bool
prop_for_b = undefined
test_for_b :: IO ()
test_for_b = quickCheck prop_for_b
您可以在普通 Bool
上使用 quickCheck
及其变体,它只会巧妙地只 运行 一个 "test";因此:
prop_for_all_bs :: Bool
prop_for_all_bs = all prop_for_b [{- ... -}]
test_for_all_bs :: IO ()
test_for_all_bs = quickCheck prop_for_all_bs