2017-12-14 23 views
2

나는 다음과 같은 코드가 있습니다C#에서 FsCheck 사용자 지정 생성기를 사용하려면 어떻게해야합니까?

var gen = from x in Arb.Generate<int>() 
from int y in Gen.Choose(5, 10) 
where x > 5 
select new tuple { Fst = x, Snd = y }; 

을 그리고 난 발전기를 구성 및 속성을 정의 할 수있는 모든 방법을 볼

Prop.ForAll<tuple>(c => 
     Console.WriteLine($"{c.Fst}, {c.Snd}") 
).Check(Configuration.Default); 

실행할 수 있습니다.

그러나 나는 그걸 함께 사용하는 방법을 빨리 알지 못합니다.

답변

1

사용자 정의 생성기를 FsCheck에 등록해야합니다. FSCheck docs을 참조하십시오.

요약하면 맞춤 생성기를 유지하는 클래스를 만듭니다. 공용 정적 메서드가 Arbitrary<T>을 반환하도록하십시오. 여기서 T은 생성하는 형식입니다.

예에서 Arb.From(...)으로 전화를 걸어 발전기를 포장해야합니다.

public class MyGenerators { 
    public static Arbitrary<tuple> Tuple() { 
     return Arb.From(from x in Arb.Generate<int>() 
         from int y in Gen.Choose(5, 10) 
         where x > 5 
         select new tuple { Fst = x, Snd = y }); 
    } 
} 

마지막으로 테스트를 실행하기 전에 Arb.Register<MyGenerators>()으로 전화하십시오.