快速检查类
这个库提供了一组属性,这些属性应该用于公共类型类,以及三(3)个可以用来测试它们的简单函数。
法律检查
:
用于测试GHCi特性的便利函数。例如,在GHCi:
>>>lawsCheck(monoidLaws(代理::代理排序))Monoid:联想+++OK,通过了100次测试。Monoid:左身份+++正常,通过100次测试。Monoid:正确身份+++OK,通过100次测试。
假设任意的
的实例订购
很好,我们现在有信心单体
的实例订购
满足monoid定律。
法律检查许多
:
检查多个类型类实例的便利函数多种类型。考虑以下Haskell源文件:
导入数据。代理(代理(..))导入数据。地图(Map)导入数据。集合(Set)--“Set”“Int”的“Proxy”。setInt::代理(Set Int)setInt=代理--“Map”“Int”“Int”的“Proxy”。mapInt::代理(映射Int)mapInt=代理myLaws::代理a->[Laws]myLaws p=[eqLaws p,monoidLaws p]namedTests::[(字符串,[Laws])]命名测试=[(“设置Int”,myLaws setInt),(“地图国际”,myLaws地图国际)]
现在,在GHCi中:
>>>法律检查许多命名测试测试常用类型类的属性---------------设置Int---------------等式:Transitive+++OK,通过100次测试。等式:对称+++正常,通过100次测试。等式:反射+++正常,通过100次测试。Monoid:Associative+++OK,通过100次测试。Monoid:左身份+++正常,通过100次测试。Monoid:正确的身份+++OK,通过了100次测试。Monoid:级联+++正常,通过了100次测试。-------------------映射Int Int-------------------等式:Transitive+++OK,通过100次测试。等式:对称+++正常,通过100次测试。等式:反射+++正常,通过100次测试。Monoid:Associative+++OK,通过100次测试。Monoid:左身份+++OK,通过了100次测试。Monoid:正确的身份+++OK,通过了100次测试。Monoid:级联+++正常,通过了100次测试。
法律CheckOne
一个方便的函数,允许检查多个类型类相同类型的实例。
例如,在GHCi中:
>>>lawsCheckOne(Proxy::Proxy Word)[jsonLaws,showReadLaws]ToJSON/FromJSON:编码等于值+++OK,通过了100个测试。ToJSON/FromJSON:部分同构+++OK,通过了100个测试。显示/读取:部分同构+++正常,通过了100个测试。