【问题标题】:FSCheck generating lists of a specific sizeFSCheck 生成特定大小的列表
【发布时间】:2012-04-03 22:43:55
【问题描述】:

这可能是一个愚蠢的问题,但是如何为 FSCheck 生成一个特定大小的列表?

我可以限制使用:

let fn_of_2_check xs = (xs.Length=2) ==> fn_of_2 xs

但是,显然,这会丢弃大量列表。

这里fn_of_2 仅对长度为2 的列表进行一些测试并返回truefalse

【问题讨论】:

    标签: f# fscheck


    【解决方案1】:

    怎么样:

    let listOfLength n = Gen.listOfLength n Arb.generate |> Arb.fromGen
    Check.Quick (Prop.forAll (listOfLength 2) fn_of_2)
    

    【讨论】:

      【解决方案2】:

      一个简单的解决方案是编写一个测试,该测试接受两个输入并从中构建一个二元素列表:

      let fn_of_2_check x y = fn_of_2 [x; y]
      

      但是,如果您仅测试两个元素列表的函数,那么该函数可能应该将一个二元素元组作为输入。或者,您可以编写一个测试来验证二元素列表的某些行为和其他长度列表的某些其他行为。

      (但是,如果您想专门检查二元素列表的行为,那么上面应该可以工作。)

      【讨论】:

      • 函数将有不同长度的列表(参数数量),但每个函数都是固定的。我想它就像 map、map2、map3 - 我可以写 fn_of_2_check fn_of_3_check 等。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-21
      • 2017-04-25
      • 1970-01-01
      • 1970-01-01
      • 2020-01-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多