quickcheck

    0热度

    1回答

    我有一个小的Parsec程序,我使用QuickCheck脚本来测试,它可以并行生成输入文件和预期的解析。 我的测试通常运行100次测试正常,但后来突然间因为我随便测试了一些东西,他们以非常大的(600,000个字符)反例失败。当我发现了错误的根源,我非常困惑: \ETX\NUL\202&Hxv4\an3z\244\143\222\RS\236\n\150K 快速检查显然产生上述字符串变量名,即

    0热度

    4回答

    我使用QuickCheck在我的代码上运行任意测试用例。然而,在我的代码一个部分我有型同义词: type Vector = [Double] 我也有接受一些Vector S作为输入的一些功能。但是,所有这些功能都要求Vector的长度相同。 有没有办法限制QuickCheck,这样它只会生成长度为的列表??

    1热度

    1回答

    对于典型的Haskell任务(如编译,打包,hlint,quickcheck等),有什么好的makefile规则,而不是自己创建自己的? 在搜索我找到喜欢的东西like this example: ghc -M *.hs

    9热度

    1回答

    我使用Haskell和快速检查编写测试以下功能: {-| Given a list of points and a direction, find the point furthest along in that direction. -} fn :: (Eq a, Ord a, DotProd a) => [a] -> a -> a fn pnts dir = pnts !! index

    -1热度

    1回答

    我有一个简单函数集合的逆函数(简单的移位码): encode, decode :: Int -> String -> String 和他们测试通过一些简单的手动测试正常,但一个快速检查测试报告失败: *** Failed! Falsifiable (after 8 tests and 4 shrinks): "\254" 0 但运行用手此相同的测试工作正常: *Main> decode

    3热度

    2回答

    我在这里遇到编程问题。一半的麻烦是,问题本身是非常棘手的想法,另一半是我不记得如何找到QuickCheck的方式。 我知道如果你编写一个函数,它带有几个带有Arbitrary实例的参数,QuickCheck将允许你使用该方法作为测试。我无法弄清楚的是如何在该方法内生成新的测试参数。我想写一些像 prop13 :: Foo -> Bar -> Bool prop13 foo bar =

    7热度

    3回答

    我有一个快速检查属性,它看起来像这样: prop42 :: Foo -> Bool prop42 foo = fn1 foo == fn2 foo 如果该物业的失败,它会打印出什么foo了。但我真的很想知道什么fn1和fn2返回。如果foo很大,那么手工生成这些信息也是不重要的。 (即,坐在那里,手动键入打印到Windows控制台窗口的大量文本)。 测试框架有一个比较相等的东西是常见的,如果

    7热度

    1回答

    我正在使用Haskell和Parsec来解析文件格式。我的解析函数看起来像这样: parseInput :: String -> Model parseInput input = ... data Model = Model { mNumV :: Int, mNumF :: Int, ... } 为了测试这个,我使用QuickCheck。我已经定义了一个Arbitrary实例产生代表格式

    3热度

    2回答

    正确性(这不是定理证明是关于在实践中检验像quickCheck) 让f一些通用的功能 f :: RESTRICTIONS => GENERICS 一些“理想”性质(即是不是黑客,是不可变的,...)通常是一个纯粹的Haskell泛型函数。 假设我们想测试一下,主要的问题是 如果我们有(井)测试该功能为某种特定类型(例如Int),我们可以假设它是正确的所有类型?(匹配的限制,当然) (用“行之有

    5热度

    2回答

    我已经看过QuickCheck如何用于测试一元和非一元代码,但是如何使用它来测试处理错误的代码,即打印某些消息,然后调用exitWith ?