尺度值是否用于采用自定义发电机的Gen的样品?

时间:2016-02-03 18:06:46

标签: f# fscheck

我使用FsCheck Gen生成自定义数据。

假设您有一个返回Gen<'T>的函数:

let chooseRectangle widthMax heightMax offset =
   gen {
       let! left = Gen.choose(0, widthMax-offset)
       let! top = Gen.choose(0, heightMax-offset)
       let! width = Gen.choose(offset, widthMax-left)
       let! height = Gen.choose(offset, heightMax-top)
       return { Left=left
                Top=top
                Width=width
                Height=height
               }
   }

然后用于生成数据:

Gen.sample 0 10 (chooseRectangle 400 200 10)

是在这种情况下使用的size参数(第一个)并且是否影响值重新分区?

1 个答案:

答案 0 :(得分:3)

不,不是在你的情况下,据我所知。

第一个参数是尺寸。 sample将它传递到您调用它的生成器中,但是生成器对它执行的操作取决于该特定实现。对于序列生成器,它可以例如控制序列的长度。

然而,您的生成器仅构建在Gen.choose之上,明确忽略它:

let choose (l, h) = Gen (fun _ r -> range (l,h) r |> fst) 

其中size是_参数。请参阅here