问题标签 [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.

0 投票
1 回答
1810 浏览

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。为什么我不能让它实际安装最新版本?

0 投票
4 回答
2325 浏览

haskell - 如何使用快速检查显示测试属性失败的原因?

在通过 QuickCheck 进行测试时,显示属性测试失败原因的最佳做法是什么?

考虑例如:

然后会话可能如下所示:

但是对于调试来说,将失败的原因显示为 quickCheck falsifable 报告的一部分会非常方便。

我已经这样破解了它:

有没有更好/更好或更快速的方法来做到这一点?

0 投票
2 回答
966 浏览

haskell - 通过生成素数使用 QuickCheck

背景

为了好玩,我正在尝试编写一个用于快速检查的属性,该属性可以使用 RSA 测试密码学背后的基本思想。

  • 选择两个不同的素数,p并且q
  • N = p*q
  • e是某个相对质数的数(p-1)(q-1)(实际上,对于快速编码,e 通常为 3)
  • d是模的模e(p-1)(q-1)

对于所有x这些,1 < x < N总是正确的(x^e)^d = x modulo N

换句话说,x是“消息”,将其提升到eth power modN是对消息“编码”的行为,将编码的消息提升到dth power modN是“解码”它的行为。

(该属性对于 也是微不足道的x = 1,这种情况是它自己的加密)

代码

以下是我迄今为止编写的方法:

(感谢 google 和 random 博客,用于模乘逆的实现

问题

问题应该很明显:该属性的条件太多,无法使其完全可用。尝试quickCheck prop_rsa在 ghci 中调用使我的终端挂起。

所以我浏览了一下QuickCheck 手册,上面写着:

属性可以采取的形式

forAll <generator> $ \<pattern> -> <property>

<generator>我如何为素数做一个?或者使用其他约束,这样quickCheck就不必筛选一堆失败的条件?

欢迎任何其他一般性建议(尤其是关于 QuickCheck)。

0 投票
1 回答
2110 浏览

haskell - QuickCheck:根据其他 Arbitrary 定义 Arbitrary 实例

我正在使用 QuickCheck 1,我有以下数据类型:

现在我想定义一个Arbitrary实例,C以便C使用现有的生成器为A和生成值B。我最终这样做了:

这种明确生成固定数量的值是必要的AB还是有更好的方法将现有的值组合Arbitraries成一个新的值?

0 投票
2 回答
956 浏览

haskell - 显示 QuickCheck 属性中使用的函数

我正在尝试编写一个QuickCheck属性,该属性将一个或多个函数作为输入。为了简单起见,考虑一个属性来检查函数组合是否等同于连续的函数应用,以及一个快速而简单的测试驱动程序:

不幸的是,这不会编译,因为需要实现属性的输入,Show以便 QuickCheck 可以报告导致失败的输入,但是没有Show函数实现:

我尝试编写自己的Showfor 函数的无操作实例...

...编译,但触发警告-Wall...

...这让我认为有更正确的方法可以做到这一点。

我的直觉告诉我答案就在Test.QuickCheck.Function模块中,但它没有记录在案,而且我无法仅通过查看类型签名来弄清楚其中的任何内容或打算如何使用它。

0 投票
1 回答
4237 浏览

haskell - 你如何覆盖包代码提供的 Haskell 类型的类实例?

我有一些包含 QuickCheck 测试用例的旧 Haskell 代码。较新版本的 QuickCheck(我刚刚升级到 2.4.0.1)包括类型类实例 forArbitrary Word8和其他。这些在旧的 2.0.x 版本的 Test.QuickCheck.Arbitrary 中不存在。

虽然在一般意义上很有用,但包提供的Arbitrary Word8生成器并不是我想用于我的测试套件的那个:

上面的代码在编译时会导致重复的实例声明错误。我可以取出这段代码并使用默认生成器,但我想知道解决这个问题的正确方法。

我考虑过(但未经测试)的一种可能的解决方案是Word8使用newtype. 这会导致整个源代码发生许多变化,所以我希望有一种更清洁的方法。

编辑:正如下面的评论中提到的,接受的答案非常干净且易于实施:

0 投票
3 回答
2433 浏览

haskell - 它是隐藏包QuickCheck-1.2.0.0的成员,如何加载hs文件

安装了快速检查,

我再次安装 cabal install QuickCheck-1.2.0.0

并再次加载并出现错误

找不到模块Test.QuickCheck.Batch': It is a member of the hidden packageQuickCheck-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分

我真诚地请求您帮助解决这个加载问题!

0 投票
1 回答
242 浏览

haskell - 如何编写一个函数来触发 quickCheck prop_xxx?

我正在使用 QuickCheck v1。这是一个简单的 prop_xxx 定义如下:

这可以在 GHCi 中正确测试:quickCheck prop_foo

但是,当我尝试将调用包装在如下函数中时:

它报告了错误:

我可以提供类似的东西吗

非常感谢。

——拉里

0 投票
2 回答
2832 浏览

php - PHP中基于属性的测试?

在各种更基于功能的语言中,有一些工具(如Quickcheck)允许基于属性的测试

我将如何在 PHP 中进行基于属性的测试?

我希望能够指定 PHP 方法的输入和输出属性,并运行覆盖测试。

0 投票
2 回答
1222 浏览

haskell - 具有持续集成的 HUnit/QuickCheck

是否有任何 HUnit 或 QuickCheck 扩展允许像Bamboo这样的持续集成系统对测试结果进行详细报告?

到目前为止,我最好的想法是简单地触发测试作为构建脚本的一部分,并依靠测试以非零退出代码失败。这对于在测试失败时引起注意是有效的,但会将构建失败与测试失败混淆,并且需要通过控制台输出来确定问题的根源。

如果这是当前工具的最佳选择,我的想法是为 HUnit 编写一个报告模块,该模块将生成JUnit XML 格式的输出,然后将 CI 工具指向它,就好像它正在报告 Java 项目一样。不过,这似乎有些骇人听闻,因此我很感谢您对现有选项和新开发方向的想法。