问题标签 [quickcheck]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
haskell - 如何让 Haskell QuickCheck 2.4 增加 # 测试?
好的,正如我通过上一个问题了解到的那样,RWH 书对于 QuickCheck 来说已经过时了。尽管我读过的所有帖子都告诉我使用 QuickCheck 是多么简单,但我找不到任何地方告诉我如何更改为属性运行的测试数量。
RWH 说:
如何使用 QuickCheck 2.4 做到这一点?更重要的是,我怎么会发现自己?请不要告诉我我应该能够从 API 文档中弄清楚。
haskell - Haskell Platform 2011.2.0.1 中的函数生成在哪里
想打印一个 0 到 10 之间的随机数,但生成似乎 undefined 无法编译,下面的代码从我使用 Haskell Platform 2011.2.0.1 的示例编辑
更新:
产生的错误:
haskell - 如何打印任意生成的结果?
quickCheckResult 只接受something -> Bool
,然后我模仿一些例子,通过
[颜色]括号的作用是什么?为什么不Colour -> Bool
呢?如何将任意实例传递给 quickCheckResult?
[更新]我的目标是以下可以运行
3.QuickCheck.Function使用方法(更新)
解析错误(可能不正确的缩进)
haskell - 如何用 QuickCheck 伪造函数组合的交换性
应该传递给以下代码的 CoArbitrary 的 ex 是什么?
如何使用 Test.QuickCheck.Function 中的 Function 来表示命题中的 f 和 g?
写是正确的,如果不是,怎么写?
其中类型 = [f, g] :: [函数]
变体可以接受 Function 吗?据我所知,生成函数经常使用 >< 或 QuickCheck 源代码中所述的变体
错误:
[更新]
另一种写法模仿函数中的示例,在 ghci 中的 '=' 处解析错误 let prop_commutative (Fun _ f) (Fun _ g) = (f.g) == (g.f)
可以运行
编码:
haskell - 查找快速检查失败的值
当某个值未能通过 QuickCheck 测试时,我想将其用于调试。有什么办法我可以做类似的事情:
如果我的数据read
能够,那么我可能会通过某种方式从 IO 获取数据,但事实并非如此。
optimization - 幂等性的这种概括的名称是什么?
许多常用的函数属性都有简洁的名称。例如,关联性、交换性、传递性等。
我正在制作一个与QuickCheck一起使用的库,它提供了这些属性和其他属性的简写定义。
我有一个问题是一元函数的幂等性。函数 f 是幂等的 iif ∀x 。fx == f (fx)。
这个属性有一个有趣的概括,我正在努力寻找一个类似的简洁名称。为了避免通过建议一个人的名字选择来产生偏见,我将其命名为 P 并提供以下定义:
函数 f 具有关于 g iif ∀x 的 P 属性。fx == f (gx)。我们可以通过根据 P 重新定义幂等性来将其视为幂等性的推广。如果函数 f 具有关于自身的 P 属性,则它是幂等的。
要看到这是一个有用的属性,请注意它证明了可用于实现许多常见优化的重写规则。当 g 是某种规范化函数时,这通常但并不总是出现。一些例子:
length
是关于(对于 f 的所有选择)的Pmap
f
- 转换为CNF相对于转换为DNF是 P (反之亦然)
- 形成 NFC 的Unicode 规范化相对于形成 NFD 的规范化是 P(反之亦然)
minimum
是相对于nub的 P
你会给这个属性起什么名字?
testing - Haskell:如何使用快速检查测试(反应性)FSM?
我为我目前正在从事的一个小型足球比赛编写了一个有限状态机模块。它提供了一个用于设置 FSM 的接口(基本上是它的状态和转换)。对于每个状态,您可以提供将在进入和退出时触发的函数,或者当 FSM 保持相同状态时,这些函数会返回一些消息。它还提供了一个反应式接口 (Yampa),它产生随时间变化的状态并收集随时间发生的消息。代码在这里Data/FSM.hs。
我正在寻找一种测试这个模块的好方法。由于它是纯的,我想尝试一下快速检查。我对快速检查没有经验,所以任何提示都将不胜感激!到目前为止,我的基本理解是:提供一些或多或少随机构建 FSM 的函数,然后在它们上运行一些(或多或少随机)转换。但我不太明白如何以这种方式构建测试......
haskell - 如何从 QuickCheck 中获得好的(小)收缩?
我正在尝试在一些嵌套列表上运行 QuickCheck,如下所示:
所以一个公式是一个文字列表,每个文字都包含一个谓词和一些参数;谓词/参数是字符串形式的约束的析取值。这给了我们一个列表列表的列表,唷!
如果我的 QuickCheck 属性之一失败,我往往会得到一页难以理解的输出。在尝试收缩之前,我曾经通过使用只能生成一小组(小)值的任意实例来解决这个问题。为我的每种类型实现收缩功能似乎有点帮助,但没有我想要的那么多。我仍然得到一页输出。
我认为我想要收缩的是一个小的文字列表,其中每个文字都有一个小的值列表,而这些值又很少有约束,每个约束都尽可能短。但在我目前的努力中,这些列表中至少有一个变得足够大,以至于输出变得可怕。如果我尝试调整我的收缩实现,我还会发现 QC 开始花费很长时间(搜索收缩?),这会阻碍我有效收缩的努力。
当您有这样的嵌套数据时,您如何提高理解 QuickCheck 失败的机会?
haskell - QuickCheck 失败退出状态和阴谋集团整合
我试图了解如何将一些快速检查测试与 cabal 集成。这个要点表明该quickCheck
函数在失败时返回非零状态,但我没有得到这种行为,所以使用 cabal 的exitcode-stdio-1.0
测试套件类型似乎对我不起作用,除非我想调用error
我的所有测试。
cabal用户指南还提到了一个detailed-1.0
测试套件,但 AFAICT 这还不存在。还是这样吗?
从这样的答案看来,很多人都在使用test-framework package。这对我来说太过分了,但那是我应该使用的吗?
我对这种情况有点不满意。
我正在使用的东西的版本:
testing - 如何在 Rust 中模拟 Lisp(应用)或(咖喱)?
我正在将QuickCheck移植到 Rust,并且我已经编写了所有内容,除了for_all
我不确定类型签名应该是什么。
我知道通常for_all
会接受一个属性 lambda 和一组生成器 lambda。它将评估生成器以创建随机测试用例以将属性作为输入。
如果属性返回 true,它应该打印+++ OK, passed 100 tests.
,否则,它应该打印*** Failed!
并打印有问题的测试用例值。