Skip to content

Commit 27cb810

Browse files
committed
Refactored new equivalence classes to use property-based category API
1 parent 504fe18 commit 27cb810

20 files changed

+263
-196
lines changed

TestStack.Dossier.Tests/EquivalenceClasses/GeoEquivalenceTests.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@ protected override List<object[]> GetData()
2121
{
2222
return new List<object[]>
2323
{
24-
new object[] {new Words(FromDictionary.GeoContinent), GenerateTestCasesForSut(Any.GeoContinent)},
25-
new object[] {new Words(FromDictionary.GeoCountry), GenerateTestCasesForSut(Any.GeoCountry)},
26-
new object[] {new Words(FromDictionary.GeoCountryCode), GenerateTestCasesForSut(Any.GeoCountryCode)},
27-
new object[] {new Words(FromDictionary.GeoLatitude), GenerateTestCasesForSut(Any.GeoLatitude)},
28-
new object[] {new Words(FromDictionary.GeoLongitude), GenerateTestCasesForSut(Any.GeoLongitude)},
24+
new object[] {new Words(FromDictionary.GeoContinent), GenerateTestCasesForSut(Any.Geography.Continent)},
25+
new object[] {new Words(FromDictionary.GeoCountry), GenerateTestCasesForSut(Any.Geography.Country)},
26+
new object[] {new Words(FromDictionary.GeoCountryCode), GenerateTestCasesForSut(Any.Geography.CountryCode)},
27+
new object[] {new Words(FromDictionary.GeoLatitude), GenerateTestCasesForSut(Any.Geography.Latitude)},
28+
new object[] {new Words(FromDictionary.GeoLongitude), GenerateTestCasesForSut(Any.Geography.Longitude)},
2929
};
3030
}
3131
}

TestStack.Dossier.Tests/EquivalenceClasses/IdentifierEquivalenceTests.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,24 +24,24 @@ protected override List<object[]> GetData()
2424
new object[]
2525
{
2626
new Words(FromDictionary.IdentifierBitcoinAddress),
27-
GenerateTestCasesForSut(Any.IdentifierBitcoinAddress)
27+
GenerateTestCasesForSut(Any.Identifier.BitcoinAddress)
2828
},
2929
new object[]
30-
{new Words(FromDictionary.IdentifierIban), GenerateTestCasesForSut(Any.IdentifierIban)},
30+
{new Words(FromDictionary.IdentifierIban), GenerateTestCasesForSut(Any.Identifier.Iban)},
3131
new object[]
3232
{
33-
new Words(FromDictionary.IdentifierIpAddressV4), GenerateTestCasesForSut(Any.IdentifierIpAddressV4)
33+
new Words(FromDictionary.IdentifierIpAddressV4), GenerateTestCasesForSut(Any.Identifier.IpAddressV4)
3434
},
3535
new object[]
3636
{
37-
new Words(FromDictionary.IdentifierIpAddressV6), GenerateTestCasesForSut(Any.IdentifierIpAddressV6)
37+
new Words(FromDictionary.IdentifierIpAddressV6), GenerateTestCasesForSut(Any.Identifier.IpAddressV6)
3838
},
3939
new object[]
40-
{new Words(FromDictionary.IdentifierIsbn), GenerateTestCasesForSut(Any.IdentifierIsbn)},
40+
{new Words(FromDictionary.IdentifierIsbn), GenerateTestCasesForSut(Any.Identifier.Isbn)},
4141
new object[]
4242
{
4343
new Words(FromDictionary.IdentifierMacAddress),
44-
GenerateTestCasesForSut(Any.IdentifierMacAddress)
44+
GenerateTestCasesForSut(Any.Identifier.MacAddress)
4545
}
4646
};
4747
}

