2016-05-12 10 views
2

Wie kann ich Bedingungen für Testeingaben festlegen, wenn eigenschaftsbasiertes Testen durchgeführt wird?Wie kann ich Bedingungen für Testeingaben festlegen, wenn eigenschaftsbasiertes Testen durchgeführt wird?

Zum Beispiel der folgende Code erzeugt bools wenn ich Ints brauchen:

Gen.map (fun v -> v > 0) 

Hier ist die Funktion:

[<Property(QuietOnSuccess = true)>] 
let ``number of cells in grid equals rowcount squared``() = 
    let values = Arb.generate<int> |> Gen.map (fun v -> v > 0) 
            |> Arb.fromGen 

ich so etwas wie dieses brauchen, so dass ich qualifizierenden Ints bekommen kann:

Gen.filter (fun v -> v > 0) 

Allerdings sehe ich einfach keine Option dafür.

Irgendwelche Vorschläge?

+0

Alter, ich fange jetzt den Dreh FSharp zu bekommen. Ich bin immer noch nicht auf deinem Niveau. Ich habe eine zweiwöchige Pause vom Programmieren gemacht und jetzt bin ich zurück. –

+0

Von Interesse: [FsCheck - Generatoren, Verkleinerer und willkürliche Instanzen] (https://fscheck.github.io/FsCheck/TestData.html#Test-data-generators-shrinkers-and-Arbitrary-instances) –

+1

'Gen.where 'oder' Gen.SuchThat'? –

Antwort

1

Versuchen Gen.suchThat (fun v -> v > 0)