问题标签 [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 - Cabal安装quickcheck版本问题
我正在尝试在 Ubuntu 10.04 上通过 cabal 安装 quickcheck 2。无论我尝试做什么,我总是会得到以下结果:
这是在一个干净的 Ubuntu 10.04 上,只安装了 ghc6 和 cabal-install apt 软件包。在尝试安装 quickcheck 之前,我已经通过 cabal 安装了二进制包。
它告诉我 2.1.1.1 可用,但它只安装 1.2.0.0。为什么我不能让它实际安装最新版本?
haskell - 如何使用快速检查显示测试属性失败的原因?
在通过 QuickCheck 进行测试时,显示属性测试失败原因的最佳做法是什么?
考虑例如:
然后会话可能如下所示:
但是对于调试来说,将失败的原因显示为 quickCheck falsifable 报告的一部分会非常方便。
我已经这样破解了它:
有没有更好/更好或更快速的方法来做到这一点?
haskell - 通过生成素数使用 QuickCheck
背景
为了好玩,我正在尝试编写一个用于快速检查的属性,该属性可以使用 RSA 测试密码学背后的基本思想。
对于所有x
这些,1 < x < N
总是正确的(x^e)^d = x modulo N
换句话说,x
是“消息”,将其提升到e
th power modN
是对消息“编码”的行为,将编码的消息提升到d
th power modN
是“解码”它的行为。
(该属性对于 也是微不足道的x = 1
,这种情况是它自己的加密)
代码
以下是我迄今为止编写的方法:
(感谢 google 和 random 博客,用于模乘逆的实现)
问题
问题应该很明显:该属性的条件太多,无法使其完全可用。尝试quickCheck prop_rsa
在 ghci 中调用使我的终端挂起。
所以我浏览了一下QuickCheck 手册,上面写着:
属性可以采取的形式
forAll <generator> $ \<pattern> -> <property>
<generator>
我如何为素数做一个?或者使用其他约束,这样quickCheck
就不必筛选一堆失败的条件?
欢迎任何其他一般性建议(尤其是关于 QuickCheck)。
haskell - QuickCheck:根据其他 Arbitrary 定义 Arbitrary 实例
我正在使用 QuickCheck 1,我有以下数据类型:
现在我想定义一个Arbitrary
实例,C
以便C
使用现有的生成器为A
和生成值B
。我最终这样做了:
这种明确生成固定数量的值是必要的A
,B
还是有更好的方法将现有的值组合Arbitraries
成一个新的值?
haskell - 显示 QuickCheck 属性中使用的函数
我正在尝试编写一个QuickCheck属性,该属性将一个或多个函数作为输入。为了简单起见,考虑一个属性来检查函数组合是否等同于连续的函数应用,以及一个快速而简单的测试驱动程序:
不幸的是,这不会编译,因为需要实现属性的输入,Show
以便 QuickCheck 可以报告导致失败的输入,但是没有Show
函数实现:
我尝试编写自己的Show
for 函数的无操作实例...
...编译,但触发警告-Wall
...
...这让我认为有更正确的方法可以做到这一点。
我的直觉告诉我答案就在Test.QuickCheck.Function
模块中,但它没有记录在案,而且我无法仅通过查看类型签名来弄清楚其中的任何内容或打算如何使用它。
haskell - 你如何覆盖包代码提供的 Haskell 类型的类实例?
我有一些包含 QuickCheck 测试用例的旧 Haskell 代码。较新版本的 QuickCheck(我刚刚升级到 2.4.0.1)包括类型类实例 forArbitrary Word8
和其他。这些在旧的 2.0.x 版本的 Test.QuickCheck.Arbitrary 中不存在。
虽然在一般意义上很有用,但包提供的Arbitrary Word8
生成器并不是我想用于我的测试套件的那个:
上面的代码在编译时会导致重复的实例声明错误。我可以取出这段代码并使用默认生成器,但我想知道解决这个问题的正确方法。
我考虑过(但未经测试)的一种可能的解决方案是Word8
使用newtype
. 这会导致整个源代码发生许多变化,所以我希望有一种更清洁的方法。
编辑:正如下面的评论中提到的,接受的答案非常干净且易于实施:
haskell - 它是隐藏包QuickCheck-1.2.0.0的成员,如何加载hs文件
安装了快速检查,
我再次安装 cabal install QuickCheck-1.2.0.0
并再次加载并出现错误
找不到模块Test.QuickCheck.Batch':
It is a member of the hidden package
QuickCheck-1.2.0.0'。
是隐藏包,怎么办?
ghc -o tryprog hello.hs -package QuickCheck-1.2.0.0 : 不能满足 -package QuickCheck-1.2.0.0 (使用 -v 获取更多信息)
除了这个错误,如何使用包 quickcheck-1.2.0.0 加载 .hs 文件?
此题加50分
我真诚地请求您帮助解决这个加载问题!
haskell - 如何编写一个函数来触发 quickCheck prop_xxx?
我正在使用 QuickCheck v1。这是一个简单的 prop_xxx 定义如下:
这可以在 GHCi 中正确测试:quickCheck prop_foo
但是,当我尝试将调用包装在如下函数中时:
它报告了错误:
我可以提供类似的东西吗
非常感谢。
——拉里
haskell - 具有持续集成的 HUnit/QuickCheck
是否有任何 HUnit 或 QuickCheck 扩展允许像Bamboo这样的持续集成系统对测试结果进行详细报告?
到目前为止,我最好的想法是简单地触发测试作为构建脚本的一部分,并依靠测试以非零退出代码失败。这对于在测试失败时引起注意是有效的,但会将构建失败与测试失败混淆,并且需要通过控制台输出来确定问题的根源。
如果这是当前工具的最佳选择,我的想法是为 HUnit 编写一个报告模块,该模块将生成JUnit XML 格式的输出,然后将 CI 工具指向它,就好像它正在报告 Java 项目一样。不过,这似乎有些骇人听闻,因此我很感谢您对现有选项和新开发方向的想法。