TestStack.Dossier.Tests/EquivalenceClasses/IntegerEquivalenceTests.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,17 @@ protected override List<object[]> GetData()
2424
new object[]
2525
{
2626
new Words(FromDictionary.InternetDomainCountryCodeTopLevelDomain),
27-
GenerateTestCasesForSut(Any.InternetDomainCountryCodeTopLevelDomain)
27+
GenerateTestCasesForSut(Any.Internet.DomainCountryCodeTopLevelDomain)
2828
},
2929
new object[]
30-
{new Words(FromDictionary.InternetDomainName), GenerateTestCasesForSut(Any.InternetDomainName)},
30+
{new Words(FromDictionary.InternetDomainName), GenerateTestCasesForSut(Any.Internet.DomainName)},
3131
new object[]
3232
{
3333
new Words(FromDictionary.InternetDomainTopLevel),
34-
GenerateTestCasesForSut(Any.InternetDomainTopLevel)
34+
GenerateTestCasesForSut(Any.Internet.DomainTopLevel)
3535
},
3636
new object[]
37-
{new Words(FromDictionary.InternetUrl), GenerateTestCasesForSut(Any.InternetUrl)}
37+
{new Words(FromDictionary.InternetUrl), GenerateTestCasesForSut(Any.Internet.Url)}
3838
};
3939
}
4040
}

