我在C#中使用FsCheck,我想生成一个ArrayList的任意值,以通过具有100个ArrayList来进行PropertyBasedTesting。我有这个ArrayList,其中每个元素都有定义的Arbitraries(它们不能更改)-
例如
System.Collections.ArrayList a = new System.Collections.ArrayList();
a.Add(Gen.Choose(1, 55));
a.Add(Arb.Generate<int>());
a.Add(Arb.Generate<string>())
如何获取此ArrayList的任意内容?
答案 0 :(得分:0)
基于Mark Seemann链接的the example,我创建了一个完整的编译示例。与链接相比,它没有提供太多额外的功能,但是将来不会冒被破坏的风险。
using System.Collections;
using FsCheck;
using FsCheck.Xunit;
using Xunit;
public class ArrayListArbritary
{
public static Arbitrary<ArrayList> ArrayList() =>
(from e1 in Gen.Choose(1, 15)
from e2 in Arb.Generate<int>()
from e3 in Arb.Generate<string>()
select CreateArrayList(e1, e2, e3))
.ToArbitrary();
private static ArrayList CreateArrayList(params object[] elements) => new ArrayList(elements);
}
public class Tests
{
public Tests()
{
Arb.Register<ArrayListArbritary>();
}
[Property]
public void TestWithArrayList(ArrayList arrayList)
{
Assert.Equal(3, arrayList.Count);
}
}