Skip to content

Commit 3b42298

Browse files
committed
Merge pull request #10 from robdmoore/integer-equivalence-classes
Added integer equivalence classes
2 parents 6c6a030 + a001201 commit 3b42298

4 files changed

Lines changed: 116 additions & 0 deletions

File tree

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
using System.Collections.Generic;
2+
using System.Linq;
3+
using NTestDataBuilder.EquivalenceClasses;
4+
using Shouldly;
5+
using Xunit;
6+
7+
namespace NTestDataBuilder.Tests.EquivalenceClasses
8+
{
9+
public class IntegerEquivalenceClassesTests
10+
{
11+
public AnonymousValueFixture Any { get; private set; }
12+
13+
public IntegerEquivalenceClassesTests()
14+
{
15+
Any = new AnonymousValueFixture();
16+
}
17+
18+
[Fact]
19+
public void WhenGettingAnyPositiveInteger_ThenReturnDifferentPositiveIntegersEveryTime()
20+
{
21+
var s1 = Any.PositiveInteger();
22+
var s2 = Any.PositiveInteger();
23+
24+
s1.ShouldBeOfType<int>();
25+
s2.ShouldBeOfType<int>();
26+
s1.ShouldBeGreaterThan(0);
27+
s2.ShouldBeGreaterThan(0);
28+
s1.ShouldNotBe(s2);
29+
}
30+
31+
[Fact]
32+
public void WhenGettingAnyNegativeInteger_ThenReturnDifferentNegativeIntegersEveryTime()
33+
{
34+
var s1 = Any.NegativeInteger();
35+
var s2 = Any.NegativeInteger();
36+
37+
s1.ShouldBeOfType<int>();
38+
s2.ShouldBeOfType<int>();
39+
s1.ShouldBeLessThan(0);
40+
s2.ShouldBeLessThan(0);
41+
s1.ShouldNotBe(s2);
42+
}
43+
44+
[Fact]
45+
public void WhenGettingAnyIntegerExceptASetOfIntegers_ThenReturnDifferentIntegersExceptTheGivenIntegersEveryTime()
46+
{
47+
var generated = new List<int>();
48+
49+
for (var i = 0; i < 1000; i++)
50+
{
51+
var integer = Any.IntegerExcept(1, 5, 200, 356, 4, 53);
52+
generated.Add(integer);
53+
}
54+
55+
generated.ShouldAllBe(i => i != 1
56+
&& i != 5
57+
&& i != 200
58+
&& i != 356
59+
&& i != 4
60+
&& i != 53);
61+
generated.Distinct().Count()
62+
.ShouldBe(generated.Count);
63+
}
64+
}
65+
}

NTestDataBuilder.Tests/NTestDataBuilder.Tests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
<Compile Include="DataSources\Generators\SequentiaGeneratorTests.cs" />
6262
<Compile Include="DataSources\DataSourceConventionTests.cs" />
6363
<Compile Include="EquivalenceClasses\DictionaryEquivalenceClassesTests.cs" />
64+
<Compile Include="EquivalenceClasses\IntegerEquivalenceClassesTests.cs" />
6465
<Compile Include="EquivalenceClasses\StringEquivalenceClassesTests.cs" />
6566
<Compile Include="AsProxyTests.cs" />
6667
<Compile Include="BuildListTests.cs" />
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
using System.Linq;
2+
using System.Runtime.CompilerServices;
3+
using NSubstitute.Routing.Handlers;
4+
using Ploeh.AutoFixture;
5+
6+
namespace NTestDataBuilder.EquivalenceClasses
7+
{
8+
/// <summary>
9+
/// Extension methods that describe equivalence classes for generating anonymous integer values.
10+
/// </summary>
11+
public static class IntegerEquivalenceClasses
12+
{
13+
/// <summary>
14+
/// Generate and return a positive integer.
15+
/// </summary>
16+
/// <param name="fixture">The fixture to generate an integer for</param>
17+
/// <returns>The generated integer</returns>
18+
public static int PositiveInteger(this AnonymousValueFixture fixture)
19+
{
20+
return fixture.Fixture.Create<int>();
21+
}
22+
23+
/// <summary>
24+
/// Generate and return a negative integer.
25+
/// </summary>
26+
/// <param name="fixture">The fixture to generate an integer for</param>
27+
/// <returns>The generated integer</returns>
28+
public static int NegativeInteger(this AnonymousValueFixture fixture)
29+
{
30+
return 0 - fixture.PositiveInteger();
31+
}
32+
33+
/// <summary>
34+
/// Generate and return an integer except for the passed in integer(s).
35+
/// </summary>
36+
/// <param name="fixture">The fixture to generate an integer for</param>
37+
/// <param name="exceptFor">A list of integers to not return</param>
38+
/// <returns>The generated integer</returns>
39+
public static int IntegerExcept(this AnonymousValueFixture fixture, params int[] exceptFor)
40+
{
41+
int result;
42+
do
43+
{
44+
result = fixture.PositiveInteger();
45+
} while (exceptFor.Contains(result));
46+
return result;
47+
}
48+
}
49+
}

NTestDataBuilder/NTestDataBuilder.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@
7676
<Compile Include="DataSources\Person\PersonNameTitleSource.cs" />
7777
<Compile Include="DummyContext.cs" />
7878
<Compile Include="EquivalenceClasses\GeographyEquivalenceClassescs.cs" />
79+
<Compile Include="EquivalenceClasses\IntegerEquivalenceClasses.cs" />
7980
<Compile Include="EquivalenceClasses\PersonEquivalenceClasses.cs" />
8081
<Compile Include="DataSources\Generators\IGenerator.cs" />
8182
<Compile Include="DataSources\Generators\RandomGenerator.cs" />

0 commit comments

Comments
 (0)