3

fscheck の外部で使用するために fscheck を使用してデータ、特にリストを生成することは可能ですか? 比較結果が等しいように見える fscheck テストの状況をデバッグできませんが、fscheck はそうではないと言います。

オブジェクトのリスト用にこのジェネレーターがあります。このジェネレーターから使用できるリストを生成するにはどうすればよいですか?

let genListObj min max  = Gen.listOf Arb.generate<obj> |> Gen.suchThat (fun l -> (l.Length >= min) && (l.Length <= max))
4

1 に答える 1

7

編集:この関数はFsCheck API(Gen.sample)の一部になっているため、以下はもう必要ありません...

これは、特定のジェネレーターからn個のサンプルを生成するためのサンプル関数です。

let sample n gn  = 
   let rec sample i seed samples =
       if i = 0 then samples
       else sample (i-1) (Random.stdSplit seed |> snd) (Gen.eval 1000 seed gn :: samples)
   sample n (Random.newSeed()) []

編集:そこにある1000のマジックナンバーは、生成された値のサイズを表します。1000はかなり大きいです。たとえば、シーケンスの長さは0〜1000要素で、文字列も同様です。生成に時間がかかる場合は、その値を微調整する(または関数のパラメーターとして取り込む)ことができます。

于 2012-10-19T11:52:44.653 に答える