mercredi 29 mai 2019

Using FsCheck I get different result on tests, once 100% passed and the other time error

I created a generator to generate lists of int with the same lenght and to test the property of zip and unzip. Running the test I get once in a while the error

Error: System.ArgumentException: list2 is 1 element shorter than list1

but it shouldn't happen because of my generator.

I got three times the test 100% passed and then the error above. Why? It seems my generator is not working properly.

let samelength (x, y) = 
    List.length x = List.length y

let arbMyGen2 = Arb.filter samelength Arb.from<int list * int list> 

type MyGenZ =
    static member genZip() = 
       {
        new Arbitrary<int list * int list>() with
            override x.Generator = arbMyGen2 |> Arb.toGen
            override x.Shrinker t = Seq.empty
    }

let _ = Arb.register<MyGenZ>()

let pro_zip (xs: int list, ys: int list) = 
   (xs, ys) = List.unzip(List.zip xs ys)
   |> Prop.collect (List.length xs = List.length ys)

do Check.Quick pro_zip

Aucun commentaire:

Enregistrer un commentaire