问题标签 [smallcheck]

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 回答
79 浏览

haskell - 测试(tasty-smallcheck)和文件组织并避免孤立实例

一个库在 src-directory 中,并且有一个数据定义 A。与测试相关的代码在 test-directory 中,正如许多教程中所建议的那样,其中包括用于生成测试用例的串行实例,请参见下面的链接:

cabal test警告这是一个孤儿实例。这是不可避免的还是有组织库的既定约定,例如,将串行实例定义移动到定义数据 A 的位置?后一种感觉有点不对劲,因为在测试目录中继续测试相关的东西会很好。如果这是一种典型的方式,那么可以通过哪些方式避免在公共接口上暴露测试相关的东西?编写所有测试模块的“内部”版本(公共模块和实际测试程序将使用)?单元测试问题中提出了类似的建议。

或者这根本不重要?在测试相关代码时留下孤立实例是多么糟糕的约定?


SmallCheck:制作类型类 Serial 的类型实例

如何在 Haskell 中使用 SmallCheck?

0 投票
0 回答
46 浏览

haskell - SmallCheck 系列生成和重复(参数有关系)

下面的数据结构可以用后面的 Tasty-SmallCheck 相关代码进行测试。有一个与构造函数 ShB 必须保持的关系:第二个和第三个正整数最多应该和第一个一样大。

构造函数 ShaA 应该具有正 Int,否则参数之间没有关系。

生成的案例还可以,但是可以看到重复的案例,例如

问题是,当满足以下条件时,如何使用 SmallCheck (tasty) 生成测试用例?

  • 有些属性必须保持,例如第一个参数必须为正
  • 如果第一个参数应该大于 10::Int 怎么办?
  • 继续,如果第二个参数应该在第一个 - 5 和第一个之间,而第三个应该在第二个 - 5 和第二个之间呢?

或者,如何生成动态依赖于先前生成的值的测试用例?

第一个想法是向 Shape 编写构造函数来检查输入是否有效(例如上面的要点),但是这种方法仍然存在重复测试用例生成的问题。

上面的代码使用了与SmallCheck invariant -answer类似的解决方案 。

0 投票
0 回答
65 浏览

haskell - smallcheck 什么是“但 n 不符合 ==>”,我怎么知道哪个

我写了这个属性

并运行它smallCheck 3 prop_lookupsymbol,结果是:

完成了 9000 次测试,没有失败。
但是 9000 不满足 ==> 条件。

我知道它指的是==>调用属性,但它是什么意思did not meet?我应该担心这个吗?如果是,那么我如何获得不符合条件的测试?

编辑

我在is_ancestor缺少第二个参数的地方犯了一个错误,所以现在的属性是这样的:

但从 9000 起有 8340 不符合条件。

以下是上述类型和功能的解释:

SymbolTableHashMap (Scope,String) SymbolHashMap.Strict来自 unordered-containers 包)的类型同义词,这只是用于构建编译器:)。

Symbol 有多种构造函数(变量、函数、类型等)并Scope定义了符号的定义范围,我们有文件、类、函数、方法(类中的函数)、接口。

作用域有名称(文件名、类名等)和上层作用域,对于一个类它也有父作用域(继承中的父作用域)和接口作用域列表(类实现),接口作用域有一个父作用域范围及其上范围。

该函数is_ancestor s1 s2返回 s1 是 s2 的上层作用域(或 upper-upperscope 或 upper-upper-upper...)还是父作用域(或 parent-parent 或 parent-parent-...)或接口之一(或父母的接口等),我应该提到这is_ancestor s s总是正确的。

最后lookupsymbol name table scope尝试找到一个符号,其名称为,name作用域为真,其返回类型意味着它返回找到的符号以及定义符号的作用域(如果没有找到任何内容,则返回 Nothing)。sis_ancestor s scopeMaybe (Scope,Symbol)

我的属性说明了这一点:对于任何名称表范围,如果 lookupsymbol 返回,Just (s,_)s必须is_ancestorscope,但如果它不返回任何内容,那么对于任何范围,它将不返回任何is_ancestor内容scope

0 投票
1 回答
93 浏览

python - python中涉及复利计算的round问题

我为学校做了一项工作,我必须在一个网站上提交,验证输出要求是否与我的相符。嗯,这个程序是关于复合利益的:我必须创造一些东西,给定一定的债务,利息和不付的年数会打印出来,每年累积的债务。

一切都很好,直到我得到一个 850.85 的值,而它应该是 850.86。这真的很烦人,因为由于这一轮错误,代码被检查为错误,我将得到 0。你能帮我找出问题所在吗?

0 投票
1 回答
69 浏览

haskell - 使用 SmallCheck 和 Tasty 进行不纯属性测试:资源获取

我正在尝试使用 Tasty 库和 SmallCheck 编写基于属性的测试。但我需要在属性检查功能中使用 IO,并且我还需要 I/O 资源。所以,我把现有的测试变成了:

所以,问题是:如何调用 getResource 一次?所以,不是在\(x::X) -> ...身体里,而是在它之前。可能吗?

0 投票
1 回答
58 浏览

haskell - 如何为此函数编写串行实例?

假设,我有像

我正在编写 SmallCheck 测试,所以我需要以下Serial实例TestIt

这个怎么写xxx?我知道它可能需要CoSerial类似的功能,但是 1)我不确定 2)我不知道如何编写它。当我看到CoSerial文档时,我看到我的CoSerial遗嘱有Int而不是D在其定义中:

所以我不知道CoSerials 以及如何使用它们来制作Serialfor Int -> m D

我也想拥有yfield的依赖序列。我的意思是如果x有样本 0 那么序列y应该0作为参数。可能吗?

0 投票
0 回答
26 浏览

haskell - 如何从另一个具有排列的序列实例(模拟“任何顺序”)

SmallCheck相关问题。

如果我编写了实例Series m [Something],那么如何从中创建Series m Something?这个列表出现在类型中是因为我有 4 个系列并且我想生成它们的排列系列(又名按任何顺序),所以我使用Data.List.permutations并得到了列表。所以我有一系列列表,我知道系列可以统一,但我不明白如何使用这个事实。我也可以创建Series m (Series m SomethingElse),但它看起来更复杂。在这种情况下如何处理排列?如何将它们转换为简单的Series m Something

0 投票
1 回答
42 浏览

haskell - smallcheck 属性测试中的黄金测试

property我在一个枚举给定枚举的所有构造函数的 smallcheck 中有一个手动编写的“黄金测试”(将实际输出写入文件,与“黄金”预期文件比较是否相等) 。

我想把它转换成美味的金色。有一个包,taste-smallcheck,它允许您在一个美味的测试套件中运行 smallcheck 测试。但是,我真正需要的是相反的:在 smallcheck 测试中运行黄金测试。

这里有我想念的明显解决方案吗?还是我只需要重写一个Test.SmallCheck.forAll列举所有可能性的美味行话版本?