テストが失敗したときに (単なるシードではなく) より良いメッセージを表示するようにQuickCheckを拡張したいと考えています。たとえば、次のようなものを作成できるようになりたいと考えています。
eqTest :: Eq a => a -> a -> TestResult
eqTest x y = if x == y
then HappyResult
else SadResult $ show x <> " /= " <> show y
または ( でMonoid
「停止」しSadResult
、 で「続行」するインスタンスで、演算子の forHappyResult
に似ています)(&&)
TestResult
listEqTest :: Eq a => [a] -> [a] -> TestResult
listEqTest [] [] = HappyResult
listEqTest [] ys = SadResult $ "Ran out of xs to compare to " <> show ys
listEqTest xs [] = SadResult $ "Ran out of ys to compare to " <> show xs
listEqTest (x:xs) (y:ys) = eqTest x y <> listEqTest xs ys
QuickCheck 機能を拡張するにはどうすればよいですか? あるいは、より拡張可能なランダム化されたテスト ライブラリはありますか?
ありがとう!