gpt4 book ai didi

elm - 假设 a != b 与 Elm 模糊测试

转载 作者:行者123 更新时间:2023-12-01 03:26:37 29 4
gpt4 key购买 nike

我刚刚写了一个模糊测试,它基本上检查对具有不同输入的同一函数的两次调用会产生不同的结果。我想告诉 Elm-test 不允许输入相等;否则这个测试用例失败的可能性很低。

我不想通过从第一个输入导出第二个输入来使它们不相等,因为这严重限制了搜索空间。

我如何告诉 Elm-test 模糊器它生成的两个输入不能相等?

编辑:
这是我编写的健全性测试之一:

fuzz3 Fuzz.string Fuzz.int Fuzz.int "Decryption is not possible with wrong key" <|
\msg keySeed keySeed2 ->
let
key =
createKey keySeed

key2 =
createKey keySeed2
in
let
encryptedMessage =
encrypt key msg
in
Expect.equal Nothing (decrypt key2 encryptedMessage)

最佳答案

您可以创建一个模糊器来生成一个具有唯一值的元组,如下所示:

uniqueTuple : Fuzzer comparable -> Fuzzer (comparable, comparable)
uniqueTuple fuzzer =
let
uniquer (a, b) =
if a == b then
tuple (constant a, fuzzer)
|> Fuzz.andThen uniquer
else
constant (a, b)
in
tuple (fuzzer, fuzzer)
|> Fuzz.andThen uniquer

这个想法是它采用现有的模糊器(如 int ),然后生成一个元组。如果两个值相等,它会保留第一个并尝试为第二个生成新的模糊值。它递归地执行此操作,直到值不同。

您可以单独在模糊器上运行测试:

fuzz (uniqueTuple int) "All pairs are unique" <|
\(a, b) ->
Expect.notEqual a b

关于elm - 假设 a != b 与 Elm 模糊测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41034482/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com