TestStack.Dossier.Tests/EquivalenceClasses/PersonEquivalenceClassesTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public void WhenGettingUniqueEmail_ThenReturnUniqueEmailsAcrossFixtureInstances(
2525
var generatedValues = new List<string>();
2626
var any2 = new AnonymousValueFixture();
2727

28-
any2.ResetUniqueEmailAddressSource();
28+
PersonEquivalenceExtensions.InitializeUniqueEmailAddressSource();
2929
generatedValues.Add(any2.UniqueEmailAddress());
3030
for (var i = 0; i < source.Data.Count - 1; i++)
3131
{

TestStack.Dossier.Tests/EquivalenceClasses/PersonEquivalenceTests.cs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,11 @@ public void WhenGettingUniqueEmail_ThenReturnUniqueEmailsAcrossFixtureInstances(
2424
var generatedValues = new List<string>();
2525
var any2 = new AnonymousValueFixture();
2626

27-
any2.ResetUniqueEmailAddressSource();
28-
generatedValues.Add(any2.PersonUniqueEmailAddress());
27+
PersonEquivalenceExtensions.InitializeUniqueEmailAddressSource();
28+
generatedValues.Add(any2.Person.UniqueEmailAddress());
2929
for (var i = 0; i < source.Data.Count - 1; i++)
3030
{
31-
generatedValues.Add(Any.PersonUniqueEmailAddress());
31+
generatedValues.Add(Any.Person.UniqueEmailAddress());
3232
}
3333

3434
generatedValues.Distinct().Count()
@@ -43,17 +43,17 @@ protected override List<object[]> GetData()
4343
return new List<object[]>
4444
{
4545
new object[]
46-
{new Words(FromDictionary.PersonEmailAddress), GenerateTestCasesForSut(Any.PersonEmailAddress)},
47-
new object[] {new Words(FromDictionary.PersonLanguage), GenerateTestCasesForSut(Any.PersonLanguage)},
46+
{new Words(FromDictionary.PersonEmailAddress), GenerateTestCasesForSut(Any.Person.EmailAddress)},
47+
new object[] {new Words(FromDictionary.PersonLanguage), GenerateTestCasesForSut(Any.Person.Language)},
4848
new object[]
49-
{new Words(FromDictionary.PersonNameFirstFemale), GenerateTestCasesForSut(Any.PersonNameFirstFemale)},
50-
new object[] {new Words(FromDictionary.PersonNameFirst), GenerateTestCasesForSut(Any.PersonNameFirst)},
51-
new object[] {new Words(FromDictionary.PersonNameFull), GenerateTestCasesForSut(Any.PersonNameFull)},
52-
new object[] {new Words(FromDictionary.PersonNameLast), GenerateTestCasesForSut(Any.PersonNameLast)},
49+
{new Words(FromDictionary.PersonNameFirstFemale), GenerateTestCasesForSut(Any.Person.NameFirstFemale)},
50+
new object[] {new Words(FromDictionary.PersonNameFirst), GenerateTestCasesForSut(Any.Person.NameFirst)},
51+
new object[] {new Words(FromDictionary.PersonNameFull), GenerateTestCasesForSut(Any.Person.NameFull)},
52+
new object[] {new Words(FromDictionary.PersonNameLast), GenerateTestCasesForSut(Any.Person.NameLast)},
5353
new object[]
54-
{new Words(FromDictionary.PersonNameFirstMale), GenerateTestCasesForSut(Any.PersonNameFirstMale)},
55-
new object[] {new Words(FromDictionary.PersonNameSuffix), GenerateTestCasesForSut(Any.PersonNameSuffix)},
56-
new object[] {new Words(FromDictionary.PersonNameTitle), GenerateTestCasesForSut(Any.PersonNameTitle)},
54+
{new Words(FromDictionary.PersonNameFirstMale), GenerateTestCasesForSut(Any.Person.NameFirstMale)},
55+
new object[] {new Words(FromDictionary.PersonNameSuffix), GenerateTestCasesForSut(Any.Person.NameSuffix)},
56+
new object[] {new Words(FromDictionary.PersonNameTitle), GenerateTestCasesForSut(Any.Person.NameTitle)},
5757
};
5858
}
5959
}

TestStack.Dossier.Tests/PublicApiApproval/PublicApiApproverTests.GivenDossierAssembly_WhenPublicApiChecked_ShouldHaveNoChanges.approved.txt

Lines changed: 45 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,12 @@ namespace TestStack.Dossier
5757
public TestStack.Dossier.FinanceEquivalence Finance { get; }
5858
public Ploeh.AutoFixture.Fixture Fixture { get; }
5959
public TestStack.Dossier.FrequencyEquivalence Frequency { get; }
60+
public TestStack.Dossier.GeoEquivalence Geography { get; }
6061
public static System.Collections.Generic.ICollection<TestStack.Dossier.IAnonymousValueSupplier> GlobalValueSuppliers { get; }
62+
public TestStack.Dossier.IdentifierEquivalence Identifier { get; }
63+
public TestStack.Dossier.InternetEquivalence Internet { get; }
6164
public System.Collections.Generic.ICollection<TestStack.Dossier.IAnonymousValueSupplier> LocalValueSuppliers { get; }
65+
public TestStack.Dossier.PersonEquivalence Person { get; }
6266
public Ploeh.AutoFixture.RegularExpressionGenerator RegexGenerator { get; }
6367
public T Get<TObject, T>(System.Linq.Expressions.Expression<System.Func<TObject, T>> property) { }
6468
public object Get(System.Type type, string propertyName) { }
@@ -104,34 +108,37 @@ namespace TestStack.Dossier
104108
public FrequencyEquivalence(TestStack.Dossier.AnonymousValueFixture fixture) { }
105109
public string Frequency() { }
106110
}
107-
public class static GeoEquivalence
111+
public class GeoEquivalence
108112
{
109-
public static string GeoContinent(this TestStack.Dossier.AnonymousValueFixture fixture) { }
110-
public static string GeoCountry(this TestStack.Dossier.AnonymousValueFixture fixture) { }
111-
public static string GeoCountryCode(this TestStack.Dossier.AnonymousValueFixture fixture) { }
112-
public static string GeoLatitude(this TestStack.Dossier.AnonymousValueFixture fixture) { }
113-
public static string GeoLongitude(this TestStack.Dossier.AnonymousValueFixture fixture) { }
113+
public GeoEquivalence(TestStack.Dossier.AnonymousValueFixture fixture) { }
114+
public string Continent() { }
115+
public string Country() { }
116+
public string CountryCode() { }
117+
public string Latitude() { }
118+
public string Longitude() { }
114119
}
115120
public interface IAnonymousValueSupplier
116121
{
117122
bool CanSupplyValue(System.Type type, string propertyName);
118123
object GenerateAnonymousValue(TestStack.Dossier.AnonymousValueFixture any, System.Type type, string propertyName);
119124
}
120-
public class static IdentifierEquivalence
125+
public class IdentifierEquivalence
121126
{
122-
public static string IdentifierBitcoinAddress(this TestStack.Dossier.AnonymousValueFixture fixture) { }
123-
public static string IdentifierIban(this TestStack.Dossier.AnonymousValueFixture fixture) { }
124-
public static string IdentifierIpAddressV4(this TestStack.Dossier.AnonymousValueFixture fixture) { }
125-
public static string IdentifierIpAddressV6(this TestStack.Dossier.AnonymousValueFixture fixture) { }
126-
public static string IdentifierIsbn(this TestStack.Dossier.AnonymousValueFixture fixture) { }
127-
public static string IdentifierMacAddress(this TestStack.Dossier.AnonymousValueFixture fixture) { }
127+
public IdentifierEquivalence(TestStack.Dossier.AnonymousValueFixture fixture) { }
128+
public string BitcoinAddress() { }
129+
public string Iban() { }
130+
public string IpAddressV4() { }
131+
public string IpAddressV6() { }
132+
public string Isbn() { }
133+
public string MacAddress() { }
128134
}
129-
public class static InternetEquivalence
135+
public class InternetEquivalence
130136
{
131-
public static string InternetDomainCountryCodeTopLevelDomain(this TestStack.Dossier.AnonymousValueFixture fixture) { }
132-
public static string InternetDomainName(this TestStack.Dossier.AnonymousValueFixture fixture) { }
133-
public static string InternetDomainTopLevel(this TestStack.Dossier.AnonymousValueFixture fixture) { }
134-
public static string InternetUrl(this TestStack.Dossier.AnonymousValueFixture fixture) { }
137+
public InternetEquivalence(TestStack.Dossier.AnonymousValueFixture fixture) { }
138+
public string DomainCountryCodeTopLevelDomain() { }
139+
public string DomainName() { }
140+
public string DomainTopLevel() { }
141+
public string Url() { }
135142
}
136143
public interface ITestDataBuilder<out TObject>
137144
where out TObject : class
@@ -142,21 +149,25 @@ namespace TestStack.Dossier
142149
{
143150
public static string LoremIpsum(this TestStack.Dossier.AnonymousValueFixture fixture) { }
144151
}
145-
public class static PersonEquivalence
146-
{
147-
public static string PersonEmailAddress(this TestStack.Dossier.AnonymousValueFixture fixture) { }
148-
public static string PersonLanguage(this TestStack.Dossier.AnonymousValueFixture fixture) { }
149-
public static string PersonNameFirst(this TestStack.Dossier.AnonymousValueFixture fixture) { }
150-
public static string PersonNameFirstFemale(this TestStack.Dossier.AnonymousValueFixture fixture) { }
151-
public static string PersonNameFirstMale(this TestStack.Dossier.AnonymousValueFixture fixture) { }
152-
public static string PersonNameFull(this TestStack.Dossier.AnonymousValueFixture fixture) { }
153-
public static string PersonNameLast(this TestStack.Dossier.AnonymousValueFixture fixture) { }
154-
public static string PersonNameSuffix(this TestStack.Dossier.AnonymousValueFixture fixture) { }
155-
public static string PersonNameTitle(this TestStack.Dossier.AnonymousValueFixture fixture) { }
156-
public static string PersonPassword(this TestStack.Dossier.AnonymousValueFixture fixture) { }
157-
public static string PersonRace(this TestStack.Dossier.AnonymousValueFixture fixture) { }
158-
public static string PersonUniqueEmailAddress(this TestStack.Dossier.AnonymousValueFixture fixture) { }
159-
public static string PersonUsername(this TestStack.Dossier.AnonymousValueFixture fixture) { }
152+
public class PersonEquivalence
153+
{
154+
public PersonEquivalence(TestStack.Dossier.AnonymousValueFixture fixture) { }
155+
public string EmailAddress() { }
156+
public string Language() { }
157+
public string NameFirst() { }
158+
public string NameFirstFemale() { }
159+
public string NameFirstMale() { }
160+
public string NameFull() { }
161+
public string NameLast() { }
162+
public string NameSuffix() { }
163+
public string NameTitle() { }
164+
public string Password() { }
165+
public string Race() { }
166+
public string Username() { }
167+
}
168+
public class static PersonEquivalenceExtensions
169+
{
170+
public static string UniqueEmailAddress(this TestStack.Dossier.PersonEquivalence personEquivalence) { }
160171
}
161172
public class ProxyBuilder<T>
162173
where T : class
@@ -481,7 +492,7 @@ namespace TestStack.Dossier.EquivalenceClasses.Geo
481492
namespace TestStack.Dossier.EquivalenceClasses.Person
482493
{
483494

484-
public class static NameEquivalenceClasses
495+
public class static PersonEquivalenceClasses
485496
{
486497
public static string EmailAddress(this TestStack.Dossier.AnonymousValueFixture fixture) { }
487498
public static string FemaleFirstName(this TestStack.Dossier.AnonymousValueFixture fixture) { }

TestStack.Dossier/EquivalenceClasses/Equivalence.cs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,5 +61,37 @@ public FrequencyEquivalence Frequency
6161
{
6262
get { return new FrequencyEquivalence(this); }
6363
}
64+
65+
/// <summary>
66+
/// Equivalence classes for generating anonymous geography-related values.
67+
/// </summary>
68+
public GeoEquivalence Geography
69+
{
70+
get { return new GeoEquivalence(this); }
71+
}
72+
73+
/// <summary>
74+
/// Equivalence classes for generating anonymous identifier-related values.
75+
/// </summary>
76+
public IdentifierEquivalence Identifier
77+
{
78+
get { return new IdentifierEquivalence(this); }
79+
}
80+
81+
/// <summary>
82+
/// Equivalence classes for generating anonymous internet-related values.
83+
/// </summary>
84+
public InternetEquivalence Internet
85+
{
86+
get { return new InternetEquivalence(this); }
87+
}
88+
89+
/// <summary>
90+
/// Equivalence classes for generating anonymous person-related values.
91+
/// </summary>
92+
public PersonEquivalence Person
93+
{
94+
get { return new PersonEquivalence(this); }
95+
}
6496
}
6597
}

TestStack.Dossier/EquivalenceClasses/Geo/GeographyEquivalenceClassescs.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public static class GeographyEquivalenceClassescs
1212
/// <returns>The generated continent</returns>
1313
public static string Continent(this AnonymousValueFixture fixture)
1414
{
15-
return fixture.GeoContinent();
15+
return fixture.Geography.Continent();
1616
}
1717

1818
/// <summary>
@@ -22,7 +22,7 @@ public static string Continent(this AnonymousValueFixture fixture)
2222
/// <returns>The generated country</returns>
2323
public static string Country(this AnonymousValueFixture fixture)
2424
{
25-
return fixture.GeoCountry();
25+
return fixture.Geography.Country();
2626
}
2727

2828
/// <summary>
@@ -32,7 +32,7 @@ public static string Country(this AnonymousValueFixture fixture)
3232
/// <returns>The generated country code</returns>
3333
public static string CountryCode(this AnonymousValueFixture fixture)
3434
{
35-
return fixture.GeoCountryCode();
35+
return fixture.Geography.CountryCode();
3636
}
3737

3838

@@ -43,7 +43,7 @@ public static string CountryCode(this AnonymousValueFixture fixture)
4343
/// <returns>The generated latitude</returns>
4444
public static string Latitude(this AnonymousValueFixture fixture)
4545
{
46-
return fixture.GeoLatitude();
46+
return fixture.Geography.Latitude();
4747
}
4848

4949
/// <summary>
@@ -53,7 +53,7 @@ public static string Latitude(this AnonymousValueFixture fixture)
5353
/// <returns>The generated longitude</returns>
5454
public static string Longitude(this AnonymousValueFixture fixture)
5555
{
56-
return fixture.GeoLongitude();
56+
return fixture.Geography.Longitude();
5757
}
5858
}
5959
}

0 commit comments

Comments
 (0)