Ich möchte SmallCheck verwenden, um meinen Code zu testen. Ich habe es geschafft, willkürliche Listen von Paaren von Ints zu erzeugen, aber das ist nicht das, was mein Typ enthalten sollte. Die Liste stellt eine Reihe von Bereichen dar, wobei [1,3),[4,6)
als [(1,3),(4,6)]
codiert/gespeichert wird.SmallCheck generiert Daten, die Invarianten erfüllen
Dies sind die Invarianten für die normalisierte Form meiner Bereiche:
fst a < snd a
snd a < fst b where a is before b in the list
Ich möchte dies SmallCheck kommunizieren, so dass es viele Werte nicht erzeugen, die ich wegwerfen, weil sie aren‘ t meine Invarianten zu befriedigen, aber vielleicht ist das nicht möglich.
Wie kann ich Listen erstellen, die meine Invarianten erfüllen?
können Sie ein zufälliges '[NonNegative Int]' mit gerader Länge erzeugen und dann eine 'scan (+) 0' und eine Hilfsfunktion verwenden, um sie zu paaren. – epsilonhalbe
ahh und pass auf 'Int'-Überläufe ;-) – epsilonhalbe
@epsilonhalbe, das ist schlau, aber Testeigenschaften sollten normalerweise offensichtlich korrekter/vollständiger sein. – dfeuer