From b2bca5f75a4affa5fb2ba7ab4d2a53d0b552c744 Mon Sep 17 00:00:00 2001 From: Michael Whelan Date: Thu, 11 Feb 2016 17:16:41 +0000 Subject: [PATCH 1/5] Started alternate API for dictionaries --- .../AddressAusEquivalenceTests.cs | 16 ++--- .../AddressUkEquivalenceTests.cs | 14 ++--- .../AddressUsEquivalenceTests.cs | 18 +++--- .../ColourEquivalenceTests.cs | 4 +- .../CompanyEquivalenceTests.cs | 8 +-- .../FinanceEquivalenceTests.cs | 8 +-- TestStack.Dossier/Builder.cs | 1 - .../AddressAusEquivalence.cs | 56 ++++++++--------- .../AddressUkEquivalence.cs | 51 ++++++++-------- .../AddressUsEquivalence.cs | 60 ++++++++++--------- .../EquivalenceClasses/ColourEquivalence.cs | 25 +++++--- .../EquivalenceClasses/CompanyEquivalence.cs | 36 ++++++----- .../EquivalenceClasses/Equivalence.cs | 57 ++++++++++++++++++ .../EquivalenceClasses/FinanceEquivalence.cs | 31 ++++++---- .../FrequencyEquivalence.cs | 21 +++++-- TestStack.Dossier/TestStack.Dossier.csproj | 1 + 16 files changed, 253 insertions(+), 154 deletions(-) create mode 100644 TestStack.Dossier/EquivalenceClasses/Equivalence.cs diff --git a/TestStack.Dossier.Tests/EquivalenceClasses/AddressAusEquivalenceTests.cs b/TestStack.Dossier.Tests/EquivalenceClasses/AddressAusEquivalenceTests.cs index 30843a6..92f345e 100644 --- a/TestStack.Dossier.Tests/EquivalenceClasses/AddressAusEquivalenceTests.cs +++ b/TestStack.Dossier.Tests/EquivalenceClasses/AddressAusEquivalenceTests.cs @@ -22,24 +22,24 @@ protected override List GetData() return new List { new object[] - {new Words(FromDictionary.AddressAusCity), GenerateTestCasesForSut(Any.AddressAusCity)}, + {new Words(FromDictionary.AddressAusCity), GenerateTestCasesForSut(Any.AddressAus().City)}, new object[] - {new Words(FromDictionary.AddressAusCompany), GenerateTestCasesForSut(Any.AddressAusCompany)}, + {new Words(FromDictionary.AddressAusCompany), GenerateTestCasesForSut(Any.AddressAus().Company)}, new object[] - {new Words(FromDictionary.AddressAusPhone), GenerateTestCasesForSut(Any.AddressAusPhone)}, + {new Words(FromDictionary.AddressAusPhone), GenerateTestCasesForSut(Any.AddressAus().Phone)}, new object[] - {new Words(FromDictionary.AddressAusPostCode), GenerateTestCasesForSut(Any.AddressAusPostCode)}, + {new Words(FromDictionary.AddressAusPostCode), GenerateTestCasesForSut(Any.AddressAus().PostCode)}, new object[] - {new Words(FromDictionary.AddressAusState), GenerateTestCasesForSut(Any.AddressAusState)}, + {new Words(FromDictionary.AddressAusState), GenerateTestCasesForSut(Any.AddressAus().State)}, new object[] { new Words(FromDictionary.AddressAusStateAbbreviation), - GenerateTestCasesForSut(Any.AddressAusStateAbbreviation) + GenerateTestCasesForSut(Any.AddressAus().StateAbbreviation) }, new object[] - {new Words(FromDictionary.AddressAusStreet), GenerateTestCasesForSut(Any.AddressAusStreet)}, + {new Words(FromDictionary.AddressAusStreet), GenerateTestCasesForSut(Any.AddressAus().Street)}, new object[] - {new Words(FromDictionary.AddressAusWebsite), GenerateTestCasesForSut(Any.AddressAusWebsite)}, + {new Words(FromDictionary.AddressAusWebsite), GenerateTestCasesForSut(Any.AddressAus().Website)}, }; } } diff --git a/TestStack.Dossier.Tests/EquivalenceClasses/AddressUkEquivalenceTests.cs b/TestStack.Dossier.Tests/EquivalenceClasses/AddressUkEquivalenceTests.cs index 36d1ce2..edeab8c 100644 --- a/TestStack.Dossier.Tests/EquivalenceClasses/AddressUkEquivalenceTests.cs +++ b/TestStack.Dossier.Tests/EquivalenceClasses/AddressUkEquivalenceTests.cs @@ -22,19 +22,19 @@ protected override List GetData() return new List { new object[] - {new Words(FromDictionary.AddressUkCounty), GenerateTestCasesForSut(Any.AddressUkCounty)}, + {new Words(FromDictionary.AddressUkCounty), GenerateTestCasesForSut(Any.AddressUk().County)}, new object[] - {new Words(FromDictionary.AddressUkCity), GenerateTestCasesForSut(Any.AddressUkCity)}, + {new Words(FromDictionary.AddressUkCity), GenerateTestCasesForSut(Any.AddressUk().City)}, new object[] - {new Words(FromDictionary.AddressUkCompany), GenerateTestCasesForSut(Any.AddressUkCompany)}, + {new Words(FromDictionary.AddressUkCompany), GenerateTestCasesForSut(Any.AddressUk().Company)}, new object[] - {new Words(FromDictionary.AddressUkPhone), GenerateTestCasesForSut(Any.AddressUkPhone)}, + {new Words(FromDictionary.AddressUkPhone), GenerateTestCasesForSut(Any.AddressUk().Phone)}, new object[] - {new Words(FromDictionary.AddressUkPostCode), GenerateTestCasesForSut(Any.AddressUkPostCode)}, + {new Words(FromDictionary.AddressUkPostCode), GenerateTestCasesForSut(Any.AddressUk().PostCode)}, new object[] - {new Words(FromDictionary.AddressUkStreet), GenerateTestCasesForSut(Any.AddressUkStreet)}, + {new Words(FromDictionary.AddressUkStreet), GenerateTestCasesForSut(Any.AddressUk().Street)}, new object[] - {new Words(FromDictionary.AddressUkWebsite), GenerateTestCasesForSut(Any.AddressUkWebsite)}, + {new Words(FromDictionary.AddressUkWebsite), GenerateTestCasesForSut(Any.AddressUk().Website)}, }; } } diff --git a/TestStack.Dossier.Tests/EquivalenceClasses/AddressUsEquivalenceTests.cs b/TestStack.Dossier.Tests/EquivalenceClasses/AddressUsEquivalenceTests.cs index 7b731b6..5f32c72 100644 --- a/TestStack.Dossier.Tests/EquivalenceClasses/AddressUsEquivalenceTests.cs +++ b/TestStack.Dossier.Tests/EquivalenceClasses/AddressUsEquivalenceTests.cs @@ -22,26 +22,26 @@ protected override List GetData() return new List { new object[] - {new Words(FromDictionary.AddressUsCity), GenerateTestCasesForSut(Any.AddressUsCity)}, + {new Words(FromDictionary.AddressUsCity), GenerateTestCasesForSut(Any.AddressUs().City)}, new object[] - {new Words(FromDictionary.AddressUsCompany), GenerateTestCasesForSut(Any.AddressUsCompany)}, + {new Words(FromDictionary.AddressUsCompany), GenerateTestCasesForSut(Any.AddressUs().Company)}, new object[] - {new Words(FromDictionary.AddressUsPhone), GenerateTestCasesForSut(Any.AddressUsPhone)}, + {new Words(FromDictionary.AddressUsPhone), GenerateTestCasesForSut(Any.AddressUs().Phone)}, new object[] - {new Words(FromDictionary.AddressUsSocialSecurityNumber), GenerateTestCasesForSut(Any.AddressUsSocialSecurityNumber)}, + {new Words(FromDictionary.AddressUsSocialSecurityNumber), GenerateTestCasesForSut(Any.AddressUs().SocialSecurityNumber)}, new object[] - {new Words(FromDictionary.AddressUsState), GenerateTestCasesForSut(Any.AddressUsState)}, + {new Words(FromDictionary.AddressUsState), GenerateTestCasesForSut(Any.AddressUs().State)}, new object[] { new Words(FromDictionary.AddressUsStateAbbreviation), - GenerateTestCasesForSut(Any.AddressUsStateAbbreviation) + GenerateTestCasesForSut(Any.AddressUs().StateAbbreviation) }, new object[] - {new Words(FromDictionary.AddressUsStreet), GenerateTestCasesForSut(Any.AddressUsStreet)}, + {new Words(FromDictionary.AddressUsStreet), GenerateTestCasesForSut(Any.AddressUs().Street)}, new object[] - {new Words(FromDictionary.AddressUsWebsite), GenerateTestCasesForSut(Any.AddressUsWebsite)}, + {new Words(FromDictionary.AddressUsWebsite), GenerateTestCasesForSut(Any.AddressUs().Website)}, new object[] - {new Words(FromDictionary.AddressUsZipCode), GenerateTestCasesForSut(Any.AddressUsZipCode)} + {new Words(FromDictionary.AddressUsZipCode), GenerateTestCasesForSut(Any.AddressUs().ZipCode)} }; } } diff --git a/TestStack.Dossier.Tests/EquivalenceClasses/ColourEquivalenceTests.cs b/TestStack.Dossier.Tests/EquivalenceClasses/ColourEquivalenceTests.cs index 09db335..68ad29b 100644 --- a/TestStack.Dossier.Tests/EquivalenceClasses/ColourEquivalenceTests.cs +++ b/TestStack.Dossier.Tests/EquivalenceClasses/ColourEquivalenceTests.cs @@ -22,9 +22,9 @@ protected override List GetData() return new List { new object[] - {new Words(FromDictionary.ColourHex), GenerateTestCasesForSut(Any.ColourHex)}, + {new Words(FromDictionary.ColourHex), GenerateTestCasesForSut(Any.Colour().Hex)}, new object[] - {new Words(FromDictionary.ColourName), GenerateTestCasesForSut(Any.ColourName)} + {new Words(FromDictionary.ColourName), GenerateTestCasesForSut(Any.Colour().Name)} }; } } diff --git a/TestStack.Dossier.Tests/EquivalenceClasses/CompanyEquivalenceTests.cs b/TestStack.Dossier.Tests/EquivalenceClasses/CompanyEquivalenceTests.cs index c721ee8..21d91c6 100644 --- a/TestStack.Dossier.Tests/EquivalenceClasses/CompanyEquivalenceTests.cs +++ b/TestStack.Dossier.Tests/EquivalenceClasses/CompanyEquivalenceTests.cs @@ -22,13 +22,13 @@ protected override List GetData() return new List { new object[] - {new Words(FromDictionary.CompanyName), GenerateTestCasesForSut(Any.CompanyName)}, + {new Words(FromDictionary.CompanyName), GenerateTestCasesForSut(Any.Company().Name)}, new object[] - {new Words(FromDictionary.CompanyIndustry), GenerateTestCasesForSut(Any.CompanyIndustry)}, + {new Words(FromDictionary.CompanyIndustry), GenerateTestCasesForSut(Any.Company().Industry)}, new object[] - {new Words(FromDictionary.CompanyJobTitle), GenerateTestCasesForSut(Any.CompanyJobTitle)}, + {new Words(FromDictionary.CompanyJobTitle), GenerateTestCasesForSut(Any.Company().JobTitle)}, new object[] - {new Words(FromDictionary.CompanyLocation), GenerateTestCasesForSut(Any.CompanyLocation)} + {new Words(FromDictionary.CompanyLocation), GenerateTestCasesForSut(Any.Company().Location)} }; } } diff --git a/TestStack.Dossier.Tests/EquivalenceClasses/FinanceEquivalenceTests.cs b/TestStack.Dossier.Tests/EquivalenceClasses/FinanceEquivalenceTests.cs index 05caa41..c336ba3 100644 --- a/TestStack.Dossier.Tests/EquivalenceClasses/FinanceEquivalenceTests.cs +++ b/TestStack.Dossier.Tests/EquivalenceClasses/FinanceEquivalenceTests.cs @@ -22,13 +22,13 @@ protected override List GetData() return new List { new object[] - {new Words(FromDictionary.FinanceCreditCardNumber), GenerateTestCasesForSut(Any.FinanceCreditCardNumber)}, + {new Words(FromDictionary.FinanceCreditCardNumber), GenerateTestCasesForSut(Any.Finance().CreditCardNumber)}, new object[] - {new Words(FromDictionary.FinanceCreditCardType), GenerateTestCasesForSut(Any.FinanceCreditCardType)}, + {new Words(FromDictionary.FinanceCreditCardType), GenerateTestCasesForSut(Any.Finance().CreditCardType)}, new object[] - {new Words(FromDictionary.FinanceCurrency), GenerateTestCasesForSut(Any.FinanceCurrency)}, + {new Words(FromDictionary.FinanceCurrency), GenerateTestCasesForSut(Any.Finance().Currency)}, new object[] - {new Words(FromDictionary.FinanceCurrencyCode), GenerateTestCasesForSut(Any.FinanceCurrencyCode)} + {new Words(FromDictionary.FinanceCurrencyCode), GenerateTestCasesForSut(Any.Finance().CurrencyCode)} }; } } diff --git a/TestStack.Dossier/Builder.cs b/TestStack.Dossier/Builder.cs index e4dc321..d201946 100644 --- a/TestStack.Dossier/Builder.cs +++ b/TestStack.Dossier/Builder.cs @@ -1,6 +1,5 @@ using System; using System.Linq.Expressions; -using Ploeh.AutoFixture.Kernel; using TestStack.Dossier.Factories; using TestStack.Dossier.Lists; diff --git a/TestStack.Dossier/EquivalenceClasses/AddressAusEquivalence.cs b/TestStack.Dossier/EquivalenceClasses/AddressAusEquivalence.cs index 048013d..71fbba2 100644 --- a/TestStack.Dossier/EquivalenceClasses/AddressAusEquivalence.cs +++ b/TestStack.Dossier/EquivalenceClasses/AddressAusEquivalence.cs @@ -4,89 +4,91 @@ namespace TestStack.Dossier { /// - /// Extension methods that describe equivalence classes for generating anonymous Australian address-related values. + /// Methods that describe equivalence classes for generating anonymous Australian address-related values. /// - public static class AddressAusEquivalence + public class AddressAusEquivalence { + private readonly AnonymousValueFixture _fixture; + + /// + /// Creates a new with the AnonymousValueFixture from the extension method. + /// + /// The + public AddressAusEquivalence(AnonymousValueFixture fixture) + { + _fixture = fixture; + } + /// /// Generate and return an Australian address city name. /// - /// The fixture to generate a value for. /// The generated value. - public static string AddressAusCity(this AnonymousValueFixture fixture) + public string City() { - return fixture.Words(FromDictionary.AddressAusCity).Next(); + return _fixture.Words(FromDictionary.AddressAusCity).Next(); } /// /// Generate and return an Australian address company name. /// - /// The fixture to generate a value for. /// The generated value. - public static string AddressAusCompany(this AnonymousValueFixture fixture) + public string Company() { - return fixture.Words(FromDictionary.AddressAusCompany).Next(); + return _fixture.Words(FromDictionary.AddressAusCompany).Next(); } /// /// Generate and return an Australian address phone number. /// - /// The fixture to generate a value for. /// The generated value. - public static string AddressAusPhone(this AnonymousValueFixture fixture) + public string Phone() { - return fixture.Words(FromDictionary.AddressAusPhone).Next(); + return _fixture.Words(FromDictionary.AddressAusPhone).Next(); } /// /// Generate and return an Australian address post code. /// - /// The fixture to generate a value for. /// The generated value. - public static string AddressAusPostCode(this AnonymousValueFixture fixture) + public string PostCode() { - return fixture.Words(FromDictionary.AddressAusPostCode).Next(); + return _fixture.Words(FromDictionary.AddressAusPostCode).Next(); } /// /// Generate and return an Australian address state name. /// - /// The fixture to generate a value for. /// The generated value. - public static string AddressAusState(this AnonymousValueFixture fixture) + public string State() { - return fixture.Words(FromDictionary.AddressAusState).Next(); + return _fixture.Words(FromDictionary.AddressAusState).Next(); } /// /// Generate and return an Australian address state abbreviation. /// - /// The fixture to generate a value for. /// The generated value. - public static string AddressAusStateAbbreviation(this AnonymousValueFixture fixture) + public string StateAbbreviation() { - return fixture.Words(FromDictionary.AddressAusStateAbbreviation).Next(); + return _fixture.Words(FromDictionary.AddressAusStateAbbreviation).Next(); } /// /// Generate and return an Australian address street name. /// - /// The fixture to generate a value for. /// The generated value. - public static string AddressAusStreet(this AnonymousValueFixture fixture) + public string Street() { - return fixture.Words(FromDictionary.AddressAusStreet).Next(); + return _fixture.Words(FromDictionary.AddressAusStreet).Next(); } /// /// Generate and return an Australian address website name. /// - /// The fixture to generate a value for. /// The generated value. - public static string AddressAusWebsite(this AnonymousValueFixture fixture) + public string Website() { - return fixture.Words(FromDictionary.AddressAusWebsite).Next(); + return _fixture.Words(FromDictionary.AddressAusWebsite).Next(); } - } } \ No newline at end of file diff --git a/TestStack.Dossier/EquivalenceClasses/AddressUkEquivalence.cs b/TestStack.Dossier/EquivalenceClasses/AddressUkEquivalence.cs index 8c3bdea..fdafe27 100644 --- a/TestStack.Dossier/EquivalenceClasses/AddressUkEquivalence.cs +++ b/TestStack.Dossier/EquivalenceClasses/AddressUkEquivalence.cs @@ -4,79 +4,82 @@ namespace TestStack.Dossier { /// - /// Extension methods that describe equivalence classes for generating anonymous UK address-related values. + /// Methods that describe equivalence classes for generating anonymous UK address-related values. /// - public static class AddressUkEquivalence + public class AddressUkEquivalence { + private readonly AnonymousValueFixture _fixture; + + /// + /// Creates a new with the AnonymousValueFixture from the extension method. + /// + /// The + public AddressUkEquivalence(AnonymousValueFixture fixture) + { + _fixture = fixture; + } + /// /// Generate and return a UK address city name. /// - /// The fixture to generate a value for. /// The generated value. - public static string AddressUkCity(this AnonymousValueFixture fixture) + public string City() { - return fixture.Words(FromDictionary.AddressUkCity).Next(); + return _fixture.Words(FromDictionary.AddressUkCity).Next(); } /// /// Generate and return a UK address company name. /// - /// The fixture to generate a value for. /// The generated value. - public static string AddressUkCompany(this AnonymousValueFixture fixture) + public string Company() { - return fixture.Words(FromDictionary.AddressUkCompany).Next(); + return _fixture.Words(FromDictionary.AddressUkCompany).Next(); } /// /// Generate and return a UK address county name. /// - /// The fixture to generate a value for. /// The generated value. - public static string AddressUkCounty(this AnonymousValueFixture fixture) + public string County() { - return fixture.Words(FromDictionary.AddressUkCounty).Next(); + return _fixture.Words(FromDictionary.AddressUkCounty).Next(); } /// /// Generate and return a UK address phone number. /// - /// The fixture to generate a value for. /// The generated value. - public static string AddressUkPhone(this AnonymousValueFixture fixture) + public string Phone() { - return fixture.Words(FromDictionary.AddressUkPhone).Next(); + return _fixture.Words(FromDictionary.AddressUkPhone).Next(); } /// /// Generate and return a UK address post code. /// - /// The fixture to generate a value for. /// The generated value. - public static string AddressUkPostCode(this AnonymousValueFixture fixture) + public string PostCode() { - return fixture.Words(FromDictionary.AddressUkPostCode).Next(); + return _fixture.Words(FromDictionary.AddressUkPostCode).Next(); } /// /// Generate and return a UK address street name. /// - /// The fixture to generate a value for. /// The generated value. - public static string AddressUkStreet(this AnonymousValueFixture fixture) + public string Street() { - return fixture.Words(FromDictionary.AddressUkStreet).Next(); + return _fixture.Words(FromDictionary.AddressUkStreet).Next(); } /// /// Generate and return a UK address website name. /// - /// The fixture to generate a value for. /// The generated value. - public static string AddressUkWebsite(this AnonymousValueFixture fixture) + public string Website() { - return fixture.Words(FromDictionary.AddressUkWebsite).Next(); + return _fixture.Words(FromDictionary.AddressUkWebsite).Next(); } - } } \ No newline at end of file diff --git a/TestStack.Dossier/EquivalenceClasses/AddressUsEquivalence.cs b/TestStack.Dossier/EquivalenceClasses/AddressUsEquivalence.cs index 21feb59..d6eff0a 100644 --- a/TestStack.Dossier/EquivalenceClasses/AddressUsEquivalence.cs +++ b/TestStack.Dossier/EquivalenceClasses/AddressUsEquivalence.cs @@ -4,98 +4,100 @@ namespace TestStack.Dossier { /// - /// Extension methods that describe equivalence classes for generating anonymous US adress-related values. + /// Methods that describe equivalence classes for generating anonymous US adress-related values. /// - public static class AddressUsEquivalence + public class AddressUsEquivalence { + private readonly AnonymousValueFixture _fixture; + + /// + /// Creates a new with the AnonymousValueFixture from the extension method. + /// + /// The + public AddressUsEquivalence(AnonymousValueFixture fixture) + { + _fixture = fixture; + } + /// /// Generate and return a US address city name. /// - /// The fixture to generate a value for. /// The generated value. - public static string AddressUsCity(this AnonymousValueFixture fixture) + public string City() { - return fixture.Words(FromDictionary.AddressUsCity).Next(); + return _fixture.Words(FromDictionary.AddressUsCity).Next(); } /// /// Generate and return a US address company name. /// - /// The fixture to generate a value for. /// The generated value. - public static string AddressUsCompany(this AnonymousValueFixture fixture) + public string Company() { - return fixture.Words(FromDictionary.AddressUsCompany).Next(); + return _fixture.Words(FromDictionary.AddressUsCompany).Next(); } /// /// Generate and return a US address phone number. /// - /// The fixture to generate a value for. /// The generated value. - public static string AddressUsPhone(this AnonymousValueFixture fixture) + public string Phone() { - return fixture.Words(FromDictionary.AddressUsPhone).Next(); + return _fixture.Words(FromDictionary.AddressUsPhone).Next(); } /// /// Generate and return a US address social security number. /// - /// The fixture to generate a value for. /// The generated value. - public static string AddressUsSocialSecurityNumber(this AnonymousValueFixture fixture) + public string SocialSecurityNumber() { - return fixture.Words(FromDictionary.AddressUsSocialSecurityNumber).Next(); + return _fixture.Words(FromDictionary.AddressUsSocialSecurityNumber).Next(); } /// /// Generate and return a US address state name. /// - /// The fixture to generate a value for. /// The generated value. - public static string AddressUsState(this AnonymousValueFixture fixture) + public string State() { - return fixture.Words(FromDictionary.AddressUsState).Next(); + return _fixture.Words(FromDictionary.AddressUsState).Next(); } /// /// Generate and return a US address state abbreviation. /// - /// The fixture to generate a value for. /// The generated value. - public static string AddressUsStateAbbreviation(this AnonymousValueFixture fixture) + public string StateAbbreviation() { - return fixture.Words(FromDictionary.AddressUsStateAbbreviation).Next(); + return _fixture.Words(FromDictionary.AddressUsStateAbbreviation).Next(); } /// /// Generate and return a US address street name. /// - /// The fixture to generate a value for. /// The generated value. - public static string AddressUsStreet(this AnonymousValueFixture fixture) + public string Street() { - return fixture.Words(FromDictionary.AddressUsStreet).Next(); + return _fixture.Words(FromDictionary.AddressUsStreet).Next(); } /// /// Generate and return a US address website name. /// - /// The fixture to generate a value for. /// The generated value. - public static string AddressUsWebsite(this AnonymousValueFixture fixture) + public string Website() { - return fixture.Words(FromDictionary.AddressUsWebsite).Next(); + return _fixture.Words(FromDictionary.AddressUsWebsite).Next(); } /// /// Generate and return a US address zip code. /// - /// The fixture to generate a value for. /// The generated value. - public static string AddressUsZipCode(this AnonymousValueFixture fixture) + public string ZipCode() { - return fixture.Words(FromDictionary.AddressUsZipCode).Next(); + return _fixture.Words(FromDictionary.AddressUsZipCode).Next(); } } } \ No newline at end of file diff --git a/TestStack.Dossier/EquivalenceClasses/ColourEquivalence.cs b/TestStack.Dossier/EquivalenceClasses/ColourEquivalence.cs index 933481c..4ce3774 100644 --- a/TestStack.Dossier/EquivalenceClasses/ColourEquivalence.cs +++ b/TestStack.Dossier/EquivalenceClasses/ColourEquivalence.cs @@ -4,28 +4,37 @@ namespace TestStack.Dossier { /// - /// Extension methods that describe equivalence classes for generating anonymous Colour-related values. + /// Methods that describe equivalence classes for generating anonymous Colour-related values. /// - public static class ColourEquivalence + public class ColourEquivalence { + private readonly AnonymousValueFixture _fixture; + + /// + /// Creates a new with the AnonymousValueFixture from the extension method. + /// + /// The + public ColourEquivalence(AnonymousValueFixture fixture) + { + _fixture = fixture; + } + /// /// Generate and return a Colour Hex value. /// - /// The fixture to generate a value for. /// The generated value. - public static string ColourHex(this AnonymousValueFixture fixture) + public string Hex() { - return fixture.Words(FromDictionary.ColourHex).Next(); + return _fixture.Words(FromDictionary.ColourHex).Next(); } /// /// Generate and return a Colour name. /// - /// The fixture to generate a value for. /// The generated value. - public static string ColourName(this AnonymousValueFixture fixture) + public string Name() { - return fixture.Words(FromDictionary.ColourName).Next(); + return _fixture.Words(FromDictionary.ColourName).Next(); } } } \ No newline at end of file diff --git a/TestStack.Dossier/EquivalenceClasses/CompanyEquivalence.cs b/TestStack.Dossier/EquivalenceClasses/CompanyEquivalence.cs index 9038cc9..ad58c6c 100644 --- a/TestStack.Dossier/EquivalenceClasses/CompanyEquivalence.cs +++ b/TestStack.Dossier/EquivalenceClasses/CompanyEquivalence.cs @@ -4,49 +4,55 @@ namespace TestStack.Dossier { /// - /// Extension methods that describe equivalence classes for generating anonymous Company-related values. + /// Methods that describe equivalence classes for generating anonymous Company-related values. /// - public static class CompanyEquivalence + public class CompanyEquivalence { + private readonly AnonymousValueFixture _fixture; + + /// + /// Creates a new with the AnonymousValueFixture from the extension method. + /// + /// The + public CompanyEquivalence(AnonymousValueFixture fixture) + { + _fixture = fixture; + } + /// /// Generate and return a company industry name. /// - /// The fixture to generate a value for. /// The generated value. - public static string CompanyIndustry(this AnonymousValueFixture fixture) + public string Industry() { - return fixture.Words(FromDictionary.CompanyIndustry).Next(); + return _fixture.Words(FromDictionary.CompanyIndustry).Next(); } /// /// Generate and return a company job title. /// - /// The fixture to generate a value for. /// The generated value. - public static string CompanyJobTitle(this AnonymousValueFixture fixture) + public string JobTitle() { - return fixture.Words(FromDictionary.CompanyJobTitle).Next(); + return _fixture.Words(FromDictionary.CompanyJobTitle).Next(); } /// /// Generate and return a company location name. /// - /// The fixture to generate a value for. /// The generated value. - public static string CompanyLocation(this AnonymousValueFixture fixture) + public string Location() { - return fixture.Words(FromDictionary.CompanyLocation).Next(); + return _fixture.Words(FromDictionary.CompanyLocation).Next(); } /// /// Generate and return a company name. /// - /// The fixture to generate a value for. /// The generated value. - public static string CompanyName(this AnonymousValueFixture fixture) + public string Name() { - return fixture.Words(FromDictionary.CompanyName).Next(); + return _fixture.Words(FromDictionary.CompanyName).Next(); } - } } \ No newline at end of file diff --git a/TestStack.Dossier/EquivalenceClasses/Equivalence.cs b/TestStack.Dossier/EquivalenceClasses/Equivalence.cs new file mode 100644 index 0000000..2fe854f --- /dev/null +++ b/TestStack.Dossier/EquivalenceClasses/Equivalence.cs @@ -0,0 +1,57 @@ +// ReSharper disable once CheckNamespace +namespace TestStack.Dossier +{ + /// + /// Extension methods that describe equivalence classes for generating anonymous values. + /// + public static class Equivalence + { + /// + /// Extension methods that describe equivalence classes for generating anonymous Australian address-related values. + /// + public static AddressAusEquivalence AddressAus(this AnonymousValueFixture fixture) + { + return new AddressAusEquivalence(fixture); + } + + /// + /// Extension methods that describe equivalence classes for generating anonymous United Kingdom address-related values. + /// + public static AddressUkEquivalence AddressUk(this AnonymousValueFixture fixture) + { + return new AddressUkEquivalence(fixture); + } + + /// + /// Extension methods that describe equivalence classes for generating anonymous United States address-related values. + /// + public static AddressUsEquivalence AddressUs(this AnonymousValueFixture fixture) + { + return new AddressUsEquivalence(fixture); + } + + /// + /// Extension methods that describe equivalence classes for generating anonymous colour-related values. + /// + public static ColourEquivalence Colour(this AnonymousValueFixture fixture) + { + return new ColourEquivalence(fixture); + } + + /// + /// Extension methods that describe equivalence classes for generating anonymous company-related values. + /// + public static CompanyEquivalence Company(this AnonymousValueFixture fixture) + { + return new CompanyEquivalence(fixture); + } + + /// + /// Extension methods that describe equivalence classes for generating anonymous finance-related values. + /// + public static FinanceEquivalence Finance(this AnonymousValueFixture fixture) + { + return new FinanceEquivalence(fixture); + } + } +} \ No newline at end of file diff --git a/TestStack.Dossier/EquivalenceClasses/FinanceEquivalence.cs b/TestStack.Dossier/EquivalenceClasses/FinanceEquivalence.cs index 954f88c..e3f2364 100644 --- a/TestStack.Dossier/EquivalenceClasses/FinanceEquivalence.cs +++ b/TestStack.Dossier/EquivalenceClasses/FinanceEquivalence.cs @@ -4,18 +4,29 @@ namespace TestStack.Dossier { /// - /// Extension methods that describe equivalence classes for generating anonymous Finance-related values. + /// Methods that describe equivalence classes for generating anonymous Finance-related values. /// - public static class FinanceEquivalence + public class FinanceEquivalence { + private readonly AnonymousValueFixture _fixture; + + /// + /// Creates a new with the AnonymousValueFixture from the extension method. + /// + /// The + public FinanceEquivalence(AnonymousValueFixture fixture) + { + _fixture = fixture; + } + /// /// Generate and return a finance credit card number. /// /// The fixture to generate a value for. /// The generated value. - public static string FinanceCreditCardNumber(this AnonymousValueFixture fixture) + public string CreditCardNumber() { - return fixture.Words(FromDictionary.FinanceCreditCardNumber).Next(); + return _fixture.Words(FromDictionary.FinanceCreditCardNumber).Next(); } /// @@ -23,9 +34,9 @@ public static string FinanceCreditCardNumber(this AnonymousValueFixture fixture) /// /// The fixture to generate a value for. /// The generated value. - public static string FinanceCreditCardType(this AnonymousValueFixture fixture) + public string CreditCardType() { - return fixture.Words(FromDictionary.FinanceCreditCardType).Next(); + return _fixture.Words(FromDictionary.FinanceCreditCardType).Next(); } /// @@ -33,9 +44,9 @@ public static string FinanceCreditCardType(this AnonymousValueFixture fixture) /// /// The fixture to generate a value for. /// The generated value. - public static string FinanceCurrency(this AnonymousValueFixture fixture) + public string Currency() { - return fixture.Words(FromDictionary.FinanceCurrency).Next(); + return _fixture.Words(FromDictionary.FinanceCurrency).Next(); } /// @@ -43,9 +54,9 @@ public static string FinanceCurrency(this AnonymousValueFixture fixture) /// /// The fixture to generate a value for. /// The generated value. - public static string FinanceCurrencyCode(this AnonymousValueFixture fixture) + public string CurrencyCode() { - return fixture.Words(FromDictionary.FinanceCurrencyCode).Next(); + return _fixture.Words(FromDictionary.FinanceCurrencyCode).Next(); } } diff --git a/TestStack.Dossier/EquivalenceClasses/FrequencyEquivalence.cs b/TestStack.Dossier/EquivalenceClasses/FrequencyEquivalence.cs index c4c58cd..61d601e 100644 --- a/TestStack.Dossier/EquivalenceClasses/FrequencyEquivalence.cs +++ b/TestStack.Dossier/EquivalenceClasses/FrequencyEquivalence.cs @@ -4,19 +4,28 @@ namespace TestStack.Dossier { /// - /// Extension methods that describe equivalence classes for generating anonymous Frequency-related values. + /// Methods that describe equivalence classes for generating anonymous Frequency-related values. /// - public static class FrequencyEquivalence + public class FrequencyEquivalence { + private readonly AnonymousValueFixture _fixture; + + /// + /// Creates a new with the AnonymousValueFixture from the extension method. + /// + /// The + public FrequencyEquivalence(AnonymousValueFixture fixture) + { + _fixture = fixture; + } + /// /// Generate and return a frequency. /// - /// The fixture to generate a value for. /// The generated value. - public static string Frequency(this AnonymousValueFixture fixture) + public string Frequency() { - return fixture.Words(FromDictionary.Frequency).Next(); + return _fixture.Words(FromDictionary.Frequency).Next(); } - } } \ No newline at end of file diff --git a/TestStack.Dossier/TestStack.Dossier.csproj b/TestStack.Dossier/TestStack.Dossier.csproj index 3c2d083..f76a197 100644 --- a/TestStack.Dossier/TestStack.Dossier.csproj +++ b/TestStack.Dossier/TestStack.Dossier.csproj @@ -73,6 +73,7 @@ + From 541c7ef3382cd47780a264ac6a50c04d74db28d8 Mon Sep 17 00:00:00 2001 From: Michael Whelan Date: Fri, 12 Feb 2016 10:08:03 +0000 Subject: [PATCH 2/5] For comparison I tried properties on a partial class rather than extension methods --- .../AddressAusEquivalenceTests.cs | 16 +++---- .../AddressUkEquivalenceTests.cs | 14 +++--- .../AddressUsEquivalenceTests.cs | 18 +++---- .../ColourEquivalenceTests.cs | 4 +- .../CompanyEquivalenceTests.cs | 8 ++-- .../FinanceEquivalenceTests.cs | 8 ++-- .../FrequencyEquivalenceTests.cs | 2 +- TestStack.Dossier/AnonymousValueFixture.cs | 4 +- .../EquivalenceClasses/Equivalence.cs | 48 +++++++++++-------- 9 files changed, 64 insertions(+), 58 deletions(-) diff --git a/TestStack.Dossier.Tests/EquivalenceClasses/AddressAusEquivalenceTests.cs b/TestStack.Dossier.Tests/EquivalenceClasses/AddressAusEquivalenceTests.cs index 92f345e..692e899 100644 --- a/TestStack.Dossier.Tests/EquivalenceClasses/AddressAusEquivalenceTests.cs +++ b/TestStack.Dossier.Tests/EquivalenceClasses/AddressAusEquivalenceTests.cs @@ -22,24 +22,24 @@ protected override List GetData() return new List { new object[] - {new Words(FromDictionary.AddressAusCity), GenerateTestCasesForSut(Any.AddressAus().City)}, + {new Words(FromDictionary.AddressAusCity), GenerateTestCasesForSut(Any.AddressAus.City)}, new object[] - {new Words(FromDictionary.AddressAusCompany), GenerateTestCasesForSut(Any.AddressAus().Company)}, + {new Words(FromDictionary.AddressAusCompany), GenerateTestCasesForSut(Any.AddressAus.Company)}, new object[] - {new Words(FromDictionary.AddressAusPhone), GenerateTestCasesForSut(Any.AddressAus().Phone)}, + {new Words(FromDictionary.AddressAusPhone), GenerateTestCasesForSut(Any.AddressAus.Phone)}, new object[] - {new Words(FromDictionary.AddressAusPostCode), GenerateTestCasesForSut(Any.AddressAus().PostCode)}, + {new Words(FromDictionary.AddressAusPostCode), GenerateTestCasesForSut(Any.AddressAus.PostCode)}, new object[] - {new Words(FromDictionary.AddressAusState), GenerateTestCasesForSut(Any.AddressAus().State)}, + {new Words(FromDictionary.AddressAusState), GenerateTestCasesForSut(Any.AddressAus.State)}, new object[] { new Words(FromDictionary.AddressAusStateAbbreviation), - GenerateTestCasesForSut(Any.AddressAus().StateAbbreviation) + GenerateTestCasesForSut(Any.AddressAus.StateAbbreviation) }, new object[] - {new Words(FromDictionary.AddressAusStreet), GenerateTestCasesForSut(Any.AddressAus().Street)}, + {new Words(FromDictionary.AddressAusStreet), GenerateTestCasesForSut(Any.AddressAus.Street)}, new object[] - {new Words(FromDictionary.AddressAusWebsite), GenerateTestCasesForSut(Any.AddressAus().Website)}, + {new Words(FromDictionary.AddressAusWebsite), GenerateTestCasesForSut(Any.AddressAus.Website)}, }; } } diff --git a/TestStack.Dossier.Tests/EquivalenceClasses/AddressUkEquivalenceTests.cs b/TestStack.Dossier.Tests/EquivalenceClasses/AddressUkEquivalenceTests.cs index edeab8c..18f051b 100644 --- a/TestStack.Dossier.Tests/EquivalenceClasses/AddressUkEquivalenceTests.cs +++ b/TestStack.Dossier.Tests/EquivalenceClasses/AddressUkEquivalenceTests.cs @@ -22,19 +22,19 @@ protected override List GetData() return new List { new object[] - {new Words(FromDictionary.AddressUkCounty), GenerateTestCasesForSut(Any.AddressUk().County)}, + {new Words(FromDictionary.AddressUkCounty), GenerateTestCasesForSut(Any.AddressUk.County)}, new object[] - {new Words(FromDictionary.AddressUkCity), GenerateTestCasesForSut(Any.AddressUk().City)}, + {new Words(FromDictionary.AddressUkCity), GenerateTestCasesForSut(Any.AddressUk.City)}, new object[] - {new Words(FromDictionary.AddressUkCompany), GenerateTestCasesForSut(Any.AddressUk().Company)}, + {new Words(FromDictionary.AddressUkCompany), GenerateTestCasesForSut(Any.AddressUk.Company)}, new object[] - {new Words(FromDictionary.AddressUkPhone), GenerateTestCasesForSut(Any.AddressUk().Phone)}, + {new Words(FromDictionary.AddressUkPhone), GenerateTestCasesForSut(Any.AddressUk.Phone)}, new object[] - {new Words(FromDictionary.AddressUkPostCode), GenerateTestCasesForSut(Any.AddressUk().PostCode)}, + {new Words(FromDictionary.AddressUkPostCode), GenerateTestCasesForSut(Any.AddressUk.PostCode)}, new object[] - {new Words(FromDictionary.AddressUkStreet), GenerateTestCasesForSut(Any.AddressUk().Street)}, + {new Words(FromDictionary.AddressUkStreet), GenerateTestCasesForSut(Any.AddressUk.Street)}, new object[] - {new Words(FromDictionary.AddressUkWebsite), GenerateTestCasesForSut(Any.AddressUk().Website)}, + {new Words(FromDictionary.AddressUkWebsite), GenerateTestCasesForSut(Any.AddressUk.Website)}, }; } } diff --git a/TestStack.Dossier.Tests/EquivalenceClasses/AddressUsEquivalenceTests.cs b/TestStack.Dossier.Tests/EquivalenceClasses/AddressUsEquivalenceTests.cs index 5f32c72..183ec9a 100644 --- a/TestStack.Dossier.Tests/EquivalenceClasses/AddressUsEquivalenceTests.cs +++ b/TestStack.Dossier.Tests/EquivalenceClasses/AddressUsEquivalenceTests.cs @@ -22,26 +22,26 @@ protected override List GetData() return new List { new object[] - {new Words(FromDictionary.AddressUsCity), GenerateTestCasesForSut(Any.AddressUs().City)}, + {new Words(FromDictionary.AddressUsCity), GenerateTestCasesForSut(Any.AddressUs.City)}, new object[] - {new Words(FromDictionary.AddressUsCompany), GenerateTestCasesForSut(Any.AddressUs().Company)}, + {new Words(FromDictionary.AddressUsCompany), GenerateTestCasesForSut(Any.AddressUs.Company)}, new object[] - {new Words(FromDictionary.AddressUsPhone), GenerateTestCasesForSut(Any.AddressUs().Phone)}, + {new Words(FromDictionary.AddressUsPhone), GenerateTestCasesForSut(Any.AddressUs.Phone)}, new object[] - {new Words(FromDictionary.AddressUsSocialSecurityNumber), GenerateTestCasesForSut(Any.AddressUs().SocialSecurityNumber)}, + {new Words(FromDictionary.AddressUsSocialSecurityNumber), GenerateTestCasesForSut(Any.AddressUs.SocialSecurityNumber)}, new object[] - {new Words(FromDictionary.AddressUsState), GenerateTestCasesForSut(Any.AddressUs().State)}, + {new Words(FromDictionary.AddressUsState), GenerateTestCasesForSut(Any.AddressUs.State)}, new object[] { new Words(FromDictionary.AddressUsStateAbbreviation), - GenerateTestCasesForSut(Any.AddressUs().StateAbbreviation) + GenerateTestCasesForSut(Any.AddressUs.StateAbbreviation) }, new object[] - {new Words(FromDictionary.AddressUsStreet), GenerateTestCasesForSut(Any.AddressUs().Street)}, + {new Words(FromDictionary.AddressUsStreet), GenerateTestCasesForSut(Any.AddressUs.Street)}, new object[] - {new Words(FromDictionary.AddressUsWebsite), GenerateTestCasesForSut(Any.AddressUs().Website)}, + {new Words(FromDictionary.AddressUsWebsite), GenerateTestCasesForSut(Any.AddressUs.Website)}, new object[] - {new Words(FromDictionary.AddressUsZipCode), GenerateTestCasesForSut(Any.AddressUs().ZipCode)} + {new Words(FromDictionary.AddressUsZipCode), GenerateTestCasesForSut(Any.AddressUs.ZipCode)} }; } } diff --git a/TestStack.Dossier.Tests/EquivalenceClasses/ColourEquivalenceTests.cs b/TestStack.Dossier.Tests/EquivalenceClasses/ColourEquivalenceTests.cs index 68ad29b..94749ae 100644 --- a/TestStack.Dossier.Tests/EquivalenceClasses/ColourEquivalenceTests.cs +++ b/TestStack.Dossier.Tests/EquivalenceClasses/ColourEquivalenceTests.cs @@ -22,9 +22,9 @@ protected override List GetData() return new List { new object[] - {new Words(FromDictionary.ColourHex), GenerateTestCasesForSut(Any.Colour().Hex)}, + {new Words(FromDictionary.ColourHex), GenerateTestCasesForSut(Any.Colour.Hex)}, new object[] - {new Words(FromDictionary.ColourName), GenerateTestCasesForSut(Any.Colour().Name)} + {new Words(FromDictionary.ColourName), GenerateTestCasesForSut(Any.Colour.Name)} }; } } diff --git a/TestStack.Dossier.Tests/EquivalenceClasses/CompanyEquivalenceTests.cs b/TestStack.Dossier.Tests/EquivalenceClasses/CompanyEquivalenceTests.cs index 21d91c6..4c9aed2 100644 --- a/TestStack.Dossier.Tests/EquivalenceClasses/CompanyEquivalenceTests.cs +++ b/TestStack.Dossier.Tests/EquivalenceClasses/CompanyEquivalenceTests.cs @@ -22,13 +22,13 @@ protected override List GetData() return new List { new object[] - {new Words(FromDictionary.CompanyName), GenerateTestCasesForSut(Any.Company().Name)}, + {new Words(FromDictionary.CompanyName), GenerateTestCasesForSut(Any.Company.Name)}, new object[] - {new Words(FromDictionary.CompanyIndustry), GenerateTestCasesForSut(Any.Company().Industry)}, + {new Words(FromDictionary.CompanyIndustry), GenerateTestCasesForSut(Any.Company.Industry)}, new object[] - {new Words(FromDictionary.CompanyJobTitle), GenerateTestCasesForSut(Any.Company().JobTitle)}, + {new Words(FromDictionary.CompanyJobTitle), GenerateTestCasesForSut(Any.Company.JobTitle)}, new object[] - {new Words(FromDictionary.CompanyLocation), GenerateTestCasesForSut(Any.Company().Location)} + {new Words(FromDictionary.CompanyLocation), GenerateTestCasesForSut(Any.Company.Location)} }; } } diff --git a/TestStack.Dossier.Tests/EquivalenceClasses/FinanceEquivalenceTests.cs b/TestStack.Dossier.Tests/EquivalenceClasses/FinanceEquivalenceTests.cs index c336ba3..a4ecc00 100644 --- a/TestStack.Dossier.Tests/EquivalenceClasses/FinanceEquivalenceTests.cs +++ b/TestStack.Dossier.Tests/EquivalenceClasses/FinanceEquivalenceTests.cs @@ -22,13 +22,13 @@ protected override List GetData() return new List { new object[] - {new Words(FromDictionary.FinanceCreditCardNumber), GenerateTestCasesForSut(Any.Finance().CreditCardNumber)}, + {new Words(FromDictionary.FinanceCreditCardNumber), GenerateTestCasesForSut(Any.Finance.CreditCardNumber)}, new object[] - {new Words(FromDictionary.FinanceCreditCardType), GenerateTestCasesForSut(Any.Finance().CreditCardType)}, + {new Words(FromDictionary.FinanceCreditCardType), GenerateTestCasesForSut(Any.Finance.CreditCardType)}, new object[] - {new Words(FromDictionary.FinanceCurrency), GenerateTestCasesForSut(Any.Finance().Currency)}, + {new Words(FromDictionary.FinanceCurrency), GenerateTestCasesForSut(Any.Finance.Currency)}, new object[] - {new Words(FromDictionary.FinanceCurrencyCode), GenerateTestCasesForSut(Any.Finance().CurrencyCode)} + {new Words(FromDictionary.FinanceCurrencyCode), GenerateTestCasesForSut(Any.Finance.CurrencyCode)} }; } } diff --git a/TestStack.Dossier.Tests/EquivalenceClasses/FrequencyEquivalenceTests.cs b/TestStack.Dossier.Tests/EquivalenceClasses/FrequencyEquivalenceTests.cs index d817874..3a80bb8 100644 --- a/TestStack.Dossier.Tests/EquivalenceClasses/FrequencyEquivalenceTests.cs +++ b/TestStack.Dossier.Tests/EquivalenceClasses/FrequencyEquivalenceTests.cs @@ -22,7 +22,7 @@ protected override List GetData() return new List { new object[] - {new Words(FromDictionary.Frequency), GenerateTestCasesForSut(Any.Frequency)} + {new Words(FromDictionary.Frequency), GenerateTestCasesForSut(Any.Frequency.Frequency)} }; } } diff --git a/TestStack.Dossier/AnonymousValueFixture.cs b/TestStack.Dossier/AnonymousValueFixture.cs index 2fb2082..83a6dc2 100644 --- a/TestStack.Dossier/AnonymousValueFixture.cs +++ b/TestStack.Dossier/AnonymousValueFixture.cs @@ -1,9 +1,7 @@ using System; -using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; -using System.Text; using Ploeh.AutoFixture; using TestStack.Dossier.DataSources.Dictionaries; using TestStack.Dossier.Suppliers; @@ -14,7 +12,7 @@ namespace TestStack.Dossier /// Allows you to create extension methods to generate anonymous values and to set up /// conventions for automatic generation of anonymous values based on property expressions. /// - public class AnonymousValueFixture + public partial class AnonymousValueFixture { static AnonymousValueFixture() { diff --git a/TestStack.Dossier/EquivalenceClasses/Equivalence.cs b/TestStack.Dossier/EquivalenceClasses/Equivalence.cs index 2fe854f..8dfc04c 100644 --- a/TestStack.Dossier/EquivalenceClasses/Equivalence.cs +++ b/TestStack.Dossier/EquivalenceClasses/Equivalence.cs @@ -2,56 +2,64 @@ namespace TestStack.Dossier { /// - /// Extension methods that describe equivalence classes for generating anonymous values. + /// Equivalence classes for generating anonymous values. /// - public static class Equivalence + public partial class AnonymousValueFixture { /// - /// Extension methods that describe equivalence classes for generating anonymous Australian address-related values. + /// Equivalence classes for generating anonymous Australian address-related values. /// - public static AddressAusEquivalence AddressAus(this AnonymousValueFixture fixture) + public AddressAusEquivalence AddressAus { - return new AddressAusEquivalence(fixture); + get { return new AddressAusEquivalence(this); } } /// - /// Extension methods that describe equivalence classes for generating anonymous United Kingdom address-related values. + /// Equivalence classes for generating anonymous United Kingdom address-related values. /// - public static AddressUkEquivalence AddressUk(this AnonymousValueFixture fixture) + public AddressUkEquivalence AddressUk { - return new AddressUkEquivalence(fixture); + get { return new AddressUkEquivalence(this);} } /// - /// Extension methods that describe equivalence classes for generating anonymous United States address-related values. + /// Equivalence classes for generating anonymous United States address-related values. /// - public static AddressUsEquivalence AddressUs(this AnonymousValueFixture fixture) + public AddressUsEquivalence AddressUs { - return new AddressUsEquivalence(fixture); + get { return new AddressUsEquivalence(this); } } /// - /// Extension methods that describe equivalence classes for generating anonymous colour-related values. + /// Equivalence classes for generating anonymous colour-related values. /// - public static ColourEquivalence Colour(this AnonymousValueFixture fixture) + public ColourEquivalence Colour { - return new ColourEquivalence(fixture); + get { return new ColourEquivalence(this); } } /// - /// Extension methods that describe equivalence classes for generating anonymous company-related values. + /// Equivalence classes for generating anonymous company-related values. /// - public static CompanyEquivalence Company(this AnonymousValueFixture fixture) + public CompanyEquivalence Company { - return new CompanyEquivalence(fixture); + get { return new CompanyEquivalence(this); } } /// - /// Extension methods that describe equivalence classes for generating anonymous finance-related values. + /// Equivalence classes for generating anonymous finance-related values. /// - public static FinanceEquivalence Finance(this AnonymousValueFixture fixture) + public FinanceEquivalence Finance { - return new FinanceEquivalence(fixture); + get { return new FinanceEquivalence(this); } + } + + /// + /// Equivalence classes for generating anonymous frequency-related values. + /// + public FrequencyEquivalence Frequency + { + get { return new FrequencyEquivalence(this); } } } } \ No newline at end of file From 504fe18875042455b5ab1e616d13e64a11083eb7 Mon Sep 17 00:00:00 2001 From: Michael Whelan Date: Fri, 12 Feb 2016 10:14:32 +0000 Subject: [PATCH 3/5] Fixed failing test --- ...piChecked_ShouldHaveNoChanges.approved.txt | 108 ++++++++++-------- 1 file changed, 61 insertions(+), 47 deletions(-) diff --git a/TestStack.Dossier.Tests/PublicApiApproval/PublicApiApproverTests.GivenDossierAssembly_WhenPublicApiChecked_ShouldHaveNoChanges.approved.txt b/TestStack.Dossier.Tests/PublicApiApproval/PublicApiApproverTests.GivenDossierAssembly_WhenPublicApiChecked_ShouldHaveNoChanges.approved.txt index a372623..e375589 100644 --- a/TestStack.Dossier.Tests/PublicApiApproval/PublicApiApproverTests.GivenDossierAssembly_WhenPublicApiChecked_ShouldHaveNoChanges.approved.txt +++ b/TestStack.Dossier.Tests/PublicApiApproval/PublicApiApproverTests.GivenDossierAssembly_WhenPublicApiChecked_ShouldHaveNoChanges.approved.txt @@ -7,46 +7,56 @@ namespace TestStack.Dossier { - public class static AddressAusEquivalence - { - public static string AddressAusCity(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string AddressAusCompany(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string AddressAusPhone(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string AddressAusPostCode(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string AddressAusState(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string AddressAusStateAbbreviation(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string AddressAusStreet(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string AddressAusWebsite(this TestStack.Dossier.AnonymousValueFixture fixture) { } - } - public class static AddressUkEquivalence - { - public static string AddressUkCity(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string AddressUkCompany(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string AddressUkCounty(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string AddressUkPhone(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string AddressUkPostCode(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string AddressUkStreet(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string AddressUkWebsite(this TestStack.Dossier.AnonymousValueFixture fixture) { } - } - public class static AddressUsEquivalence - { - public static string AddressUsCity(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string AddressUsCompany(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string AddressUsPhone(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string AddressUsSocialSecurityNumber(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string AddressUsState(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string AddressUsStateAbbreviation(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string AddressUsStreet(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string AddressUsWebsite(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string AddressUsZipCode(this TestStack.Dossier.AnonymousValueFixture fixture) { } + public class AddressAusEquivalence + { + public AddressAusEquivalence(TestStack.Dossier.AnonymousValueFixture fixture) { } + public string City() { } + public string Company() { } + public string Phone() { } + public string PostCode() { } + public string State() { } + public string StateAbbreviation() { } + public string Street() { } + public string Website() { } + } + public class AddressUkEquivalence + { + public AddressUkEquivalence(TestStack.Dossier.AnonymousValueFixture fixture) { } + public string City() { } + public string Company() { } + public string County() { } + public string Phone() { } + public string PostCode() { } + public string Street() { } + public string Website() { } + } + public class AddressUsEquivalence + { + public AddressUsEquivalence(TestStack.Dossier.AnonymousValueFixture fixture) { } + public string City() { } + public string Company() { } + public string Phone() { } + public string SocialSecurityNumber() { } + public string State() { } + public string StateAbbreviation() { } + public string Street() { } + public string Website() { } + public string ZipCode() { } } public class AnonymousValueFixture { public AnonymousValueFixture() { } + public TestStack.Dossier.AddressAusEquivalence AddressAus { get; } + public TestStack.Dossier.AddressUkEquivalence AddressUk { get; } + public TestStack.Dossier.AddressUsEquivalence AddressUs { get; } [System.Runtime.CompilerServices.DynamicAttribute()] public object Bag { get; } + public TestStack.Dossier.ColourEquivalence Colour { get; } + public TestStack.Dossier.CompanyEquivalence Company { get; } public static System.Collections.Generic.IEnumerable DefaultValueSuppliers { get; } + public TestStack.Dossier.FinanceEquivalence Finance { get; } public Ploeh.AutoFixture.Fixture Fixture { get; } + public TestStack.Dossier.FrequencyEquivalence Frequency { get; } public static System.Collections.Generic.ICollection GlobalValueSuppliers { get; } public System.Collections.Generic.ICollection LocalValueSuppliers { get; } public Ploeh.AutoFixture.RegularExpressionGenerator RegexGenerator { get; } @@ -67,28 +77,32 @@ namespace TestStack.Dossier public virtual TestStack.Dossier.Builder SetUsingBuilder(System.Linq.Expressions.Expression> property, System.Func, TestStack.Dossier.Builder> modifier = null) where TPropertyType : class { } } - public class static ColourEquivalence + public class ColourEquivalence { - public static string ColourHex(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string ColourName(this TestStack.Dossier.AnonymousValueFixture fixture) { } + public ColourEquivalence(TestStack.Dossier.AnonymousValueFixture fixture) { } + public string Hex() { } + public string Name() { } } - public class static CompanyEquivalence + public class CompanyEquivalence { - public static string CompanyIndustry(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string CompanyJobTitle(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string CompanyLocation(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string CompanyName(this TestStack.Dossier.AnonymousValueFixture fixture) { } + public CompanyEquivalence(TestStack.Dossier.AnonymousValueFixture fixture) { } + public string Industry() { } + public string JobTitle() { } + public string Location() { } + public string Name() { } } - public class static FinanceEquivalence + public class FinanceEquivalence { - public static string FinanceCreditCardNumber(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string FinanceCreditCardType(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string FinanceCurrency(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string FinanceCurrencyCode(this TestStack.Dossier.AnonymousValueFixture fixture) { } + public FinanceEquivalence(TestStack.Dossier.AnonymousValueFixture fixture) { } + public string CreditCardNumber() { } + public string CreditCardType() { } + public string Currency() { } + public string CurrencyCode() { } } - public class static FrequencyEquivalence + public class FrequencyEquivalence { - public static string Frequency(this TestStack.Dossier.AnonymousValueFixture fixture) { } + public FrequencyEquivalence(TestStack.Dossier.AnonymousValueFixture fixture) { } + public string Frequency() { } } public class static GeoEquivalence { From 27cb81032db093762eede782243a83d79bc0340a Mon Sep 17 00:00:00 2001 From: Michael Whelan Date: Sun, 14 Feb 2016 12:19:59 +0000 Subject: [PATCH 4/5] Refactored new equivalence classes to use property-based category API --- .../EquivalenceClasses/GeoEquivalenceTests.cs | 10 +- .../IdentifierEquivalenceTests.cs | 12 +-- .../IntegerEquivalenceTests.cs | 8 +- .../PersonEquivalenceClassesTests.cs | 2 +- .../PersonEquivalenceTests.cs | 24 ++--- ...piChecked_ShouldHaveNoChanges.approved.txt | 79 +++++++++------- .../EquivalenceClasses/Equivalence.cs | 32 +++++++ .../Geo/GeographyEquivalenceClassescs.cs | 10 +- .../EquivalenceClasses/GeoEquivalence.cs | 41 +++++---- .../IdentifierEquivalence.cs | 45 +++++---- .../EquivalenceClasses/InternetEquivalence.cs | 36 +++++--- .../LoremIpsumEquivalence.cs | 1 - .../Person/PersonEquivalenceClasses.cs | 22 ++--- .../EquivalenceClasses/PersonEquivalence.cs | 91 +++++++------------ .../PersonEquivalenceExtensions.cs | 38 ++++++++ .../ShirtSizeEquivalence.cs | 1 - .../Suppliers/DefaultEmailValueSupplier.cs | 2 +- .../DefaultFirstNameValueSupplier.cs | 2 +- .../Suppliers/DefaultLastNameValueSupplier.cs | 2 +- TestStack.Dossier/TestStack.Dossier.csproj | 1 + 20 files changed, 263 insertions(+), 196 deletions(-) create mode 100644 TestStack.Dossier/EquivalenceClasses/PersonEquivalenceExtensions.cs diff --git a/TestStack.Dossier.Tests/EquivalenceClasses/GeoEquivalenceTests.cs b/TestStack.Dossier.Tests/EquivalenceClasses/GeoEquivalenceTests.cs index dd6c021..b68a9e0 100644 --- a/TestStack.Dossier.Tests/EquivalenceClasses/GeoEquivalenceTests.cs +++ b/TestStack.Dossier.Tests/EquivalenceClasses/GeoEquivalenceTests.cs @@ -21,11 +21,11 @@ protected override List GetData() { return new List { - new object[] {new Words(FromDictionary.GeoContinent), GenerateTestCasesForSut(Any.GeoContinent)}, - new object[] {new Words(FromDictionary.GeoCountry), GenerateTestCasesForSut(Any.GeoCountry)}, - new object[] {new Words(FromDictionary.GeoCountryCode), GenerateTestCasesForSut(Any.GeoCountryCode)}, - new object[] {new Words(FromDictionary.GeoLatitude), GenerateTestCasesForSut(Any.GeoLatitude)}, - new object[] {new Words(FromDictionary.GeoLongitude), GenerateTestCasesForSut(Any.GeoLongitude)}, + new object[] {new Words(FromDictionary.GeoContinent), GenerateTestCasesForSut(Any.Geography.Continent)}, + new object[] {new Words(FromDictionary.GeoCountry), GenerateTestCasesForSut(Any.Geography.Country)}, + new object[] {new Words(FromDictionary.GeoCountryCode), GenerateTestCasesForSut(Any.Geography.CountryCode)}, + new object[] {new Words(FromDictionary.GeoLatitude), GenerateTestCasesForSut(Any.Geography.Latitude)}, + new object[] {new Words(FromDictionary.GeoLongitude), GenerateTestCasesForSut(Any.Geography.Longitude)}, }; } } diff --git a/TestStack.Dossier.Tests/EquivalenceClasses/IdentifierEquivalenceTests.cs b/TestStack.Dossier.Tests/EquivalenceClasses/IdentifierEquivalenceTests.cs index 22725f5..ad9ab21 100644 --- a/TestStack.Dossier.Tests/EquivalenceClasses/IdentifierEquivalenceTests.cs +++ b/TestStack.Dossier.Tests/EquivalenceClasses/IdentifierEquivalenceTests.cs @@ -24,24 +24,24 @@ protected override List GetData() new object[] { new Words(FromDictionary.IdentifierBitcoinAddress), - GenerateTestCasesForSut(Any.IdentifierBitcoinAddress) + GenerateTestCasesForSut(Any.Identifier.BitcoinAddress) }, new object[] - {new Words(FromDictionary.IdentifierIban), GenerateTestCasesForSut(Any.IdentifierIban)}, + {new Words(FromDictionary.IdentifierIban), GenerateTestCasesForSut(Any.Identifier.Iban)}, new object[] { - new Words(FromDictionary.IdentifierIpAddressV4), GenerateTestCasesForSut(Any.IdentifierIpAddressV4) + new Words(FromDictionary.IdentifierIpAddressV4), GenerateTestCasesForSut(Any.Identifier.IpAddressV4) }, new object[] { - new Words(FromDictionary.IdentifierIpAddressV6), GenerateTestCasesForSut(Any.IdentifierIpAddressV6) + new Words(FromDictionary.IdentifierIpAddressV6), GenerateTestCasesForSut(Any.Identifier.IpAddressV6) }, new object[] - {new Words(FromDictionary.IdentifierIsbn), GenerateTestCasesForSut(Any.IdentifierIsbn)}, + {new Words(FromDictionary.IdentifierIsbn), GenerateTestCasesForSut(Any.Identifier.Isbn)}, new object[] { new Words(FromDictionary.IdentifierMacAddress), - GenerateTestCasesForSut(Any.IdentifierMacAddress) + GenerateTestCasesForSut(Any.Identifier.MacAddress) } }; } diff --git a/TestStack.Dossier.Tests/EquivalenceClasses/IntegerEquivalenceTests.cs b/TestStack.Dossier.Tests/EquivalenceClasses/IntegerEquivalenceTests.cs index 2630029..af0db97 100644 --- a/TestStack.Dossier.Tests/EquivalenceClasses/IntegerEquivalenceTests.cs +++ b/TestStack.Dossier.Tests/EquivalenceClasses/IntegerEquivalenceTests.cs @@ -24,17 +24,17 @@ protected override List GetData() new object[] { new Words(FromDictionary.InternetDomainCountryCodeTopLevelDomain), - GenerateTestCasesForSut(Any.InternetDomainCountryCodeTopLevelDomain) + GenerateTestCasesForSut(Any.Internet.DomainCountryCodeTopLevelDomain) }, new object[] - {new Words(FromDictionary.InternetDomainName), GenerateTestCasesForSut(Any.InternetDomainName)}, + {new Words(FromDictionary.InternetDomainName), GenerateTestCasesForSut(Any.Internet.DomainName)}, new object[] { new Words(FromDictionary.InternetDomainTopLevel), - GenerateTestCasesForSut(Any.InternetDomainTopLevel) + GenerateTestCasesForSut(Any.Internet.DomainTopLevel) }, new object[] - {new Words(FromDictionary.InternetUrl), GenerateTestCasesForSut(Any.InternetUrl)} + {new Words(FromDictionary.InternetUrl), GenerateTestCasesForSut(Any.Internet.Url)} }; } } diff --git a/TestStack.Dossier.Tests/EquivalenceClasses/PersonEquivalenceClassesTests.cs b/TestStack.Dossier.Tests/EquivalenceClasses/PersonEquivalenceClassesTests.cs index 81c3d94..58edd33 100644 --- a/TestStack.Dossier.Tests/EquivalenceClasses/PersonEquivalenceClassesTests.cs +++ b/TestStack.Dossier.Tests/EquivalenceClasses/PersonEquivalenceClassesTests.cs @@ -25,7 +25,7 @@ public void WhenGettingUniqueEmail_ThenReturnUniqueEmailsAcrossFixtureInstances( var generatedValues = new List(); var any2 = new AnonymousValueFixture(); - any2.ResetUniqueEmailAddressSource(); + PersonEquivalenceExtensions.InitializeUniqueEmailAddressSource(); generatedValues.Add(any2.UniqueEmailAddress()); for (var i = 0; i < source.Data.Count - 1; i++) { diff --git a/TestStack.Dossier.Tests/EquivalenceClasses/PersonEquivalenceTests.cs b/TestStack.Dossier.Tests/EquivalenceClasses/PersonEquivalenceTests.cs index 2d27f95..bf540f4 100644 --- a/TestStack.Dossier.Tests/EquivalenceClasses/PersonEquivalenceTests.cs +++ b/TestStack.Dossier.Tests/EquivalenceClasses/PersonEquivalenceTests.cs @@ -24,11 +24,11 @@ public void WhenGettingUniqueEmail_ThenReturnUniqueEmailsAcrossFixtureInstances( var generatedValues = new List(); var any2 = new AnonymousValueFixture(); - any2.ResetUniqueEmailAddressSource(); - generatedValues.Add(any2.PersonUniqueEmailAddress()); + PersonEquivalenceExtensions.InitializeUniqueEmailAddressSource(); + generatedValues.Add(any2.Person.UniqueEmailAddress()); for (var i = 0; i < source.Data.Count - 1; i++) { - generatedValues.Add(Any.PersonUniqueEmailAddress()); + generatedValues.Add(Any.Person.UniqueEmailAddress()); } generatedValues.Distinct().Count() @@ -43,17 +43,17 @@ protected override List GetData() return new List { new object[] - {new Words(FromDictionary.PersonEmailAddress), GenerateTestCasesForSut(Any.PersonEmailAddress)}, - new object[] {new Words(FromDictionary.PersonLanguage), GenerateTestCasesForSut(Any.PersonLanguage)}, + {new Words(FromDictionary.PersonEmailAddress), GenerateTestCasesForSut(Any.Person.EmailAddress)}, + new object[] {new Words(FromDictionary.PersonLanguage), GenerateTestCasesForSut(Any.Person.Language)}, new object[] - {new Words(FromDictionary.PersonNameFirstFemale), GenerateTestCasesForSut(Any.PersonNameFirstFemale)}, - new object[] {new Words(FromDictionary.PersonNameFirst), GenerateTestCasesForSut(Any.PersonNameFirst)}, - new object[] {new Words(FromDictionary.PersonNameFull), GenerateTestCasesForSut(Any.PersonNameFull)}, - new object[] {new Words(FromDictionary.PersonNameLast), GenerateTestCasesForSut(Any.PersonNameLast)}, + {new Words(FromDictionary.PersonNameFirstFemale), GenerateTestCasesForSut(Any.Person.NameFirstFemale)}, + new object[] {new Words(FromDictionary.PersonNameFirst), GenerateTestCasesForSut(Any.Person.NameFirst)}, + new object[] {new Words(FromDictionary.PersonNameFull), GenerateTestCasesForSut(Any.Person.NameFull)}, + new object[] {new Words(FromDictionary.PersonNameLast), GenerateTestCasesForSut(Any.Person.NameLast)}, new object[] - {new Words(FromDictionary.PersonNameFirstMale), GenerateTestCasesForSut(Any.PersonNameFirstMale)}, - new object[] {new Words(FromDictionary.PersonNameSuffix), GenerateTestCasesForSut(Any.PersonNameSuffix)}, - new object[] {new Words(FromDictionary.PersonNameTitle), GenerateTestCasesForSut(Any.PersonNameTitle)}, + {new Words(FromDictionary.PersonNameFirstMale), GenerateTestCasesForSut(Any.Person.NameFirstMale)}, + new object[] {new Words(FromDictionary.PersonNameSuffix), GenerateTestCasesForSut(Any.Person.NameSuffix)}, + new object[] {new Words(FromDictionary.PersonNameTitle), GenerateTestCasesForSut(Any.Person.NameTitle)}, }; } } diff --git a/TestStack.Dossier.Tests/PublicApiApproval/PublicApiApproverTests.GivenDossierAssembly_WhenPublicApiChecked_ShouldHaveNoChanges.approved.txt b/TestStack.Dossier.Tests/PublicApiApproval/PublicApiApproverTests.GivenDossierAssembly_WhenPublicApiChecked_ShouldHaveNoChanges.approved.txt index e375589..47e8b5c 100644 --- a/TestStack.Dossier.Tests/PublicApiApproval/PublicApiApproverTests.GivenDossierAssembly_WhenPublicApiChecked_ShouldHaveNoChanges.approved.txt +++ b/TestStack.Dossier.Tests/PublicApiApproval/PublicApiApproverTests.GivenDossierAssembly_WhenPublicApiChecked_ShouldHaveNoChanges.approved.txt @@ -57,8 +57,12 @@ namespace TestStack.Dossier public TestStack.Dossier.FinanceEquivalence Finance { get; } public Ploeh.AutoFixture.Fixture Fixture { get; } public TestStack.Dossier.FrequencyEquivalence Frequency { get; } + public TestStack.Dossier.GeoEquivalence Geography { get; } public static System.Collections.Generic.ICollection GlobalValueSuppliers { get; } + public TestStack.Dossier.IdentifierEquivalence Identifier { get; } + public TestStack.Dossier.InternetEquivalence Internet { get; } public System.Collections.Generic.ICollection LocalValueSuppliers { get; } + public TestStack.Dossier.PersonEquivalence Person { get; } public Ploeh.AutoFixture.RegularExpressionGenerator RegexGenerator { get; } public T Get(System.Linq.Expressions.Expression> property) { } public object Get(System.Type type, string propertyName) { } @@ -104,34 +108,37 @@ namespace TestStack.Dossier public FrequencyEquivalence(TestStack.Dossier.AnonymousValueFixture fixture) { } public string Frequency() { } } - public class static GeoEquivalence + public class GeoEquivalence { - public static string GeoContinent(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string GeoCountry(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string GeoCountryCode(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string GeoLatitude(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string GeoLongitude(this TestStack.Dossier.AnonymousValueFixture fixture) { } + public GeoEquivalence(TestStack.Dossier.AnonymousValueFixture fixture) { } + public string Continent() { } + public string Country() { } + public string CountryCode() { } + public string Latitude() { } + public string Longitude() { } } public interface IAnonymousValueSupplier { bool CanSupplyValue(System.Type type, string propertyName); object GenerateAnonymousValue(TestStack.Dossier.AnonymousValueFixture any, System.Type type, string propertyName); } - public class static IdentifierEquivalence + public class IdentifierEquivalence { - public static string IdentifierBitcoinAddress(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string IdentifierIban(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string IdentifierIpAddressV4(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string IdentifierIpAddressV6(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string IdentifierIsbn(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string IdentifierMacAddress(this TestStack.Dossier.AnonymousValueFixture fixture) { } + public IdentifierEquivalence(TestStack.Dossier.AnonymousValueFixture fixture) { } + public string BitcoinAddress() { } + public string Iban() { } + public string IpAddressV4() { } + public string IpAddressV6() { } + public string Isbn() { } + public string MacAddress() { } } - public class static InternetEquivalence + public class InternetEquivalence { - public static string InternetDomainCountryCodeTopLevelDomain(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string InternetDomainName(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string InternetDomainTopLevel(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string InternetUrl(this TestStack.Dossier.AnonymousValueFixture fixture) { } + public InternetEquivalence(TestStack.Dossier.AnonymousValueFixture fixture) { } + public string DomainCountryCodeTopLevelDomain() { } + public string DomainName() { } + public string DomainTopLevel() { } + public string Url() { } } public interface ITestDataBuilder where out TObject : class @@ -142,21 +149,25 @@ namespace TestStack.Dossier { public static string LoremIpsum(this TestStack.Dossier.AnonymousValueFixture fixture) { } } - public class static PersonEquivalence - { - public static string PersonEmailAddress(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string PersonLanguage(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string PersonNameFirst(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string PersonNameFirstFemale(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string PersonNameFirstMale(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string PersonNameFull(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string PersonNameLast(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string PersonNameSuffix(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string PersonNameTitle(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string PersonPassword(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string PersonRace(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string PersonUniqueEmailAddress(this TestStack.Dossier.AnonymousValueFixture fixture) { } - public static string PersonUsername(this TestStack.Dossier.AnonymousValueFixture fixture) { } + public class PersonEquivalence + { + public PersonEquivalence(TestStack.Dossier.AnonymousValueFixture fixture) { } + public string EmailAddress() { } + public string Language() { } + public string NameFirst() { } + public string NameFirstFemale() { } + public string NameFirstMale() { } + public string NameFull() { } + public string NameLast() { } + public string NameSuffix() { } + public string NameTitle() { } + public string Password() { } + public string Race() { } + public string Username() { } + } + public class static PersonEquivalenceExtensions + { + public static string UniqueEmailAddress(this TestStack.Dossier.PersonEquivalence personEquivalence) { } } public class ProxyBuilder where T : class @@ -481,7 +492,7 @@ namespace TestStack.Dossier.EquivalenceClasses.Geo namespace TestStack.Dossier.EquivalenceClasses.Person { - public class static NameEquivalenceClasses + public class static PersonEquivalenceClasses { public static string EmailAddress(this TestStack.Dossier.AnonymousValueFixture fixture) { } public static string FemaleFirstName(this TestStack.Dossier.AnonymousValueFixture fixture) { } diff --git a/TestStack.Dossier/EquivalenceClasses/Equivalence.cs b/TestStack.Dossier/EquivalenceClasses/Equivalence.cs index 8dfc04c..9912939 100644 --- a/TestStack.Dossier/EquivalenceClasses/Equivalence.cs +++ b/TestStack.Dossier/EquivalenceClasses/Equivalence.cs @@ -61,5 +61,37 @@ public FrequencyEquivalence Frequency { get { return new FrequencyEquivalence(this); } } + + /// + /// Equivalence classes for generating anonymous geography-related values. + /// + public GeoEquivalence Geography + { + get { return new GeoEquivalence(this); } + } + + /// + /// Equivalence classes for generating anonymous identifier-related values. + /// + public IdentifierEquivalence Identifier + { + get { return new IdentifierEquivalence(this); } + } + + /// + /// Equivalence classes for generating anonymous internet-related values. + /// + public InternetEquivalence Internet + { + get { return new InternetEquivalence(this); } + } + + /// + /// Equivalence classes for generating anonymous person-related values. + /// + public PersonEquivalence Person + { + get { return new PersonEquivalence(this); } + } } } \ No newline at end of file diff --git a/TestStack.Dossier/EquivalenceClasses/Geo/GeographyEquivalenceClassescs.cs b/TestStack.Dossier/EquivalenceClasses/Geo/GeographyEquivalenceClassescs.cs index 9fbdf6c..7687d4f 100644 --- a/TestStack.Dossier/EquivalenceClasses/Geo/GeographyEquivalenceClassescs.cs +++ b/TestStack.Dossier/EquivalenceClasses/Geo/GeographyEquivalenceClassescs.cs @@ -12,7 +12,7 @@ public static class GeographyEquivalenceClassescs /// The generated continent public static string Continent(this AnonymousValueFixture fixture) { - return fixture.GeoContinent(); + return fixture.Geography.Continent(); } /// @@ -22,7 +22,7 @@ public static string Continent(this AnonymousValueFixture fixture) /// The generated country public static string Country(this AnonymousValueFixture fixture) { - return fixture.GeoCountry(); + return fixture.Geography.Country(); } /// @@ -32,7 +32,7 @@ public static string Country(this AnonymousValueFixture fixture) /// The generated country code public static string CountryCode(this AnonymousValueFixture fixture) { - return fixture.GeoCountryCode(); + return fixture.Geography.CountryCode(); } @@ -43,7 +43,7 @@ public static string CountryCode(this AnonymousValueFixture fixture) /// The generated latitude public static string Latitude(this AnonymousValueFixture fixture) { - return fixture.GeoLatitude(); + return fixture.Geography.Latitude(); } /// @@ -53,7 +53,7 @@ public static string Latitude(this AnonymousValueFixture fixture) /// The generated longitude public static string Longitude(this AnonymousValueFixture fixture) { - return fixture.GeoLongitude(); + return fixture.Geography.Longitude(); } } } diff --git a/TestStack.Dossier/EquivalenceClasses/GeoEquivalence.cs b/TestStack.Dossier/EquivalenceClasses/GeoEquivalence.cs index 2b513ac..7b34a40 100644 --- a/TestStack.Dossier/EquivalenceClasses/GeoEquivalence.cs +++ b/TestStack.Dossier/EquivalenceClasses/GeoEquivalence.cs @@ -4,59 +4,64 @@ namespace TestStack.Dossier { /// - /// Extension methods that describe equivalence classes for generating anonymous Geography-related values. + /// Methods that describe equivalence classes for generating anonymous Geography-related values. /// - public static class GeoEquivalence + public class GeoEquivalence { + private readonly AnonymousValueFixture _fixture; + + /// + /// Creates a new with the AnonymousValueFixture from the extension method. + /// + /// The + public GeoEquivalence(AnonymousValueFixture fixture) + { + _fixture = fixture; + } + /// /// Generate and return a geography continent name. /// - /// The fixture to generate a value for. /// The generated value. - public static string GeoContinent(this AnonymousValueFixture fixture) + public string Continent() { - return fixture.Words(FromDictionary.GeoContinent).Next(); + return _fixture.Words(FromDictionary.GeoContinent).Next(); } /// /// Generate and return a geography country name. /// - /// The fixture to generate a value for. /// The generated value. - public static string GeoCountry(this AnonymousValueFixture fixture) + public string Country() { - return fixture.Words(FromDictionary.GeoCountry).Next(); + return _fixture.Words(FromDictionary.GeoCountry).Next(); } /// /// Generate and return a geography country code. /// - /// The fixture to generate a value for. /// The generated value. - public static string GeoCountryCode(this AnonymousValueFixture fixture) + public string CountryCode() { - return fixture.Words(FromDictionary.GeoCountryCode).Next(); + return _fixture.Words(FromDictionary.GeoCountryCode).Next(); } /// /// Generate and return a geography latitude. /// - /// The fixture to generate a value for. /// The generated value. - public static string GeoLatitude(this AnonymousValueFixture fixture) + public string Latitude() { - return fixture.Words(FromDictionary.GeoLatitude).Next(); + return _fixture.Words(FromDictionary.GeoLatitude).Next(); } /// /// Generate and return a geography longitude. /// - /// The fixture to generate a value for. /// The generated value. - public static string GeoLongitude(this AnonymousValueFixture fixture) + public string Longitude() { - return fixture.Words(FromDictionary.GeoLongitude).Next(); + return _fixture.Words(FromDictionary.GeoLongitude).Next(); } - } } \ No newline at end of file diff --git a/TestStack.Dossier/EquivalenceClasses/IdentifierEquivalence.cs b/TestStack.Dossier/EquivalenceClasses/IdentifierEquivalence.cs index 80cbad6..df3bb1b 100644 --- a/TestStack.Dossier/EquivalenceClasses/IdentifierEquivalence.cs +++ b/TestStack.Dossier/EquivalenceClasses/IdentifierEquivalence.cs @@ -4,68 +4,73 @@ namespace TestStack.Dossier { /// - /// Extension methods that describe equivalence classes for generating anonymous Identifier-related values. + /// Methods that describe equivalence classes for generating anonymous Identifier-related values. /// - public static class IdentifierEquivalence + public class IdentifierEquivalence { + private readonly AnonymousValueFixture _fixture; + + /// + /// Creates a new with the AnonymousValueFixture from the extension method. + /// + /// The + public IdentifierEquivalence(AnonymousValueFixture fixture) + { + _fixture = fixture; + } + /// /// Generate and return an identifier bitcoing address. /// - /// The fixture to generate a value for. /// The generated value. - public static string IdentifierBitcoinAddress(this AnonymousValueFixture fixture) + public string BitcoinAddress() { - return fixture.Words(FromDictionary.IdentifierBitcoinAddress).Next(); + return _fixture.Words(FromDictionary.IdentifierBitcoinAddress).Next(); } /// /// Generate and return an identifier IBAN. /// - /// The fixture to generate a value for. /// The generated value. - public static string IdentifierIban(this AnonymousValueFixture fixture) + public string Iban() { - return fixture.Words(FromDictionary.IdentifierIban).Next(); + return _fixture.Words(FromDictionary.IdentifierIban).Next(); } /// /// Generate and return an identifier IP address v4. /// - /// The fixture to generate a value for. /// The generated value. - public static string IdentifierIpAddressV4(this AnonymousValueFixture fixture) + public string IpAddressV4() { - return fixture.Words(FromDictionary.IdentifierIpAddressV4).Next(); + return _fixture.Words(FromDictionary.IdentifierIpAddressV4).Next(); } /// /// Generate and return an identifier IP address v6. /// - /// The fixture to generate a value for. /// The generated value. - public static string IdentifierIpAddressV6(this AnonymousValueFixture fixture) + public string IpAddressV6() { - return fixture.Words(FromDictionary.IdentifierIpAddressV6).Next(); + return _fixture.Words(FromDictionary.IdentifierIpAddressV6).Next(); } /// /// Generate and return an identifier ISBN. /// - /// The fixture to generate a value for. /// The generated value. - public static string IdentifierIsbn(this AnonymousValueFixture fixture) + public string Isbn() { - return fixture.Words(FromDictionary.IdentifierIsbn).Next(); + return _fixture.Words(FromDictionary.IdentifierIsbn).Next(); } /// /// Generate and return an identifier MAC address. /// - /// The fixture to generate a value for. /// The generated value. - public static string IdentifierMacAddress(this AnonymousValueFixture fixture) + public string MacAddress() { - return fixture.Words(FromDictionary.IdentifierMacAddress).Next(); + return _fixture.Words(FromDictionary.IdentifierMacAddress).Next(); } } } \ No newline at end of file diff --git a/TestStack.Dossier/EquivalenceClasses/InternetEquivalence.cs b/TestStack.Dossier/EquivalenceClasses/InternetEquivalence.cs index b966182..21f3b97 100644 --- a/TestStack.Dossier/EquivalenceClasses/InternetEquivalence.cs +++ b/TestStack.Dossier/EquivalenceClasses/InternetEquivalence.cs @@ -4,49 +4,55 @@ namespace TestStack.Dossier { /// - /// Extension methods that describe equivalence classes for generating anonymous Internet-related values. + /// Methods that describe equivalence classes for generating anonymous Internet-related values. /// - public static class InternetEquivalence + public class InternetEquivalence { + private readonly AnonymousValueFixture _fixture; + + /// + /// Creates a new with the AnonymousValueFixture from the extension method. + /// + /// The + public InternetEquivalence(AnonymousValueFixture fixture) + { + _fixture = fixture; + } + /// /// Generate and return an internet domain country code top level domain. /// - /// The fixture to generate a value for. /// The generated value. - public static string InternetDomainCountryCodeTopLevelDomain(this AnonymousValueFixture fixture) + public string DomainCountryCodeTopLevelDomain() { - return fixture.Words(FromDictionary.InternetDomainCountryCodeTopLevelDomain).Next(); + return _fixture.Words(FromDictionary.InternetDomainCountryCodeTopLevelDomain).Next(); } /// /// Generate and return an internet domain name. /// - /// The fixture to generate a value for. /// The generated value. - public static string InternetDomainName(this AnonymousValueFixture fixture) + public string DomainName() { - return fixture.Words(FromDictionary.InternetDomainName).Next(); + return _fixture.Words(FromDictionary.InternetDomainName).Next(); } /// /// Generate and return a an internet domain top level name. /// - /// The fixture to generate a value for. /// The generated value. - public static string InternetDomainTopLevel(this AnonymousValueFixture fixture) + public string DomainTopLevel() { - return fixture.Words(FromDictionary.InternetDomainTopLevel).Next(); + return _fixture.Words(FromDictionary.InternetDomainTopLevel).Next(); } /// /// Generate and return an internet URL. /// - /// The fixture to generate a value for. /// The generated value. - public static string InternetUrl(this AnonymousValueFixture fixture) + public string Url() { - return fixture.Words(FromDictionary.InternetUrl).Next(); + return _fixture.Words(FromDictionary.InternetUrl).Next(); } - } } \ No newline at end of file diff --git a/TestStack.Dossier/EquivalenceClasses/LoremIpsumEquivalence.cs b/TestStack.Dossier/EquivalenceClasses/LoremIpsumEquivalence.cs index 9c5f61d..acb23b2 100644 --- a/TestStack.Dossier/EquivalenceClasses/LoremIpsumEquivalence.cs +++ b/TestStack.Dossier/EquivalenceClasses/LoremIpsumEquivalence.cs @@ -17,6 +17,5 @@ public static string LoremIpsum(this AnonymousValueFixture fixture) { return fixture.Words(FromDictionary.LoremIpsum).Next(); } - } } \ No newline at end of file diff --git a/TestStack.Dossier/EquivalenceClasses/Person/PersonEquivalenceClasses.cs b/TestStack.Dossier/EquivalenceClasses/Person/PersonEquivalenceClasses.cs index 9d6f05b..cd1ac93 100644 --- a/TestStack.Dossier/EquivalenceClasses/Person/PersonEquivalenceClasses.cs +++ b/TestStack.Dossier/EquivalenceClasses/Person/PersonEquivalenceClasses.cs @@ -3,7 +3,7 @@ /// /// Extension methods that describe equivalence classes for generating anonymous person-related values. /// - public static class NameEquivalenceClasses + public static class PersonEquivalenceClasses { /// /// Generate and return an email address. @@ -12,7 +12,7 @@ public static class NameEquivalenceClasses /// The generated email public static string EmailAddress(this AnonymousValueFixture fixture) { - return fixture.PersonEmailAddress(); + return fixture.Person.EmailAddress(); } /// @@ -22,7 +22,7 @@ public static string EmailAddress(this AnonymousValueFixture fixture) /// The generated unique email public static string UniqueEmailAddress(this AnonymousValueFixture fixture) { - return fixture.PersonUniqueEmailAddress(); + return fixture.Person.UniqueEmailAddress(); } /// @@ -32,7 +32,7 @@ public static string UniqueEmailAddress(this AnonymousValueFixture fixture) /// The generated language public static string Language(this AnonymousValueFixture fixture) { - return fixture.PersonLanguage(); + return fixture.Person.Language(); } /// @@ -42,7 +42,7 @@ public static string Language(this AnonymousValueFixture fixture) /// The generated female first name public static string FemaleFirstName(this AnonymousValueFixture fixture) { - return fixture.PersonNameFirstFemale(); + return fixture.Person.NameFirstFemale(); } /// @@ -52,7 +52,7 @@ public static string FemaleFirstName(this AnonymousValueFixture fixture) /// The generated first name public static string FirstName(this AnonymousValueFixture fixture) { - return fixture.PersonNameFirst(); + return fixture.Person.NameFirst(); } /// @@ -62,7 +62,7 @@ public static string FirstName(this AnonymousValueFixture fixture) /// The generated full name public static string FullName(this AnonymousValueFixture fixture) { - return fixture.PersonNameFull(); + return fixture.Person.NameFull(); } /// @@ -72,7 +72,7 @@ public static string FullName(this AnonymousValueFixture fixture) /// The generated last name public static string LastName(this AnonymousValueFixture fixture) { - return fixture.PersonNameLast(); + return fixture.Person.NameLast(); } /// @@ -82,7 +82,7 @@ public static string LastName(this AnonymousValueFixture fixture) /// The generated male first name public static string MaleFirstName(this AnonymousValueFixture fixture) { - return fixture.PersonNameFirstMale(); + return fixture.Person.NameFirstMale(); } /// @@ -92,7 +92,7 @@ public static string MaleFirstName(this AnonymousValueFixture fixture) /// The generated suffix public static string Suffix(this AnonymousValueFixture fixture) { - return fixture.PersonNameSuffix(); + return fixture.Person.NameSuffix(); } /// @@ -102,7 +102,7 @@ public static string Suffix(this AnonymousValueFixture fixture) /// The generated title public static string Title(this AnonymousValueFixture fixture) { - return fixture.PersonNameTitle(); + return fixture.Person.NameTitle(); } } } diff --git a/TestStack.Dossier/EquivalenceClasses/PersonEquivalence.cs b/TestStack.Dossier/EquivalenceClasses/PersonEquivalence.cs index aa544c8..772bd0d 100644 --- a/TestStack.Dossier/EquivalenceClasses/PersonEquivalence.cs +++ b/TestStack.Dossier/EquivalenceClasses/PersonEquivalence.cs @@ -1,159 +1,130 @@ using TestStack.Dossier.DataSources.Dictionaries; -using TestStack.Dossier.DataSources.Generators; // ReSharper disable once CheckNamespace namespace TestStack.Dossier { /// - /// Extension methods that describe equivalence classes for generating anonymous Person-related values. + /// Methods that describe equivalence classes for generating anonymous Person-related values. /// - public static class PersonEquivalence + public class PersonEquivalence { - private static Words _personEmailAddressSource; - private static Words _uniquePersonEmailAddressSource; + private readonly AnonymousValueFixture _fixture; /// - /// Generate and return a unique email address (within the fixture). + /// Creates a new with the AnonymousValueFixture from the extension method. /// - /// The fixture to generate a unique email for - /// The generated unique email - public static string PersonUniqueEmailAddress(this AnonymousValueFixture fixture) + /// The + public PersonEquivalence(AnonymousValueFixture fixture) { - if (_uniquePersonEmailAddressSource == null) - { - fixture.ResetUniqueEmailAddressSource(); - } - - return _uniquePersonEmailAddressSource.Next(); - } - - internal static void ResetUniqueEmailAddressSource(this AnonymousValueFixture fixture) - { - if (_personEmailAddressSource == null) _personEmailAddressSource = fixture.Words(FromDictionary.PersonEmailAddress); - var generator = new SequentialGenerator(0, _personEmailAddressSource.Data.Count, listShouldBeUnique: true); - _uniquePersonEmailAddressSource = new Words(generator, new CachedFileDictionaryRepository(), - FromDictionary.PersonEmailAddress); + _fixture = fixture; } /// /// Generate and return a person email address. /// - /// The fixture to generate a value for. /// The generated value. - public static string PersonEmailAddress(this AnonymousValueFixture fixture) + public string EmailAddress() { - return fixture.Words(FromDictionary.PersonEmailAddress).Next(); + return _fixture.Words(FromDictionary.PersonEmailAddress).Next(); } /// /// Generate and return a person language. /// - /// The fixture to generate a value for. /// The generated value. - public static string PersonLanguage(this AnonymousValueFixture fixture) + public string Language() { - return fixture.Words(FromDictionary.PersonLanguage).Next(); + return _fixture.Words(FromDictionary.PersonLanguage).Next(); } /// /// Generate and return a person first name. /// - /// The fixture to generate a value for. /// The generated value. - public static string PersonNameFirst(this AnonymousValueFixture fixture) + public string NameFirst() { - return fixture.Words(FromDictionary.PersonNameFirst).Next(); + return _fixture.Words(FromDictionary.PersonNameFirst).Next(); } /// /// Generate and return a person female first name. /// - /// The fixture to generate a value for. /// The generated value. - public static string PersonNameFirstFemale(this AnonymousValueFixture fixture) + public string NameFirstFemale() { - return fixture.Words(FromDictionary.PersonNameFirstFemale).Next(); + return _fixture.Words(FromDictionary.PersonNameFirstFemale).Next(); } /// /// Generate and return a person male first name. /// - /// The fixture to generate a value for. /// The generated value. - public static string PersonNameFirstMale(this AnonymousValueFixture fixture) + public string NameFirstMale() { - return fixture.Words(FromDictionary.PersonNameFirstMale).Next(); + return _fixture.Words(FromDictionary.PersonNameFirstMale).Next(); } /// /// Generate and return a person full name. /// - /// The fixture to generate a value for. /// The generated value. - public static string PersonNameFull(this AnonymousValueFixture fixture) + public string NameFull() { - return fixture.Words(FromDictionary.PersonNameFull).Next(); + return _fixture.Words(FromDictionary.PersonNameFull).Next(); } /// /// Generate and return a person last name. /// - /// The fixture to generate a value for. /// The generated value. - public static string PersonNameLast(this AnonymousValueFixture fixture) + public string NameLast() { - return fixture.Words(FromDictionary.PersonNameLast).Next(); + return _fixture.Words(FromDictionary.PersonNameLast).Next(); } /// /// Generate and return a person name suffix. /// - /// The fixture to generate a value for. /// The generated value. - public static string PersonNameSuffix(this AnonymousValueFixture fixture) + public string NameSuffix() { - return fixture.Words(FromDictionary.PersonNameSuffix).Next(); + return _fixture.Words(FromDictionary.PersonNameSuffix).Next(); } /// /// Generate and return a person name title. /// - /// The fixture to generate a value for. /// The generated value. - public static string PersonNameTitle(this AnonymousValueFixture fixture) + public string NameTitle() { - return fixture.Words(FromDictionary.PersonNameTitle).Next(); + return _fixture.Words(FromDictionary.PersonNameTitle).Next(); } /// /// Generate and return a person password. /// - /// The fixture to generate a value for. /// The generated value. - public static string PersonPassword(this AnonymousValueFixture fixture) + public string Password() { - return fixture.Words(FromDictionary.PersonPassword).Next(); + return _fixture.Words(FromDictionary.PersonPassword).Next(); } /// /// Generate and return a person race. /// - /// The fixture to generate a value for. /// The generated value. - public static string PersonRace(this AnonymousValueFixture fixture) + public string Race() { - return fixture.Words(FromDictionary.PersonRace).Next(); + return _fixture.Words(FromDictionary.PersonRace).Next(); } /// /// Generate and return a person user name. /// - /// The fixture to generate a value for. /// The generated value. - public static string PersonUsername(this AnonymousValueFixture fixture) + public string Username() { - return fixture.Words(FromDictionary.PersonUsername).Next(); + return _fixture.Words(FromDictionary.PersonUsername).Next(); } - } } \ No newline at end of file diff --git a/TestStack.Dossier/EquivalenceClasses/PersonEquivalenceExtensions.cs b/TestStack.Dossier/EquivalenceClasses/PersonEquivalenceExtensions.cs new file mode 100644 index 0000000..8245a6e --- /dev/null +++ b/TestStack.Dossier/EquivalenceClasses/PersonEquivalenceExtensions.cs @@ -0,0 +1,38 @@ +using TestStack.Dossier.DataSources.Dictionaries; +using TestStack.Dossier.DataSources.Generators; + +// ReSharper disable once CheckNamespace +namespace TestStack.Dossier +{ + /// + /// Extension methods that describe equivalence classes for generating anonymous Person-related values. + /// + public static class PersonEquivalenceExtensions + { + private static Words _uniquePersonEmailAddressSource; + private static readonly AnonymousValueFixture Fixture = new AnonymousValueFixture(); + + /// + /// Generate and return a unique email address (within the fixture). + /// + /// The fixture to generate a unique email for + /// The generated unique email + public static string UniqueEmailAddress(this PersonEquivalence personEquivalence) + { + if (_uniquePersonEmailAddressSource == null) + { + InitializeUniqueEmailAddressSource(); + } + + return _uniquePersonEmailAddressSource.Next(); + } + + internal static void InitializeUniqueEmailAddressSource() + { + var recordCount = Fixture.Words(FromDictionary.PersonEmailAddress).Data.Count; + var generator = new SequentialGenerator(0, recordCount, listShouldBeUnique: true); + _uniquePersonEmailAddressSource = new Words(generator, new CachedFileDictionaryRepository(), + FromDictionary.PersonEmailAddress); + } + } +} \ No newline at end of file diff --git a/TestStack.Dossier/EquivalenceClasses/ShirtSizeEquivalence.cs b/TestStack.Dossier/EquivalenceClasses/ShirtSizeEquivalence.cs index 8c2224d..eadf468 100644 --- a/TestStack.Dossier/EquivalenceClasses/ShirtSizeEquivalence.cs +++ b/TestStack.Dossier/EquivalenceClasses/ShirtSizeEquivalence.cs @@ -17,6 +17,5 @@ public static string ShirtSize(this AnonymousValueFixture fixture) { return fixture.Words(FromDictionary.ShirtSize).Next(); } - } } diff --git a/TestStack.Dossier/Suppliers/DefaultEmailValueSupplier.cs b/TestStack.Dossier/Suppliers/DefaultEmailValueSupplier.cs index 554f9c6..62c1577 100644 --- a/TestStack.Dossier/Suppliers/DefaultEmailValueSupplier.cs +++ b/TestStack.Dossier/Suppliers/DefaultEmailValueSupplier.cs @@ -17,7 +17,7 @@ public bool CanSupplyValue(Type type, string propertyName) /// public object GenerateAnonymousValue(AnonymousValueFixture any, Type type, string propertyName) { - return any.PersonEmailAddress(); + return any.Person.EmailAddress(); } } } diff --git a/TestStack.Dossier/Suppliers/DefaultFirstNameValueSupplier.cs b/TestStack.Dossier/Suppliers/DefaultFirstNameValueSupplier.cs index d973f62..7d596ee 100644 --- a/TestStack.Dossier/Suppliers/DefaultFirstNameValueSupplier.cs +++ b/TestStack.Dossier/Suppliers/DefaultFirstNameValueSupplier.cs @@ -17,7 +17,7 @@ public bool CanSupplyValue(Type type, string propertyName) /// public object GenerateAnonymousValue(AnonymousValueFixture any, Type type, string propertyName) { - return any.PersonNameFirst(); + return any.Person.NameFirst(); } } } diff --git a/TestStack.Dossier/Suppliers/DefaultLastNameValueSupplier.cs b/TestStack.Dossier/Suppliers/DefaultLastNameValueSupplier.cs index 98781fb..9cfe877 100644 --- a/TestStack.Dossier/Suppliers/DefaultLastNameValueSupplier.cs +++ b/TestStack.Dossier/Suppliers/DefaultLastNameValueSupplier.cs @@ -18,7 +18,7 @@ public bool CanSupplyValue(Type type, string propertyName) /// public object GenerateAnonymousValue(AnonymousValueFixture any, Type type, string propertyName) { - return any.PersonNameLast(); + return any.Person.NameLast(); } } } diff --git a/TestStack.Dossier/TestStack.Dossier.csproj b/TestStack.Dossier/TestStack.Dossier.csproj index f76a197..6643fca 100644 --- a/TestStack.Dossier/TestStack.Dossier.csproj +++ b/TestStack.Dossier/TestStack.Dossier.csproj @@ -75,6 +75,7 @@ + From 0e789f51bff31bc470a65007ded79d780072fad6 Mon Sep 17 00:00:00 2001 From: Michael Whelan Date: Sun, 14 Feb 2016 13:17:05 +0000 Subject: [PATCH 5/5] Marked old equivalence methods obsolete and fixed one breaking change. --- .../FrequencyEquivalenceTests.cs | 2 +- ...piChecked_ShouldHaveNoChanges.approved.txt | 21 +++++++++++++++---- .../EquivalenceClasses/Equivalence.cs | 8 ------- .../FrequencyEquivalence.cs | 20 +++++------------- .../Geo/GeographyEquivalenceClassescs.cs | 10 +++++++-- .../Person/PersonEquivalenceClasses.cs | 14 ++++++++++++- 6 files changed, 44 insertions(+), 31 deletions(-) diff --git a/TestStack.Dossier.Tests/EquivalenceClasses/FrequencyEquivalenceTests.cs b/TestStack.Dossier.Tests/EquivalenceClasses/FrequencyEquivalenceTests.cs index 3a80bb8..d817874 100644 --- a/TestStack.Dossier.Tests/EquivalenceClasses/FrequencyEquivalenceTests.cs +++ b/TestStack.Dossier.Tests/EquivalenceClasses/FrequencyEquivalenceTests.cs @@ -22,7 +22,7 @@ protected override List GetData() return new List { new object[] - {new Words(FromDictionary.Frequency), GenerateTestCasesForSut(Any.Frequency.Frequency)} + {new Words(FromDictionary.Frequency), GenerateTestCasesForSut(Any.Frequency)} }; } } diff --git a/TestStack.Dossier.Tests/PublicApiApproval/PublicApiApproverTests.GivenDossierAssembly_WhenPublicApiChecked_ShouldHaveNoChanges.approved.txt b/TestStack.Dossier.Tests/PublicApiApproval/PublicApiApproverTests.GivenDossierAssembly_WhenPublicApiChecked_ShouldHaveNoChanges.approved.txt index 47e8b5c..efccd75 100644 --- a/TestStack.Dossier.Tests/PublicApiApproval/PublicApiApproverTests.GivenDossierAssembly_WhenPublicApiChecked_ShouldHaveNoChanges.approved.txt +++ b/TestStack.Dossier.Tests/PublicApiApproval/PublicApiApproverTests.GivenDossierAssembly_WhenPublicApiChecked_ShouldHaveNoChanges.approved.txt @@ -56,7 +56,6 @@ namespace TestStack.Dossier public static System.Collections.Generic.IEnumerable DefaultValueSuppliers { get; } public TestStack.Dossier.FinanceEquivalence Finance { get; } public Ploeh.AutoFixture.Fixture Fixture { get; } - public TestStack.Dossier.FrequencyEquivalence Frequency { get; } public TestStack.Dossier.GeoEquivalence Geography { get; } public static System.Collections.Generic.ICollection GlobalValueSuppliers { get; } public TestStack.Dossier.IdentifierEquivalence Identifier { get; } @@ -103,10 +102,9 @@ namespace TestStack.Dossier public string Currency() { } public string CurrencyCode() { } } - public class FrequencyEquivalence + public class static FrequencyEquivalence { - public FrequencyEquivalence(TestStack.Dossier.AnonymousValueFixture fixture) { } - public string Frequency() { } + public static string Frequency(this TestStack.Dossier.AnonymousValueFixture fixture) { } } public class GeoEquivalence { @@ -482,10 +480,15 @@ namespace TestStack.Dossier.EquivalenceClasses.Geo public class static GeographyEquivalenceClassescs { + [System.ObsoleteAttribute("Continent is deprecated, please use Geography.Continent instead.")] public static string Continent(this TestStack.Dossier.AnonymousValueFixture fixture) { } + [System.ObsoleteAttribute("Country is deprecated, please use Geography.Country instead.")] public static string Country(this TestStack.Dossier.AnonymousValueFixture fixture) { } + [System.ObsoleteAttribute("CountryCode is deprecated, please use Geography.CountryCode instead.")] public static string CountryCode(this TestStack.Dossier.AnonymousValueFixture fixture) { } + [System.ObsoleteAttribute("Latitude is deprecated, please use Geography.Latitude instead.")] public static string Latitude(this TestStack.Dossier.AnonymousValueFixture fixture) { } + [System.ObsoleteAttribute("Longitude is deprecated, please use Geography.Longitude instead.")] public static string Longitude(this TestStack.Dossier.AnonymousValueFixture fixture) { } } } @@ -494,15 +497,25 @@ namespace TestStack.Dossier.EquivalenceClasses.Person public class static PersonEquivalenceClasses { + [System.ObsoleteAttribute("EmailAddress is deprecated, please use Person.EmailAddress instead.")] public static string EmailAddress(this TestStack.Dossier.AnonymousValueFixture fixture) { } + [System.ObsoleteAttribute("FemaleFirstName is deprecated, please use Person.NameFirstFemale instead.")] public static string FemaleFirstName(this TestStack.Dossier.AnonymousValueFixture fixture) { } + [System.ObsoleteAttribute("FirstName is deprecated, please use Person.NameFirst instead.")] public static string FirstName(this TestStack.Dossier.AnonymousValueFixture fixture) { } + [System.ObsoleteAttribute("FullName is deprecated, please use Person.NameFull instead.")] public static string FullName(this TestStack.Dossier.AnonymousValueFixture fixture) { } + [System.ObsoleteAttribute("Language is deprecated, please use Person.Language instead.")] public static string Language(this TestStack.Dossier.AnonymousValueFixture fixture) { } + [System.ObsoleteAttribute("LastName is deprecated, please use Person.NameLast instead.")] public static string LastName(this TestStack.Dossier.AnonymousValueFixture fixture) { } + [System.ObsoleteAttribute("MaleFirstName is deprecated, please use Person.NameFirstMale instead.")] public static string MaleFirstName(this TestStack.Dossier.AnonymousValueFixture fixture) { } + [System.ObsoleteAttribute("Suffix is deprecated, please use Person.NameSuffix instead.")] public static string Suffix(this TestStack.Dossier.AnonymousValueFixture fixture) { } + [System.ObsoleteAttribute("Title is deprecated, please use Person.Title instead.")] public static string Title(this TestStack.Dossier.AnonymousValueFixture fixture) { } + [System.ObsoleteAttribute("UniqueEmailAddress is deprecated, please use Person.UniqueEmailAddress instead.")] public static string UniqueEmailAddress(this TestStack.Dossier.AnonymousValueFixture fixture) { } } } diff --git a/TestStack.Dossier/EquivalenceClasses/Equivalence.cs b/TestStack.Dossier/EquivalenceClasses/Equivalence.cs index 9912939..14a0002 100644 --- a/TestStack.Dossier/EquivalenceClasses/Equivalence.cs +++ b/TestStack.Dossier/EquivalenceClasses/Equivalence.cs @@ -54,14 +54,6 @@ public FinanceEquivalence Finance get { return new FinanceEquivalence(this); } } - /// - /// Equivalence classes for generating anonymous frequency-related values. - /// - public FrequencyEquivalence Frequency - { - get { return new FrequencyEquivalence(this); } - } - /// /// Equivalence classes for generating anonymous geography-related values. /// diff --git a/TestStack.Dossier/EquivalenceClasses/FrequencyEquivalence.cs b/TestStack.Dossier/EquivalenceClasses/FrequencyEquivalence.cs index 61d601e..5b2053e 100644 --- a/TestStack.Dossier/EquivalenceClasses/FrequencyEquivalence.cs +++ b/TestStack.Dossier/EquivalenceClasses/FrequencyEquivalence.cs @@ -4,28 +4,18 @@ namespace TestStack.Dossier { /// - /// Methods that describe equivalence classes for generating anonymous Frequency-related values. + /// Extension methods that describe equivalence classes for generating anonymous Frequency-related values. /// - public class FrequencyEquivalence + public static class FrequencyEquivalence { - private readonly AnonymousValueFixture _fixture; - - /// - /// Creates a new with the AnonymousValueFixture from the extension method. - /// - /// The - public FrequencyEquivalence(AnonymousValueFixture fixture) - { - _fixture = fixture; - } - /// /// Generate and return a frequency. /// + /// The fixture to generate a value for. /// The generated value. - public string Frequency() + public static string Frequency(this AnonymousValueFixture fixture) { - return _fixture.Words(FromDictionary.Frequency).Next(); + return fixture.Words(FromDictionary.Frequency).Next(); } } } \ No newline at end of file diff --git a/TestStack.Dossier/EquivalenceClasses/Geo/GeographyEquivalenceClassescs.cs b/TestStack.Dossier/EquivalenceClasses/Geo/GeographyEquivalenceClassescs.cs index 7687d4f..dcba4ff 100644 --- a/TestStack.Dossier/EquivalenceClasses/Geo/GeographyEquivalenceClassescs.cs +++ b/TestStack.Dossier/EquivalenceClasses/Geo/GeographyEquivalenceClassescs.cs @@ -1,4 +1,6 @@ -namespace TestStack.Dossier.EquivalenceClasses.Geo +using System; + +namespace TestStack.Dossier.EquivalenceClasses.Geo { /// /// Extension methods that describe equivalence classes for generating anonymous geography-related values. @@ -10,6 +12,7 @@ public static class GeographyEquivalenceClassescs /// /// The fixture to generate a continent for /// The generated continent + [Obsolete("Continent is deprecated, please use Geography.Continent instead.")] public static string Continent(this AnonymousValueFixture fixture) { return fixture.Geography.Continent(); @@ -20,6 +23,7 @@ public static string Continent(this AnonymousValueFixture fixture) /// /// The fixture to generate a country for /// The generated country + [Obsolete("Country is deprecated, please use Geography.Country instead.")] public static string Country(this AnonymousValueFixture fixture) { return fixture.Geography.Country(); @@ -30,17 +34,18 @@ public static string Country(this AnonymousValueFixture fixture) /// /// The fixture to generate a country code for /// The generated country code + [Obsolete("CountryCode is deprecated, please use Geography.CountryCode instead.")] public static string CountryCode(this AnonymousValueFixture fixture) { return fixture.Geography.CountryCode(); } - /// /// Generate and return a latitude coordinate. /// /// The fixture to generate a latitutde for /// The generated latitude + [Obsolete("Latitude is deprecated, please use Geography.Latitude instead.")] public static string Latitude(this AnonymousValueFixture fixture) { return fixture.Geography.Latitude(); @@ -51,6 +56,7 @@ public static string Latitude(this AnonymousValueFixture fixture) /// /// The fixture to generate a longitude for /// The generated longitude + [Obsolete("Longitude is deprecated, please use Geography.Longitude instead.")] public static string Longitude(this AnonymousValueFixture fixture) { return fixture.Geography.Longitude(); diff --git a/TestStack.Dossier/EquivalenceClasses/Person/PersonEquivalenceClasses.cs b/TestStack.Dossier/EquivalenceClasses/Person/PersonEquivalenceClasses.cs index cd1ac93..75bd46b 100644 --- a/TestStack.Dossier/EquivalenceClasses/Person/PersonEquivalenceClasses.cs +++ b/TestStack.Dossier/EquivalenceClasses/Person/PersonEquivalenceClasses.cs @@ -1,4 +1,6 @@ -namespace TestStack.Dossier.EquivalenceClasses.Person +using System; + +namespace TestStack.Dossier.EquivalenceClasses.Person { /// /// Extension methods that describe equivalence classes for generating anonymous person-related values. @@ -10,6 +12,7 @@ public static class PersonEquivalenceClasses /// /// The fixture to generate a email for /// The generated email + [Obsolete("EmailAddress is deprecated, please use Person.EmailAddress instead.")] public static string EmailAddress(this AnonymousValueFixture fixture) { return fixture.Person.EmailAddress(); @@ -20,6 +23,7 @@ public static string EmailAddress(this AnonymousValueFixture fixture) /// /// The fixture to generate a unique email for /// The generated unique email + [Obsolete("UniqueEmailAddress is deprecated, please use Person.UniqueEmailAddress instead.")] public static string UniqueEmailAddress(this AnonymousValueFixture fixture) { return fixture.Person.UniqueEmailAddress(); @@ -30,6 +34,7 @@ public static string UniqueEmailAddress(this AnonymousValueFixture fixture) /// /// The fixture to generate a language for /// The generated language + [Obsolete("Language is deprecated, please use Person.Language instead.")] public static string Language(this AnonymousValueFixture fixture) { return fixture.Person.Language(); @@ -40,6 +45,7 @@ public static string Language(this AnonymousValueFixture fixture) /// /// The fixture to generate a first name for /// The generated female first name + [Obsolete("FemaleFirstName is deprecated, please use Person.NameFirstFemale instead.")] public static string FemaleFirstName(this AnonymousValueFixture fixture) { return fixture.Person.NameFirstFemale(); @@ -50,6 +56,7 @@ public static string FemaleFirstName(this AnonymousValueFixture fixture) /// /// The fixture to generate a first name for /// The generated first name + [Obsolete("FirstName is deprecated, please use Person.NameFirst instead.")] public static string FirstName(this AnonymousValueFixture fixture) { return fixture.Person.NameFirst(); @@ -60,6 +67,7 @@ public static string FirstName(this AnonymousValueFixture fixture) /// /// The fixture to generate a full name for /// The generated full name + [Obsolete("FullName is deprecated, please use Person.NameFull instead.")] public static string FullName(this AnonymousValueFixture fixture) { return fixture.Person.NameFull(); @@ -70,6 +78,7 @@ public static string FullName(this AnonymousValueFixture fixture) /// /// The fixture to generate a last name for /// The generated last name + [Obsolete("LastName is deprecated, please use Person.NameLast instead.")] public static string LastName(this AnonymousValueFixture fixture) { return fixture.Person.NameLast(); @@ -80,6 +89,7 @@ public static string LastName(this AnonymousValueFixture fixture) /// /// The fixture to generate a male first name for /// The generated male first name + [Obsolete("MaleFirstName is deprecated, please use Person.NameFirstMale instead.")] public static string MaleFirstName(this AnonymousValueFixture fixture) { return fixture.Person.NameFirstMale(); @@ -90,6 +100,7 @@ public static string MaleFirstName(this AnonymousValueFixture fixture) /// /// The fixture to generate a suffix for /// The generated suffix + [Obsolete("Suffix is deprecated, please use Person.NameSuffix instead.")] public static string Suffix(this AnonymousValueFixture fixture) { return fixture.Person.NameSuffix(); @@ -100,6 +111,7 @@ public static string Suffix(this AnonymousValueFixture fixture) /// /// The fixture to generate a title for /// The generated title + [Obsolete("Title is deprecated, please use Person.Title instead.")] public static string Title(this AnonymousValueFixture fixture) { return fixture.Person.NameTitle();