quickcheck相关内容

我们如何在 va_list 上应用非 vararg 函数?

背景故事 我正在将 QuickCheck 单元测试框架移植到 C(参见工作GitHub 上的代码).语法将是: for_all(property, gen1, gen2, gen3 ...); 其中 property 是要测试的函数,例如 bool is_odd(int).gen1、gen2 等是为 property 生成输入值的函数.有些生成整数,有些生成字符,有些生成字符串,等等. ..
发布时间:2022-01-20 00:07:48 其他开发

QuickCheck:生成平衡样本的嵌套数据结构的任意实例

tl;dr:如果您的数据类型允许太多嵌套,您如何编写不会爆炸的 Arbitrary 实例?你如何保证这些实例产生你的数据结构的真正随机样本? 我想生成随机树结构,然后在用我的库代码修改这些结构后测试它们的某些属性.(注意:我正在编写一个子类型算法的实现,即给定类型的层次结构,类型 A 是类型 B 的子类型.这可以变得任意复杂,包括对层次结构的多重继承和初始化后更新. 不支持这两种方法的经典方 ..
发布时间:2021-12-14 12:35:03 其他开发

Haskell - 找不到模块“Test.QuickCheck"

我在尝试 runhaskell 时收到一个错误,指出模块不存在.这很奇怪,因为我尝试先安装它并说它是最新的.知道如何解决这个问题吗? 解决方案 您可以尝试创建 包环境 位于保存项目的local 目录中,如下所示: c:\Users\...\ex1haskell>cabal 安装 --lib --package-env .快速检查 这应该在 ex1haskell 中创建一个 .ghc.e ..
发布时间:2021-12-14 12:07:32 其他开发

我如何在 Rust 中模拟 Lisp(应用)或(咖喱)?

我正在将 QuickCheck 移植到 Rust,除了 for_all 之外,我已经编写了所有内容 因为我不确定类型签名应该是什么. 我知道一般来说,for_all 会接受一个属性 lambda 和一组生成器 lambda.它将评估生成器以创建一个随机测试用例,将属性作为输入. 应该打印+++ OK,通过100次测试.如果属性返回true,否则应该打印*** Failed!并打印有问题 ..
发布时间:2021-07-13 20:51:53 其他开发

pytest-hypothesis 运行之间的测试隔离

我刚刚将 pytest 测试套件从 quickcheck 迁移到 hypothesis.这很有效(并立即发现了一些隐藏的边缘情况错误),但我看到的一个主要区别与两个属性管理器之间的测试隔离有关. quickcheck 似乎只是用不同的参数值多次运行测试函数,每次运行我的函数范围的装置.这也会导致 pytest 的输出中出现更多的点. hypothesis 然而,似乎只多次运行测试函数的 ..
发布时间:2021-06-25 18:49:12 Python

是否可以在QuickCheck中生成任意函数

我正在尝试为身份编写QuickCheck测试 f $ y = f y 我最初的计划是编写一个返回函数&的任意生成器.具有签名 Gen(Int-> Int,Int) 的整数 并在 prop_DollerDoesNothing 中测试带有/不带有 $ 的功能应用程序是否会得到相同的结果. 这是我的代码: prop_DollarDoesNothing ::属性prop_Dollar ..
发布时间:2021-05-13 20:45:46 其他开发

该示例显示了集成收缩的局限性

我刚刚观看了视频,该视频呈现了集成收缩的概念用于基于属性的测试.与类型定向收缩相比,该方法似乎具有一些优势,但是在 hedgehog 似乎为了能够找到列表中失败的属性的最小计数器示例,我想知道是否有一个示例可以显示上面引用中指出的缺点. 解决方案 在微积分方面,问题在于您没有遵循负梯度(最陡下降),而是先沿1轴最小化,然后最小化沿着另一个轴.根据这种类比,很容易提出至少一个人为的例子-考虑 ..

Haskell-找不到模块"Test.QuickCheck"

我收到一个错误,提示我尝试运行haskell时该模块不存在.这很奇怪,因为我尝试先安装它并说它是最新的.任何想法如何解决这个问题? local 目录中的#package-environments"rel =" nofollow noreferrer“>打包环境,如下所示: c:\ Users \ ... \ ex1haskell>cabal install --lib --package-en ..
发布时间:2021-05-13 20:33:06 其他开发

如何在Go软件包之间共享测试接口?

Go不会在不同软件包的测试文件之间共享代码,因此不会自动重用测试接口的定义.在实践中我们如何解决这个问题? 使用 testing/quick 的示例: foo/foo.go : package foo类型Thing intconst(X事物= iotaÿž) bar/bar.go : 包装栏进口 ("foo")输入Box struct {foo.Thing} 我们要对 f ..
发布时间:2021-05-11 19:45:13 其他开发

如何调用可能会失败的构造函数,尤其是在实现' Read'时和'任意&#39 ;?

我有一个“公共保险柜",可能会因(可能提供信息的)错误而失败: 数据EnigmaError = BadRotors|坏窗口|MiscError字符串实例显示EnigmaError在哪里显示BadRotors =“不良转子"显示BadWindows =“不良窗口"显示(MiscError str)= strconfigEnigma ::字符串->字符串->字符串->字符串->除了EnigmaErr ..
发布时间:2021-05-06 18:44:36 其他开发

TimeOfDay的任意实例

我想使用QuickCheck创建一系列伪随机创建特定的TimeOfDay很容易: now = TimeOfDay 17 35 22 使用GHCi 8.6.5打印此文件可获得: 17:35:22 我认为使用QuickCheck创建TimeOfDay值所必需的Arbitrary实例将是: instance Arbitrary TimeOfDay where arbitr ..
发布时间:2020-11-22 07:44:53 其他开发

fscheck无法生成足够随机的数据

我正在使用FsCheck,所以我有以下实现方式: let add a b = if a > 100 then failwith "nasty bug" else a + b ...以及基于FsCheck的测试: fun (a:int) -> (add a 0) = a |> Check.QuickThrowOnFailure ,测试永不失败.我的猜测是 ..
发布时间:2020-11-03 00:40:22 其他开发

快速检查运行时错误

我对使用快速检查库感兴趣,但似乎它是用来测试属性的.我想做的是为我定义的数据类型和编写的测试函数生成随机数据.我不在乎结果是什么,即使函数在输入随机数据时产生运行时错误.我看到的所有快速检查示例都是用于测试函数的属性的,例如在馈送随机数据时结果是否大于5.有没有办法以这种方式使用快速检查?像 data Result = A | B fun :: Result -> Int fun A = ..
发布时间:2020-09-15 00:53:07 其他开发