quickcheck

    4热度

    1回答

    ...而不是为每个属性生成100个新的随机样本? 我的测试套件包含此处解释的TemplateHaskell hack [1]至 测试名为prop_ *的所有函数。在运行测试程序打印 === prop_foo from tests/lala.lhs:20 === +++ OK, passed 100 tests. === prop_bar from tests/lala.lhs:28 ===

    1热度

    1回答

    说,我的数据类型: data A = A1 | A2 | A3 data B = B1 A | B2 A 我可以很容易地生成的我想测试所有可能的排列B的所有可能性的列表,但我仍然想使用QuickCheck来将它应用的列表中的所有元素吐出。在这种情况下,我想测试一个规则适用于所有可能性,所以我不想生成随机数据。 假设我已经有了列表中的所有可能性,怎样才能让QuickCheck输出列表中的每个元

    0热度

    1回答

    对于给定的名单[1..1],其中n是一个随机的正整数,我想用2个步骤生成测试数据: 洗牌列表,xs = shuffle [1..n]; 随机将xs中的数字x变为x,其中1 < = y < = n; 经过这2个步骤后,新列表被表示为ys。 我写了一个程序。这需要Ys和输出(X,Y),该函数的原型是这样的: solve :: [a] -> (a, a) 我想用Test.QuickCheck来测试我

    5热度

    3回答

    我需要测试很多访问数据库的函数(通过Persistent)。虽然我可以使用monadicIO和withSqlitePool这样做,但这会导致测试效率低下。每个测试,而不是属性,但测试,将创建和销毁数据库池。我如何防止这种情况? 重要提示:忘记效率或优雅。我还没有能够使QuickCheck和Persistent类型甚至组成。 instance (Monad a) => MonadThrow (Pro

    3热度

    2回答

    我试图解决与"Haskell Programming from First Principles"第15章中的this other question相同的练习。我已经创建了一个Semigroup实例,并且在编写练习的QuickCheck部分时遇到了麻烦。 半群实例应该满足: a <> (b <> c) == (a <> b) <> c <>哪里是半群mappend。 我想出了以下内容: imp

    1热度

    1回答

    data Edge v = Edge {source :: v, target :: v} deriving (Show,Eq,Ord) data Graph v = Graph {nodes :: Set v, edges :: Set (Edge v)} deriving Show instance Arbitrary v => Arbitrary (Ed

    -2热度

    1回答

    我试图生成任意大小的元素为我的自定义数据类型的任意元素: newtype ZippList a = ZPL ([a], [a]) deriving (Show) 这是我得到: instance Arbitrary a => Arbitrary (ZippList a) where arbitrary = sized zipplist where zipplist n =

    0热度

    2回答

    我通过堆栈使用Haskell测试框架来评估QuickCheck属性。当我运行stack test时,失败的属性以Gave up! Passed only 95 tests的形式报告。财产测试的很多例子中,我发现报告失败的形式为Falsifiable, after 48 tests,然后是失败的参数。但是,这些示例似乎是直接运行QuickCheck,而不是通过Stack和HTF运行。 如何配置我的环

    3热度

    1回答

    我想使用的Haskell Test.QuickCheck 的目标是产生具有下列条件(中等,[INT])的数据,以产生一些样品测试其中元组为(x,XS): X> 0 X不XS 所有X> 0 抓我的头,并在一段时间后通过手动https://github.com/stackbuilders/quickcheck-manual绊我可以产生随机列出符合这些要求: import Test.QuickCheck

    0热度

    1回答

    考虑从一组可能的字符串中生成字符串的问题,这样一旦选择字符串,就不能再次重复。对于这个任务,我想使用QuickCheck的Gen函数。 如果我看看我正在编写的函数的类型,它看起来非常像状态monad。由于我正在使用另一个monad,即Gen,在州monad中。我使用StateT写了我的第一次尝试。 arbitraryStringS :: StateT GenState Gen String ar