diff --git a/VERSION b/VERSION index 64799d5..5f7d27c 100644 Binary files a/VERSION and b/VERSION differ diff --git a/make.ps1 b/make.ps1 index 242b325..4904c1c 100644 --- a/make.ps1 +++ b/make.ps1 @@ -158,8 +158,6 @@ if($buildType -eq "package"){ build test pack - - exit } if($buildType -eq "clean"){ diff --git a/src/TestDataGenerator.Core.Tests/TestDataGenerator.Core.Tests.csproj b/src/TestDataGenerator.Core.Tests/TestDataGenerator.Core.Tests.csproj index a28bedf..54893c4 100644 --- a/src/TestDataGenerator.Core.Tests/TestDataGenerator.Core.Tests.csproj +++ b/src/TestDataGenerator.Core.Tests/TestDataGenerator.Core.Tests.csproj @@ -57,9 +57,9 @@ false - + False - ..\packages\Eloquent.1.0.1.1\lib\net45\Eloquent.dll + ..\packages\Eloquent.1.0.2.0\lib\net45\Eloquent.dll diff --git a/src/TestDataGenerator.Core.Tests/TextTests.cs b/src/TestDataGenerator.Core.Tests/TextTests.cs index 4d0aee7..e73c60b 100644 --- a/src/TestDataGenerator.Core.Tests/TextTests.cs +++ b/src/TestDataGenerator.Core.Tests/TextTests.cs @@ -1,13 +1,13 @@ using System; +using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Globalization; using System.IO; +using System.Linq; using System.Text.RegularExpressions; using Eloquent; using Microsoft.VisualStudio.TestTools.UnitTesting; using TestDataGenerator.Core; -using TestDataGenerator.Core.Exceptions; -using TestDataGenerator.Core.Generators; namespace TestDataGenerator.Tests { @@ -23,7 +23,7 @@ public class TextTests public void Can_GenerateFromTemplate_Overload() { var template = @"Generated <<\L\L>>"; - string text = AlphaNumericGenerator.GenerateFromTemplate(template); + string text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); StringAssert.Matches(text, new Regex(@"Generated [A-Z]{2}")); } @@ -34,7 +34,7 @@ public void Can_GenerateFromTemplate_Overload2() { var template = @"Generated <<\L\L>>"; var random = new Random(100); - string text = AlphaNumericGenerator.GenerateFromTemplate(template, random); + string text = AlphanumericGenerator.GenerateFromTemplate(template, random); Console.WriteLine(@"'{0}' produced '{1}'", template, text); StringAssert.Matches(text, new Regex(@"Generated [A-Z]{2}")); } @@ -45,7 +45,7 @@ public void Can_GenerateFromTemplate_Overload3() { var template = @"Generated <<\L\L>>"; var config = new GenerationConfig() {Seed = 100}; - string text = AlphaNumericGenerator.GenerateFromTemplate(template, config); + string text = AlphanumericGenerator.GenerateFromTemplate(template, config); Console.WriteLine(@"'{0}' produced '{1}'", template, text); StringAssert.Matches(text, new Regex(@"Generated [A-Z]{2}")); } @@ -58,7 +58,7 @@ public void Can_GenerateFromTemplate_Overload4() var namedPatterns = new NamedPatterns(); namedPatterns.Patterns.Add(new NamedPattern(){Name = "superhero", Pattern = "(Batman|Superman|Spiderman)"}); - string text = AlphaNumericGenerator.GenerateFromTemplate(template, namedPatterns); + string text = AlphanumericGenerator.GenerateFromTemplate(template, namedPatterns); Console.WriteLine(@"'{0}' produced '{1}'", template, text); StringAssert.Matches(text, new Regex(@"(Batman|Superman|Spiderman)")); } @@ -72,7 +72,7 @@ public void Can_GenerateFromTemplate_Overload5() var namedPatterns = new NamedPatterns(); namedPatterns.Patterns.Add(new NamedPattern() { Name = "superhero", Pattern = "(Batman|Superman|Spiderman)" }); var config = new GenerationConfig() { Seed = 100 }; - string text = AlphaNumericGenerator.GenerateFromTemplate(template, namedPatterns, config); + string text = AlphanumericGenerator.GenerateFromTemplate(template, namedPatterns, config); Console.WriteLine(@"'{0}' produced '{1}'", template, text); StringAssert.Matches(text, new Regex(@"(Batman|Superman|Spiderman)")); } @@ -88,7 +88,7 @@ public void Can_Load_File_Supplied_In_Config_Absolute() config.Random = random; config.PatternFiles.Add(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "tdg-patterns", "language.tdg-patterns")); - string text = AlphaNumericGenerator.GenerateFromTemplate(template, config); + string text = AlphanumericGenerator.GenerateFromTemplate(template, config); Console.WriteLine(@"'{0}' produced '{1}'", template, text); Assert.IsTrue(text.Length > 0); } @@ -102,7 +102,7 @@ public void Can_Load_File_Supplied_In_Config_Relative() var config = new GenerationConfig() { Seed = 100 }; config.PatternFiles.Add("language.tdg-patterns"); - string text = AlphaNumericGenerator.GenerateFromTemplate(template, config); + string text = AlphanumericGenerator.GenerateFromTemplate(template, config); Console.WriteLine(@"'{0}' produced '{1}'", template, text); Assert.IsTrue(text.Length > 0); } @@ -116,7 +116,7 @@ public void Can_Load_File_Supplied_In_Config_Relative_No_Extension() var config = new GenerationConfig() { Seed = 100 }; config.PatternFiles.Add("language"); - string text = AlphaNumericGenerator.GenerateFromTemplate(template, config); + string text = AlphanumericGenerator.GenerateFromTemplate(template, config); Console.WriteLine(@"'{0}' produced '{1}'", template, text); Assert.IsTrue(text.Length > 0); } @@ -126,7 +126,7 @@ public void Can_Load_File_Supplied_In_Config_Relative_No_Extension() public void Can_Escape_Template() { var template = @"Generated \<<\L\L>>"; - string text = AlphaNumericGenerator.GenerateFromTemplate(template); + string text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); Assert.AreEqual(text, @"Generated <<\L\L>>"); } @@ -136,7 +136,7 @@ public void Can_Escape_Template() public void Can_UnEscape_Template() { var template = @"Generated \\<<\L\L>>"; - string text = AlphaNumericGenerator.GenerateFromTemplate(template); + string text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); StringAssert.Matches(text, new Regex(@"Generated \\\\[A-Z]{2}")); } @@ -147,13 +147,13 @@ public void Can_UnEscape_Template() public void Can_Escape_Config() { var template = @"\<# blah #>abc"; - string text = AlphaNumericGenerator.GenerateFromTemplate(template); + string text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); Assert.AreEqual(@"\<# blah #>abc", text); // space at start template = @". <# blah #>abc"; - text = AlphaNumericGenerator.GenerateFromTemplate(template); + text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); Assert.AreEqual(@". <# blah #>abc", text); } @@ -163,7 +163,7 @@ public void Can_Escape_Config() public void Can_Generate_From_Template_No_Symbols() { var template = "Generated <>"; - string text = AlphaNumericGenerator.GenerateFromTemplate(template); + string text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); StringAssert.Matches(text, new Regex(@"Generated [L]{2}")); } @@ -173,7 +173,7 @@ public void Can_Generate_From_Template_No_Symbols() public void Can_Generate_From_Template_for_ReadMe1() { var template = @"Hi there <<\L\v{0,2}\l{0,2}\v \L\v{0,2}\l{0,2}\v{0,2}\l{0,2}\l>> how are you doing?"; - string text = AlphaNumericGenerator.GenerateFromTemplate(template); + string text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); StringAssert.Matches(text, new Regex(@"Hi there [A-Z][aeiou]{0,2}[a-z]{0,2}[aeiou] [A-Z][aeiou]{0,2}[a-z]{0,2}[aeiou]{0,2}[a-z]{0,2}[a-z] how are you doing\?")); } @@ -183,7 +183,7 @@ public void Can_Generate_From_Template_for_ReadMe1() public void Can_Generate_From_Template_for_ReadMe2() { var template = @"<>"; - string text = AlphaNumericGenerator.GenerateFromTemplate(template); + string text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); StringAssert.Matches(text, new Regex(@"aa[1-9]\d{2}-\d{2}-\d{4}")); } @@ -194,7 +194,7 @@ public void Can_Generate_From_Template_for_ReadMe3() { var template = @"Hi there <<\L\v{0,2}\l{0,2}\v \L\v{0,2}\l{0,2}\v{0,2}\l{0,2}\l>> how are you doing? Your SSN is <<[1-9]\d\d-\d\d-\d\d\d\d>>"; - string text = AlphaNumericGenerator.GenerateFromTemplate(template); + string text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); StringAssert.Matches(text, new Regex(@"Hi there [A-Z][aeiou]{0,2}[a-z]{0,2}[aeiou] [A-Z][aeiou]{0,2}[a-z]{0,2}[aeiou]{0,2}[a-z]{0,2}[a-z] how are you doing\? Your SSN is [1-9]\d{2}-\d{2}-\d{4}")); @@ -205,7 +205,7 @@ public void Can_Generate_From_Template_for_ReadMe3() public void Can_Generate_From_Template_with_Symbols() { var template = @"Generated <>"; - string text = AlphaNumericGenerator.GenerateFromTemplate(template); + string text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); StringAssert.Matches(text, new Regex(@"Generated [L][A-Z]")); } @@ -215,7 +215,7 @@ public void Can_Generate_From_Template_with_Symbols() public void Can_Generate_From_Template_Multiple() { var template = @"Generated <<\L\L>> and <<(\d){5}>> with <<\d>>"; - string text = AlphaNumericGenerator.GenerateFromTemplate(template); + string text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); StringAssert.Matches(text, new Regex(@"Generated [A-Z]{2} and [0-9]{5} with [0-9]")); } @@ -225,7 +225,7 @@ public void Can_Generate_From_Template_Multiple() public void Can_Generate_From_Template_Harder() { var template = @"This is a very basic <<(\l){10}>> which can be used to create <<\l\l\l\l>> of varying <<\l\l\l\l\l>>. The main purpose is to generate dummy <<\L\l\l\l>> which can be used for <<\l\l\l\l\l\l\l>>."; - string text = AlphaNumericGenerator.GenerateFromTemplate(template); + string text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); StringAssert.Matches(text, new Regex(@"This is a very basic [a-z]{10} which can be used to create [a-z]{4} of varying [a-z]{5}. The main purpose is to generate dummy [A-Z][a-z]{3} which can be used for [a-z]{7}.")); } @@ -235,7 +235,7 @@ public void Can_Generate_From_Template_Harder() public void Can_Generate_From_Template_With_Alternatives_Symbols() { var template = @"<<\C|\c{10}|\V\V\V|\v{2,3}>>"; - string text = AlphaNumericGenerator.GenerateFromTemplate(template); + string text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); StringAssert.Matches(text, new Regex(@"[BCDFGHJKLMNPQRSTVWXYZ]{1}|[bcdfghjklmnpqrstvwxyz]{10}|[AEIOU]{3}|[aeiou]{2,3}")); } @@ -245,7 +245,7 @@ public void Can_Generate_From_Template_With_Alternatives_Symbols() public void Can_Generate_From_Template_With_Alternative_Groups() { var template = @"<<(\C)|\c{10}|(\V\V\V){20}|(\v\v\v\v\v){2,3}>>"; - string text = AlphaNumericGenerator.GenerateFromTemplate(template); + string text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); StringAssert.Matches(text, new Regex(@"[BCDFGHJKLMNPQRSTVWXYZ]{1}|[bcdfghjklmnpqrstvwxyz]{10}|[AEIOU]{60}|[aeiou]{10,15}")); } @@ -255,7 +255,7 @@ public void Can_Generate_From_Template_With_Alternative_Groups() public void Can_Generate_From_Pattern_With_Alternatives() { var template = @"Alternatives <<\C|(\c){10}|\V\V\V|\v{2,3}>>"; - string text = AlphaNumericGenerator.GenerateFromTemplate(template); + string text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); StringAssert.Matches(text, new Regex(@"Alternatives ([BCDFGHJKLMNPQRSTVWXYZ]{1}|[bcdfghjklmnpqrstvwxyz]{10}|[AEIOU]{3}|[aeiou]{2,3})")); } @@ -265,7 +265,7 @@ public void Can_Generate_From_Pattern_With_Alternatives() public void Can_Generate_From_Pattern_With_Alternatives2() { var template = @"Alternatives <<(A|B){1000}>>"; - string text = AlphaNumericGenerator.GenerateFromTemplate(template); + string text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); StringAssert.Matches(text, new Regex(@"Alternatives ([BCDFGHJKLMNPQRSTVWXYZ]{1}|[bcdfghjklmnpqrstvwxyz]{10}|[AEIOU]{3}|[aeiou]{2,3})")); } @@ -276,7 +276,7 @@ public void Can_Generate_From_Pattern_With_Alternatives2() public void Can_Generate_From_Pattern_With_Alternatives_Repeated_Symbols() { var template = @"Alternatives <<(\C{1}|\c{10}|\V{3}|\v{2,3})>>"; - string text = AlphaNumericGenerator.GenerateFromTemplate(template); + string text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); StringAssert.Matches(text, new Regex(@"Alternatives ([BCDFGHJKLMNPQRSTVWXYZ]{1})|([bcdfghjklmnpqrstvwxyz]{10})|([AEIOU]{3}|[aeiou]{2,3})")); if (text.Contains("|")) Assert.Fail(text); @@ -287,7 +287,7 @@ public void Can_Generate_From_Pattern_With_Alternatives_Repeated_Symbols() public void Can_Generate_From_Pattern_With_calculated_quantity() { var template = @"<<\v{2,3}>>"; - string text = AlphaNumericGenerator.GenerateFromTemplate(template); + string text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); StringAssert.Matches(text, new Regex(@"([aeiou]{2,3})")); if (text.Contains("|")) Assert.Fail(text); @@ -302,7 +302,7 @@ public void Can_Generate_From_Pattern_With_calculated_quantity() public void Can_Escape_Sets() { var template = @"<<\[LL]>>"; - string text = AlphaNumericGenerator.GenerateFromTemplate(template); + string text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); StringAssert.Matches(text, new Regex(@"^\[LL]$")); } @@ -312,7 +312,7 @@ public void Can_Escape_Sets() public void Can_Generate_NonRange_Set() { var template = @"<<[AEI]>>"; - string text = AlphaNumericGenerator.GenerateFromTemplate(template); + string text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); StringAssert.Matches(text, new Regex(@"^[AEI]{1}$")); } @@ -322,7 +322,7 @@ public void Can_Generate_NonRange_Set() public void Can_Generate_Range_Set() { var template = @"<<[A-I]>>"; - string text = AlphaNumericGenerator.GenerateFromTemplate(template); + string text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); StringAssert.Matches(text, new Regex(@"^[ABCDEFGHI]{1}$")); } @@ -332,7 +332,7 @@ public void Can_Generate_Range_Set() public void Can_Generate_Range_Set_Lower() { var template = @"<<[a-i]>>"; - string text = AlphaNumericGenerator.GenerateFromTemplate(template); + string text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); StringAssert.Matches(text, new Regex(@"^[abcdefghi]{1}$")); } @@ -342,7 +342,7 @@ public void Can_Generate_Range_Set_Lower() public void Can_Generate_Range_Set2() { var template = @"<<[A-B]>>"; - string text = AlphaNumericGenerator.GenerateFromTemplate(template); + string text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); StringAssert.Matches(text, new Regex(@"^[AB]{1}$")); } @@ -352,7 +352,7 @@ public void Can_Generate_Range_Set2() public void Can_Generate_Range_Set3() { var template = @"<<[W-X]>>"; - string text = AlphaNumericGenerator.GenerateFromTemplate(template); + string text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); StringAssert.Matches(text, new Regex(@"^[W-X]{1}$")); } @@ -362,7 +362,7 @@ public void Can_Generate_Range_Set3() public void Can_Generate_Range_Repeated_Set1() { var template = @"<<[W-X]{10}>>"; - string text = AlphaNumericGenerator.GenerateFromTemplate(template); + string text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); StringAssert.Matches(text, new Regex(@"^[W-X]{10}$")); } @@ -373,7 +373,7 @@ public void Can_Generate_Range_Repeated_Set1() public void Can_Generate_Range_Repeated_Set2() { var template = @"<<([W-X]{10}[W-X]{10})>>"; - string text = AlphaNumericGenerator.GenerateFromTemplate(template); + string text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); StringAssert.Matches(text, new Regex(@"^[W-X]{10}[W-X]{10}$")); } @@ -383,7 +383,7 @@ public void Can_Generate_Range_Repeated_Set2() public void Can_Generate_Range_Repeated_Set3() { var template = @"<<([W-X]{10,100}[1-9]{10,100})>>"; - string text = AlphaNumericGenerator.GenerateFromTemplate(template); + string text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); StringAssert.Matches(text, new Regex(@"^[W-X]{10,100}[1-9]{10,100}$")); } @@ -394,7 +394,7 @@ public void Can_Generate_Range_Repeated_Set4() { // empty repeat expressions should result in a single instance - {} == {1} var template = @"<<([W-X]{})>>"; - string text = AlphaNumericGenerator.GenerateFromTemplate(template); + string text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); StringAssert.Matches(text, new Regex(@"^[W-X]$")); } @@ -405,7 +405,7 @@ public void Can_Generate_Range_Repeated_Set4() public void Can_Generate_Range_Numeric() { var template = @"<<[1-9]>>"; - string text = AlphaNumericGenerator.GenerateFromTemplate(template); + string text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); StringAssert.Matches(text, new Regex(@"^[1-9]$")); } @@ -415,7 +415,7 @@ public void Can_Generate_Range_Numeric() public void Can_Generate_Range_Numeric5() { var template = @"<<[1-8]>>"; - string text = AlphaNumericGenerator.GenerateFromTemplate(template); + string text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); StringAssert.Matches(text, new Regex(@"^[1-8]$")); } @@ -425,7 +425,7 @@ public void Can_Generate_Range_Numeric5() public void Can_Generate_Range_Numeric2() { var template = @"<<[100-150]>>"; - string text = AlphaNumericGenerator.GenerateFromTemplate(template); + string text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); int e = int.Parse(text); if(e < 100 || e>150) Assert.Fail("Number not between 100 and 150."); @@ -436,7 +436,7 @@ public void Can_Generate_Range_Numeric2() public void Can_Generate_Range_Numeric3() { var template = @"<<(.[100-101]){3}>>"; - string text = AlphaNumericGenerator.GenerateFromTemplate(template); + string text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); StringAssert.Matches(text, new Regex(@"^(.(100|101)){1}(.(100|101)){1}(.(100|101)){1}$")); } @@ -446,7 +446,7 @@ public void Can_Generate_Range_Numeric3() public void Can_Generate_Range_Numeric4() { var template = @"<<(.[100-101]){1,3}>>"; - string text = AlphaNumericGenerator.GenerateFromTemplate(template); + string text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); StringAssert.Matches(text, new Regex(@"^(.(100|101))?(.(100|101))?(.(100|101))?$")); } @@ -456,7 +456,7 @@ public void Can_Generate_Range_Numeric4() public void Can_Generate_Range_Numeric_DecimalFormat() { var template = @"<<([1.00-10.00])>>"; - string text = AlphaNumericGenerator.GenerateFromTemplate(template); + string text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); double d; if (!double.TryParse(text, out d)) @@ -469,7 +469,7 @@ public void Can_Generate_Range_Numeric_DecimalFormat() public void Can_Generate_Range_Numeric_DecimalFormat2() { var template = @"<<([1.00-2.00])>>"; - string text = AlphaNumericGenerator.GenerateFromTemplate(template); + string text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); double d; if (!double.TryParse(text, out d)) @@ -482,7 +482,7 @@ public void Can_Generate_Range_Numeric_DecimalFormat2() public void Can_Generate_Range_Numeric_DecimalFormat3() { var template = @"<<([1.1-1.2])>>"; - string text = AlphaNumericGenerator.GenerateFromTemplate(template); + string text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); double d; if (!double.TryParse(text, out d)) @@ -495,7 +495,7 @@ public void Can_Generate_Range_Numeric_DecimalFormat3() public void Can_Generate_Range_Numeric_DecimalFormat4() { var template = @"<<([12345.12345-12345.12346])>>"; - string text = AlphaNumericGenerator.GenerateFromTemplate(template); + string text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); double d; if (!double.TryParse(text, out d)) @@ -508,7 +508,7 @@ public void Can_Generate_Range_Numeric_DecimalFormat4() public void Can_Generate_Range_Numeric_DecimalFormat5() { var template = @"<<([12345.9999-12346])>>"; - string text = AlphaNumericGenerator.GenerateFromTemplate(template); + string text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); double d; if (!double.TryParse(text, out d)) @@ -521,7 +521,7 @@ public void Can_Generate_Range_Numeric_DecimalFormat5() public void Can_Generate_MultipleRange_Set() { var template = @"<<[A-B][1-3]>>"; - string text = AlphaNumericGenerator.GenerateFromTemplate(template); + string text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); StringAssert.Matches(text, new Regex(@"^[A-B]{1}[1-3]{1}$")); } @@ -531,7 +531,7 @@ public void Can_Generate_MultipleRange_Set() public void Can_Generate_MultipleRange_Set2() { var template = @"<<[1-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]>>"; - string text = AlphaNumericGenerator.GenerateFromTemplate(template); + string text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); StringAssert.Matches(text, new Regex(@"^[1-9]{1}[0-9]{1}[0-9]{1}-[0-9]{1}[0-9]{1}-[0-9]{1}[0-9]{1}[0-9]{1}[0-9]{1}$")); } @@ -541,7 +541,7 @@ public void Can_Generate_MultipleRange_Set2() public void Can_Generate_MultipleRange_Set3() { var template = @"<<[1-28]/[1-12]/[1960-2013]>>"; - string text = AlphaNumericGenerator.GenerateFromTemplate(template); + string text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); DateTime dt; if(DateTime.TryParseExact(text, @"d/M/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal, out dt) == false) Assert.Fail("invalid Date"); @@ -553,7 +553,7 @@ public void Can_Generate_MultipleRange_Set3() public void Can_Generate_MultipleRange_Set4() { var template = @"<<[a-c1-3_]{100}>>"; - string text = AlphaNumericGenerator.GenerateFromTemplate(template); + string text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); StringAssert.Matches(text, new Regex(@"^[a-c1-3_]{100}$")); Assert.IsTrue(text.Contains("_")); // check that we have produced at least 1 underscore. @@ -564,7 +564,7 @@ public void Can_Generate_MultipleRange_Set4() public void Can_Generate_MultipleRange_Set5() { var template = @"<<[a-c1-3_*?ABC]{100}>>"; - string text = AlphaNumericGenerator.GenerateFromTemplate(template); + string text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); StringAssert.Matches(text, new Regex(@"^[a-c1-3_*?ABC]{100}$")); Assert.IsTrue(text.Contains("_")); @@ -585,11 +585,11 @@ public void Can_BuildErrorSnippet_Start() { var template = @"This is a long string. This is a long string. This is a long string. This is a long string. This is a long string. This is a long string. This is a long string. This is a long string. This is a long string. This is a long string. "; int ndx = 0; - string text = AlphaNumericGenerator.BuildErrorSnippet(template, ndx); + string text = AlphanumericGenerator.BuildErrorSnippet(template, ndx); Console.WriteLine(@"Error Snippet for '{0}' at index {1} produced '{2}'", template, ndx, text); - Assert.AreEqual(AlphaNumericGenerator.ErrorContext*2+4, text.Length); + Assert.AreEqual(AlphanumericGenerator.ErrorContext*2+4, text.Length); } [TestMethod] @@ -598,11 +598,11 @@ public void Can_BuildErrorSnippet_End() { var template = @"This is a long string. This is a long string. This is a long string. This is a long string. This is a long string. This is a long string. This is a long string. This is a long string. This is a long string. This is a long string. "; int ndx = template.Length-1; - string text = AlphaNumericGenerator.BuildErrorSnippet(template, ndx); + string text = AlphanumericGenerator.BuildErrorSnippet(template, ndx); Console.WriteLine(@"Error Snippet for '{0}' at index {1} produced '{2}'", template, ndx, text); - Assert.AreEqual(AlphaNumericGenerator.ErrorContext*2+4, text.Length); + Assert.AreEqual(AlphanumericGenerator.ErrorContext*2+4, text.Length); } [TestMethod] @@ -610,12 +610,12 @@ at index {1} produced public void Can_BuildErrorSnippet_Middle() { var template = @"This is a long string. This is a long string. This is a long string. This is a long string. This is a long string. This is a long string. This is a long string. This is a long string. This is a long string. This is a long string. "; - int ndx = AlphaNumericGenerator.ErrorContext + 20; - string text = AlphaNumericGenerator.BuildErrorSnippet(template, ndx); + int ndx = AlphanumericGenerator.ErrorContext + 20; + string text = AlphanumericGenerator.BuildErrorSnippet(template, ndx); Console.WriteLine(@"Error Snippet for '{0}' at index {1} produced '{2}'", template, ndx, text); - Assert.AreEqual(AlphaNumericGenerator.ErrorContext * 4 + 4, text.Length); + Assert.AreEqual(AlphanumericGenerator.ErrorContext * 4 + 4, text.Length); } [TestMethod] @@ -624,7 +624,7 @@ public void Can_BuildErrorSnippet1() { var template = @"([100-900]{40])"; int ndx = 12; - string text = AlphaNumericGenerator.BuildErrorSnippet(template, ndx); + string text = AlphanumericGenerator.BuildErrorSnippet(template, ndx); Console.WriteLine(@"Error Snippet for '{0}' at index {1} produced '{2}'", template, ndx, text); @@ -637,7 +637,7 @@ public void Can_BuildErrorSnippet2() { var template = @"([100-900]{40])"; int ndx = 12; - string text = AlphaNumericGenerator.BuildErrorSnippet(template, ndx); + string text = AlphanumericGenerator.BuildErrorSnippet(template, ndx); Console.WriteLine(@"Error Snippet for '{0}' at index {1} produced '{2}'", template, ndx, text); @@ -653,7 +653,7 @@ at index {1} produced public void GeneratePattern_Overloads() { var pattern = @"\L\L\L\L\L\L-\L\L-\L\L\L\L\L"; - var text = AlphaNumericGenerator.GenerateFromPattern(pattern); + var text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); Assert.AreEqual(15, text.Length); StringAssert.Matches(text, new Regex("[A-Z]{6}-[A-Z]{2}-[A-Z]{5}")); @@ -665,7 +665,7 @@ public void GeneratePattern_Overloads2() { var pattern = @"\L\L\L\L\L\L-\L\L-\L\L\L\L\L"; var config = new GenerationConfig(){Seed = 300}; - var text = AlphaNumericGenerator.GenerateFromPattern(pattern, config); + var text = AlphanumericGenerator.GenerateFromPattern(pattern, config); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); Assert.AreEqual(15, text.Length); Assert.AreEqual(text,"LVMPQS-IY-CXIRW"); @@ -681,7 +681,7 @@ public void GeneratePattern_Overloads3() var namedPatterns = new NamedPatterns(); namedPatterns.Patterns.Add(new NamedPattern(){Name = "superhero", Pattern = "(Batman|Superman|Spiderman)"}); - var text = AlphaNumericGenerator.GenerateFromPattern(pattern, namedPatterns); + var text = AlphanumericGenerator.GenerateFromPattern(pattern, namedPatterns); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); StringAssert.Matches(text, new Regex("^(Batman|Superman|Spiderman)$")); } @@ -696,7 +696,7 @@ public void GeneratePattern_Overloads4() namedPatterns.Patterns.Add(new NamedPattern() { Name = "superhero", Pattern = "(Batman|Superman|Spiderman)" }); var config = new GenerationConfig() {Seed = 300}; - var text = AlphaNumericGenerator.GenerateFromPattern(pattern, namedPatterns,config); + var text = AlphanumericGenerator.GenerateFromPattern(pattern, namedPatterns,config); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); StringAssert.Matches(text, new Regex("^(Batman|Superman|Spiderman)$")); } @@ -709,7 +709,7 @@ public void GeneratePattern_Overloads5() var random = new Random(1); - var text = AlphaNumericGenerator.GenerateFromPattern(pattern, random); + var text = AlphanumericGenerator.GenerateFromPattern(pattern, random); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); StringAssert.Matches(text, new Regex("^[A-Z]{2}$")); Assert.AreEqual("CU", text); @@ -726,7 +726,7 @@ public void GeneratePattern_Overloads6() var config = new GenerationConfig() {Seed = 300}; - var text = AlphaNumericGenerator.GenerateFromPattern(pattern, namedPatterns, config); + var text = AlphanumericGenerator.GenerateFromPattern(pattern, namedPatterns, config); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); StringAssert.Matches(text, new Regex("^(Batman|Superman|Spiderman)$")); Assert.AreEqual("Superman", text); @@ -739,32 +739,32 @@ public void Can_Generate_AlphaNumeric_multiple() { var pattern = @"\L\L\L\L\L\L-\L\L-\L\L\L\L\L"; - var text = AlphaNumericGenerator.GenerateFromPattern(pattern); + var text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); Assert.AreEqual(15, text.Length); StringAssert.Matches(text, new Regex("[A-Z]{6}-[A-Z]{2}-[A-Z]{5}")); pattern = @"\l\l\l\l\l\l"; - text = AlphaNumericGenerator.GenerateFromPattern(pattern); + text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); Assert.AreEqual(6, text.Length); StringAssert.Matches(text, new Regex("[a-z]*")); pattern = @"\d\d\d\d\d\d\L\L\L\L\l\l\l\l"; - text = AlphaNumericGenerator.GenerateFromPattern(pattern); + text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); Assert.AreEqual(14, text.Length); StringAssert.Matches(text, new Regex("[0-9]{6}[A-Z]{4}[a-z]{4}")); pattern = @"\d\d\d-\d\d-\d\d\d\d"; - text = AlphaNumericGenerator.GenerateFromPattern(pattern); + text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); Assert.AreEqual(11, text.Length); StringAssert.Matches(text, new Regex(@"[\d]{3}-[\d]{2}-[\d]{4}")); //Test for escaped characters. pattern = @"L\LLLLL"; - text = AlphaNumericGenerator.GenerateFromPattern(pattern); + text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); Assert.AreEqual(6, text.Length); StringAssert.Matches(text, new Regex("L[A-Z]{1}LLLL")); @@ -776,7 +776,7 @@ public void Can_Generate_AlphaNumeric() { var pattern = @"\L\l\V\v\C\c\d\d"; - string text = AlphaNumericGenerator.GenerateFromPattern(pattern); + string text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); StringAssert.Matches(text, new Regex(@"[A-Z]{1}[a-z]{1}[AEIOU]{1}[aeiou]{1}[QWRTYPSDFGHJKLZXCVBNM]{1}[qwrtypsdfghjklzxcvbnm]{1}[\d]{1}[\d]{1}")); @@ -787,32 +787,32 @@ public void Can_Generate_AlphaNumeric() public void Can_Generate_Simple_Patterns() { var pattern = @"\L\L\L\L\L\L-\L\L-\L\L\L\L\L"; - string text = AlphaNumericGenerator.GenerateFromPattern(pattern); + string text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); Assert.AreEqual(15, text.Length); StringAssert.Matches(text, new Regex("[A-Z]{6}-[A-Z]{2}-[A-Z]{5}")); pattern = @"\l\l\l\l\l\l"; - text = AlphaNumericGenerator.GenerateFromPattern(pattern); + text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); Assert.AreEqual(6, text.Length); StringAssert.Matches(text, new Regex("[a-z]*")); pattern = @"\d\d\d\d\d\d\L\L\L\L\l\l\l\l"; - text = AlphaNumericGenerator.GenerateFromPattern(pattern); + text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); Assert.AreEqual(14, text.Length); StringAssert.Matches(text, new Regex("[0-9]{6}[A-Z]{4}[a-z]{4}")); pattern = @"[1-9]\d\d-\d\d-\d\d\d\d"; - text = AlphaNumericGenerator.GenerateFromPattern(pattern); + text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); Assert.AreEqual(11, text.Length); StringAssert.Matches(text, new Regex(@"[1-9]\d{2}-\d{2}-\d{4}")); //Test for escaped characters. pattern = @"L\LLLLL"; - text = AlphaNumericGenerator.GenerateFromPattern(pattern); + text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); Assert.AreEqual(6, text.Length); StringAssert.Matches(text, new Regex("L[A-Z]{1}LLLL")); @@ -824,7 +824,7 @@ public void Can_Generate_Simple_Patterns() public void Can_Generate_Repeat_Character() { var pattern = @"w{3}"; - var text = AlphaNumericGenerator.GenerateFromPattern(pattern); + var text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); StringAssert.Matches(text, new Regex(@"w{3}")); @@ -835,7 +835,7 @@ public void Can_Generate_Repeat_Character() public void Can_Generate_Repeat_Character_Inside_Group() { var pattern = @"(\dC{3}\d{3}){3}"; - var text = AlphaNumericGenerator.GenerateFromPattern(pattern); + var text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); StringAssert.Matches(text, new Regex(@"^(\dC{3}\d{3}){3}$")); } @@ -845,7 +845,7 @@ public void Can_Generate_Repeat_Character_Inside_Group() public void Can_Generate_Repeat_Character_Inside_Group2() { var pattern = @"(\d(C){3}){3}"; - var text = AlphaNumericGenerator.GenerateFromPattern(pattern); + var text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); StringAssert.Matches(text, new Regex(@"^(\d(C){3}){3}$")); } @@ -855,7 +855,7 @@ public void Can_Generate_Repeat_Character_Inside_Group2() public void Can_Generate_Repeat_Character_Inside_Group3() { var pattern = @"(\d(C){3})"; - var text = AlphaNumericGenerator.GenerateFromPattern(pattern); + var text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); StringAssert.Matches(text, new Regex(@"^(\d(C){3})$")); } @@ -865,7 +865,7 @@ public void Can_Generate_Repeat_Character_Inside_Group3() public void Can_Generate_Repeat_Character_Inside_Group4() { var pattern = @"(\d(\\)\d)"; - var text = AlphaNumericGenerator.GenerateFromPattern(pattern); + var text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); StringAssert.Matches(text, new Regex(@"^(\d(\\)\d$)")); } @@ -875,7 +875,7 @@ public void Can_Generate_Repeat_Character_Inside_Group4() public void Can_Generate_Repeat_Symbol_Inside_Group() { var pattern = @"(\w{3})"; - var text = AlphaNumericGenerator.GenerateFromPattern(pattern); + var text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); StringAssert.Matches(text, new Regex(@"\w{3}")); @@ -886,7 +886,7 @@ public void Can_Generate_Repeat_Symbol_Inside_Group() public void Can_Generate_Repeat_Symbol_Inside_Group2() { var pattern = @"(\w(\d{2}|\v{2})\w{3})"; - var text = AlphaNumericGenerator.GenerateFromPattern(pattern); + var text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); StringAssert.Matches(text, new Regex(@"\w(\d{2}|[aeiou]{2})\w{3}")); @@ -897,7 +897,7 @@ public void Can_Generate_Repeat_Symbol_Inside_Group2() public void Can_Generate_Repeat_Pattern() { var pattern = @"(\L\L\d\d){3}"; - var text = AlphaNumericGenerator.GenerateFromPattern(pattern); + var text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); StringAssert.Matches(text, new Regex(@"[A-Z]{2}[0-9]{2}[A-Z]{2}[0-9]{2}[A-Z]{2}[0-9]{2}")); @@ -908,7 +908,7 @@ public void Can_Generate_Repeat_Pattern() public void Can_Generate_Repeat_Symbol() { var pattern = @"\L{3}"; - var text = AlphaNumericGenerator.GenerateFromPattern(pattern); + var text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); StringAssert.Matches(text, new Regex(@"[A-Z]{3}")); } @@ -918,7 +918,7 @@ public void Can_Generate_Repeat_Symbol() public void Can_Generate_Mixed_Pattern_With_Random_Length() { string pattern = @"\L{10,20}"; - var text = AlphaNumericGenerator.GenerateFromPattern(pattern); + var text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); StringAssert.Matches(text, new Regex(@"[A-Z]{10,20}")); @@ -929,7 +929,7 @@ public void Can_Generate_Mixed_Pattern_With_Random_Length() public void Can_Output_NonEscaped_Symbols() { string pattern = @"X"; - var text = AlphaNumericGenerator.GenerateFromPattern(pattern); + var text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); StringAssert.Matches(text, new Regex(@"X")); } @@ -939,7 +939,7 @@ public void Can_Output_NonEscaped_Symbols() public void Can_Output_Repeated_Symbols() { string pattern = @"\d{10}"; - var text = AlphaNumericGenerator.GenerateFromPattern(pattern); + var text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); StringAssert.Matches(text, new Regex(@"[\d]{10}")); } @@ -949,7 +949,7 @@ public void Can_Output_Repeated_Symbols() public void Can_Output_Escaped_Slash() { string pattern = @"[\\]{1,10}"; - var text = AlphaNumericGenerator.GenerateFromPattern(pattern); + var text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); StringAssert.Matches(text, new Regex(@"[\\]{1,10}")); } @@ -959,7 +959,7 @@ public void Can_Output_Escaped_Slash() public void Can_Generate_Mixed_Pattern() { string pattern = @"\L\L(\L\L\d\d){3}\L\L(\L){23}"; - var text = AlphaNumericGenerator.GenerateFromPattern(pattern); + var text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); StringAssert.Matches(text, new Regex(@"[A-Z]{2}[A-Z]{2}[0-9]{2}[A-Z]{2}[0-9]{2}[A-Z]{2}[0-9]{2}[A-Z]{2}[A-Z]{23}")); } @@ -969,7 +969,7 @@ public void Can_Generate_Mixed_Pattern() public void Can_Generate_Repeat_Pattern_Long() { var pattern = @"(\L){1}(\d){1}(\L){2}(\d){2}(\L){4}(\d){4}(\L){8}(\d){8}(\L){16}(\d){16}(\L){32}(\d){32}(\L){64}(\d){64}(\L){128}(\d){128}(\L){256}(\d){256}(\L){512}(\d){512}(\L){1024}(\d){1024}"; - var text = AlphaNumericGenerator.GenerateFromPattern(pattern); + var text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); StringAssert.Matches(text, new Regex(@"[A-Z]{1}[0-9]{1}[A-Z]{2}[0-9]{2}[A-Z]{4}[0-9]{4}[A-Z]{8}[0-9]{8}[A-Z]{16}[0-9]{16}[A-Z]{32}[0-9]{32}[A-Z]{64}[0-9]{64}[A-Z]{128}[0-9]{128}[A-Z]{256}[0-9]{256}[A-Z]{512}[0-9]{512}[A-Z]{1024}[0-9]{1024}")); Assert.AreEqual((1+2+4+8+16+32+64+128+256+512+1024)*2, text.Length); @@ -980,7 +980,7 @@ public void Can_Generate_Repeat_Pattern_Long() public void Can_Generate_Expressions_With_Alternates() { var pattern = @"(\L\L|\d\d)"; - var text = AlphaNumericGenerator.GenerateFromPattern(pattern); + var text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); StringAssert.Matches(text, new Regex(@"^([A-Z]{2}|[0-9]{2})$")); } @@ -990,7 +990,7 @@ public void Can_Generate_Expressions_With_Alternates() public void Can_Generate_Expressions_With_Alternates2() { var pattern = @"(\L\L|\d\d|[AEIOU]|[100-120])"; - var text = AlphaNumericGenerator.GenerateFromPattern(pattern); + var text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); StringAssert.Matches(text, new Regex(@"^([A-Z]{2}|[0-9]{2}|[AEIOU]|\d\d\d)$")); } @@ -1000,7 +1000,7 @@ public void Can_Generate_Expressions_With_Alternates2() public void Can_Generate_Zero_Repeats_Invalid_End() { var pattern = @"(\L\L\d\d)33}"; - var text = AlphaNumericGenerator.GenerateFromPattern(pattern); + var text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); StringAssert.Matches(text, new Regex(@"^[A-Z]{2}[0-9]{2}33}$")); } @@ -1010,7 +1010,7 @@ public void Can_Generate_Zero_Repeats_Invalid_End() public void Can_Generate_Zero_Repeats() { var pattern = @"\L\L\d\d"; - var text = AlphaNumericGenerator.GenerateFromPattern(pattern); + var text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); StringAssert.Matches(text, new Regex(@"^[A-Z]{2}[0-9]{2}$")); } @@ -1021,7 +1021,7 @@ public void Can_Generate_Zero_Repeats() public void Can_Generate_Complex1() { var pattern = @"\{'\w':('\w{3,25}'|[1-100])\}"; - var text = AlphaNumericGenerator.GenerateFromPattern(pattern); + var text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); StringAssert.Matches(text, new Regex(@"^\{'\w':('\w{3,25}'|\d{1,3})\}$")); } @@ -1036,87 +1036,87 @@ public void Can_Generate_Complex1() public void Can_Generate_All_Symbols() { var pattern = @"\."; - var text = AlphaNumericGenerator.GenerateFromPattern(pattern); + var text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); StringAssert.Matches(text, new Regex(@"^.$")); pattern = @"\a"; - text = AlphaNumericGenerator.GenerateFromPattern(pattern); + text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); StringAssert.Matches(text, new Regex(@"^[A-Za-z]$")); pattern = @"\W"; - text = AlphaNumericGenerator.GenerateFromPattern(pattern); + text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); StringAssert.Matches(text, new Regex(@"^\W$")); pattern = @"\w"; - text = AlphaNumericGenerator.GenerateFromPattern(pattern); + text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); StringAssert.Matches(text, new Regex(@"^\w$")); pattern = @"\L"; - text = AlphaNumericGenerator.GenerateFromPattern(pattern); + text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); StringAssert.Matches(text, new Regex(@"^[A-Z]$")); pattern = @"\l"; - text = AlphaNumericGenerator.GenerateFromPattern(pattern); + text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); StringAssert.Matches(text, new Regex(@"^[a-z]$")); pattern = @"\V"; - text = AlphaNumericGenerator.GenerateFromPattern(pattern); + text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); StringAssert.Matches(text, new Regex(@"^[AEIOU]$")); pattern = @"\v"; - text = AlphaNumericGenerator.GenerateFromPattern(pattern); + text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); StringAssert.Matches(text, new Regex(@"^[aeiou]$")); pattern = @"\C"; - text = AlphaNumericGenerator.GenerateFromPattern(pattern); + text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); StringAssert.Matches(text, new Regex(@"^[BCDFGHJKLMNPQRSTVWXYZ]$")); pattern = @"\c"; - text = AlphaNumericGenerator.GenerateFromPattern(pattern); + text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); StringAssert.Matches(text, new Regex(@"^[bcdfghjklmnpqrstvwxyz]$")); pattern = @"\D"; - text = AlphaNumericGenerator.GenerateFromPattern(pattern); + text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); StringAssert.Matches(text, new Regex(@"^\D$")); pattern = @"\d"; - text = AlphaNumericGenerator.GenerateFromPattern(pattern); + text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); StringAssert.Matches(text, new Regex(@"^\d$")); pattern = @"\s"; - text = AlphaNumericGenerator.GenerateFromPattern(pattern); + text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text.ToLiteral()); StringAssert.Matches(text, new Regex(@"^\s$")); pattern = @"\t"; - text = AlphaNumericGenerator.GenerateFromPattern(pattern); + text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text.ToLiteral()); StringAssert.Matches(text, new Regex(@"^\t$")); pattern = @"\n"; - text = AlphaNumericGenerator.GenerateFromPattern(pattern); + text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text.ToLiteral()); StringAssert.Matches(text, new Regex(@"^\n$")); pattern = @"\r"; - text = AlphaNumericGenerator.GenerateFromPattern(pattern); + text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text.ToLiteral()); StringAssert.Matches(text, new Regex(@"^\r$")); pattern = @"\\"; - text = AlphaNumericGenerator.GenerateFromPattern(pattern); + text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text.ToLiteral()); StringAssert.Matches(text, new Regex(@"^\\$")); } @@ -1132,7 +1132,7 @@ public void Can_Generate_NamedPatterns() //var namedPatterns = FileReader.LoadNamedPatterns("default.tdg-patterns"); var pattern = @"<<(@name_firstname_male@)>>"; - var text = AlphaNumericGenerator.GenerateFromTemplate(pattern); + var text = AlphanumericGenerator.GenerateFromTemplate(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); Assert.IsTrue(text.Length>0); @@ -1145,7 +1145,7 @@ public void Can_Generate_NamedPatterns_CompoundPattern() //var namedPatterns = FileReader.LoadNamedPatterns("default.tdg-patterns"); var pattern = @"<<(@address_us_type1@)>>"; - var text = AlphaNumericGenerator.GenerateFromTemplate(pattern); + var text = AlphanumericGenerator.GenerateFromTemplate(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); Assert.IsTrue(text.Length>0); @@ -1162,7 +1162,7 @@ public void Can_Generate_NamedPatterns_All_Defaults_Name() foreach (var dic in namedPatterns.Patterns) { - var text = AlphaNumericGenerator.GenerateFromPattern("@"+dic.Name+"@"); + var text = AlphanumericGenerator.GenerateFromPattern("@"+dic.Name+"@"); Console.WriteLine(@"'{0}' produced '{1}'", dic.Name, text); Assert.IsTrue(text.Length > 0); } @@ -1183,7 +1183,7 @@ public void Can_Generate_NamedPatterns_All_Defaults_Patterns() foreach (var dic in namedPatterns.Patterns) { - var text = AlphaNumericGenerator.GenerateFromPattern(dic.Pattern); + var text = AlphanumericGenerator.GenerateFromPattern(dic.Pattern); Console.WriteLine(@"'{0}' produced '{1}'", dic.Name, text); Assert.IsTrue(text.Length > 0); } @@ -1208,7 +1208,7 @@ public void Profile_Random_Repeat() sw.Start(); for (var i = 0; i < testLimit; i++) { - var text = AlphaNumericGenerator.GenerateFromTemplate(pattern); + var text = AlphanumericGenerator.GenerateFromTemplate(pattern); //Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); } sw.Stop(); @@ -1226,7 +1226,7 @@ public void Profile_NonRandom_Repeat() sw.Start(); for (var i = 0; i < testLimit; i++) { - var text = AlphaNumericGenerator.GenerateFromTemplate(pattern); + var text = AlphanumericGenerator.GenerateFromTemplate(pattern); //Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); } sw.Stop(); @@ -1244,7 +1244,7 @@ public void Profile_Large_NonRandom_Repeat() sw.Start(); for (var i = 0; i < testLimit; i++) { - var text = AlphaNumericGenerator.GenerateFromTemplate(pattern); + var text = AlphanumericGenerator.GenerateFromTemplate(pattern); //Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); } sw.Stop(); @@ -1261,7 +1261,7 @@ public void Profile_Large_NonRandom_Repeat() public void Can_Generate_Correct_Output_from_Negated_Set() { var pattern = @"[^0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]"; - var text = AlphaNumericGenerator.GenerateFromPattern(pattern); + var text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); Assert.IsTrue(Regex.IsMatch(text, "^"+pattern+"$")); } @@ -1271,7 +1271,7 @@ public void Can_Generate_Correct_Output_from_Negated_Set() public void Can_Generate_Correct_Output_from_Negated_Set_Range() { var pattern = @"[^A-Z]"; - var text = AlphaNumericGenerator.GenerateFromPattern(pattern); + var text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); Assert.IsTrue(Regex.IsMatch(text, "^" + pattern + "$")); } @@ -1281,7 +1281,7 @@ public void Can_Generate_Correct_Output_from_Negated_Set_Range() public void Can_Generate_Correct_Output_from_Negated_Set_Range2() { var pattern = @"[^3-6]"; - var text = AlphaNumericGenerator.GenerateFromPattern(pattern); + var text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); Assert.IsTrue(Regex.IsMatch(text, "^" + pattern + "$")); } @@ -1291,7 +1291,7 @@ public void Can_Generate_Correct_Output_from_Negated_Set_Range2() public void Can_Generate_Correct_Output_from_Negated_Set_Range_Multiple() { var pattern = @"[^A-Za-z]"; - var text = AlphaNumericGenerator.GenerateFromPattern(pattern); + var text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); Assert.IsTrue(Regex.IsMatch(text, "^" + pattern + "$")); } @@ -1301,7 +1301,7 @@ public void Can_Generate_Correct_Output_from_Negated_Set_Range_Multiple() public void Can_Generate_Correct_Output_from_Negated_Set_Range_Repeated() { var pattern = @"[^3-6]{10}"; - var text = AlphaNumericGenerator.GenerateFromPattern(pattern); + var text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); Assert.IsTrue(Regex.IsMatch(text, "^" + pattern + "$")); } @@ -1311,7 +1311,7 @@ public void Can_Generate_Correct_Output_from_Negated_Set_Range_Repeated() public void Can_Generate_Correct_Output_from_Negated_Set_Range_Multiple_Repeated() { var pattern = @"[^A-Za-z]{10}"; - var text = AlphaNumericGenerator.GenerateFromPattern(pattern); + var text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); Assert.IsTrue(Regex.IsMatch(text, "^" + pattern + "$")); } @@ -1326,7 +1326,7 @@ public void Can_Generate_Correct_Output_from_Negated_Set_Range_Multiple_Repeated public void Can_Throw_Exception_Missing_Placeholder_End() { var template = "This is a very basic <<(l){10}>> which can be used to create <>. The main purpose is to generate dummy <> which can be used for <>."; - AlphaNumericGenerator.GenerateFromTemplate(template); + AlphanumericGenerator.GenerateFromTemplate(template); } [TestMethod] @@ -1335,7 +1335,7 @@ public void Can_Throw_Exception_Missing_Placeholder_End() public void Can_Throw_Exception_Missing_Placeholder_End_End() { var template = "This is a very basic <<(l){10}>> which can be used to create <> of varying <>. The main purpose is to generate dummy <> which can be used for <>"; - AlphaNumericGenerator.GenerateFromTemplate(pattern); + AlphanumericGenerator.GenerateFromTemplate(pattern); } [TestMethod] @@ -1415,7 +1415,7 @@ public void Can_Throw_Exception_Unknown_NamedPatterns() public void Can_Throw_Exception_Negated_Set_Range_InvalidNumeric() { var pattern = @"[^30-60]"; - AlphaNumericGenerator.GenerateFromPattern(pattern); + AlphanumericGenerator.GenerateFromPattern(pattern); } [TestMethod] @@ -1424,7 +1424,7 @@ public void Can_Throw_Exception_Negated_Set_Range_InvalidNumeric() public void Can_Throw_Exception_Negated_Set_Range_InvalidNumeric2() { var pattern = @"[^3-60]"; - AlphaNumericGenerator.GenerateFromPattern(pattern); + AlphanumericGenerator.GenerateFromPattern(pattern); } [TestMethod] @@ -1433,7 +1433,7 @@ public void Can_Throw_Exception_Negated_Set_Range_InvalidNumeric2() public void Can_Throw_Exception_Negated_Set_Range_InvalidNumeric3() { var pattern = @"[^3.00-6]"; - AlphaNumericGenerator.GenerateFromPattern(pattern); + AlphanumericGenerator.GenerateFromPattern(pattern); } [TestMethod] @@ -1442,7 +1442,7 @@ public void Can_Throw_Exception_Negated_Set_Range_InvalidNumeric3() public void Can_Throw_Exception_Invalid_Config() { var pattern = @"<#{ asdsd }#>"; - AlphaNumericGenerator.GenerateFromTemplate(pattern); + AlphanumericGenerator.GenerateFromTemplate(pattern); } [TestMethod] @@ -1451,7 +1451,7 @@ public void Can_Throw_Exception_Invalid_Config() public void Can_Throw_Exception_Invalid_Config2() { var pattern = @"<#"; - AlphaNumericGenerator.GenerateFromTemplate(pattern); + AlphanumericGenerator.GenerateFromTemplate(pattern); } [TestMethod] @@ -1467,7 +1467,7 @@ public void Can_Throw_Missing_Pattern_File() var config = new GenerationConfig() { Seed = 100 }; config.PatternFiles.Add(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "tdg-patterns", "notpresent.tdg-pattern")); - string text = AlphaNumericGenerator.GenerateFromTemplate(template, namedPatterns, config); + string text = AlphanumericGenerator.GenerateFromTemplate(template, namedPatterns, config); Console.WriteLine(@"'{0}' produced '{1}'", template, text); StringAssert.Matches(text, new Regex(@"(Batman|Superman|Spiderman)")); } @@ -1486,7 +1486,7 @@ public void Can_Throw_Invalid_Pattern_File() var config = new GenerationConfig() { Seed = 100 }; config.PatternFiles.Add(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "tdg.exe")); - string text = AlphaNumericGenerator.GenerateFromTemplate(template, namedPatterns, config); + string text = AlphanumericGenerator.GenerateFromTemplate(template, namedPatterns, config); Console.WriteLine(@"'{0}' produced '{1}'", template, text); StringAssert.Matches(text, new Regex(@"(Batman|Superman|Spiderman)")); } @@ -1503,7 +1503,7 @@ public void Can_Configure_Random_Seed_From_Config() var configStr = "<# { 'Seed':100 } #>"; var template = configStr+@"Generated <>"; - var config = AlphaNumericGenerator.GetConfiguration(template, ref ndx); + var config = AlphanumericGenerator.GetConfiguration(template, ref ndx); Assert.AreEqual(100, config.Seed); Assert.AreEqual(configStr.Length, ndx); } @@ -1513,10 +1513,10 @@ public void Can_Configure_Random_Seed_From_Config() public void Can_Configure_And_Produce_Output_With_Seed() { var template = @"<# { 'Seed':100 } #>Generated <>"; - string text = AlphaNumericGenerator.GenerateFromTemplate(template); + string text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); - Assert.AreEqual(text, "Generated LZ"); + Assert.AreEqual("Generated LZ", text); } [TestMethod] @@ -1524,10 +1524,10 @@ public void Can_Configure_And_Produce_Output_With_Seed() public void Can_Configure_And_Produce_Output_With_Seed2() { var template = @"<# { 'Seed':100 } #>Generated <<\.\w\W\L\l\V\v\d\D\S\s>>"; - string text = AlphaNumericGenerator.GenerateFromTemplate(template); + string text = AlphanumericGenerator.GenerateFromTemplate(template); Console.WriteLine(@"'{0}' produced '{1}'", template, text); - Assert.AreEqual(text, @"Generated |k*XjUo6Eo "); + Assert.AreEqual(@"Generated |k*XjUo6Eo ", text); } [TestMethod] @@ -1536,7 +1536,7 @@ public void Can_Catch_Config_Not_At_Beginning_Template() { var template = @"<# { 'Seed':100 } #>Generated <<\.\w\W\L\l\V\v\d\D\S\s>>"; int index = 1; - var config = AlphaNumericGenerator.GetConfiguration(template, ref index); + var config = AlphanumericGenerator.GetConfiguration(template, ref index); Assert.IsNull(config); } @@ -1572,10 +1572,10 @@ public void Can_Serialize() [TestMethod] [TestCategory("Pattern")] - public void Can_Generate_Anagram() + public void Can_Generate_Set_Anagram() { var pattern = @"[ABC]{:anagram:}"; - var text = AlphaNumericGenerator.GenerateFromPattern(pattern); + var text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); Assert.AreEqual(3, text.Length); Assert.IsTrue(text.Contains("A")); @@ -1585,11 +1585,11 @@ public void Can_Generate_Anagram() [TestMethod] [TestCategory("Pattern")] - public void Can_Generate_Anagram_Long() + public void Can_Generate_Set_Anagram_Long() { var input = "abcdefghijklmnopqrstuvwxyz"; var pattern = @"["+input+"]{:anagram:}"; - var text = AlphaNumericGenerator.GenerateFromPattern(pattern); + var text = AlphanumericGenerator.GenerateFromPattern(pattern); Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); Assert.AreEqual(input.Length, text.Length); foreach (var ch in input.ToCharArray()) @@ -1598,6 +1598,142 @@ public void Can_Generate_Anagram_Long() } } + [TestMethod] + [TestCategory("Pattern")] + public void Can_Generate_Section_Anagram() + { + var input = "ABC"; + var pattern = @"("+input+"){:anagram:}"; + + var text = AlphanumericGenerator.GenerateFromPattern(pattern, new GenerationConfig(){Seed=100}); + Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); + + Assert.AreEqual(@"ABCACBBACBCACBACAB", text.RegexReplace(@"\W", "")); + } + + [TestMethod] + [TestCategory("Pattern")] + public void Can_Generate_Section_Anagram_Long() + { + var input = "1234567"; + var pattern = @"(" + input + "){:anagram:}"; + + var text = AlphanumericGenerator.GenerateFromPattern(pattern, new GenerationConfig() { Seed = 100 }); + Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); + } + + [TestMethod] + [TestCategory("Pattern")] + [ExpectedException(typeof(GenerationException))] + public void Can_Generate_Section_Anagram_Too_Long_Exception() + { + var input = "12345678"; + var pattern = @"(" + input + "){:anagram:}"; + + var text = AlphanumericGenerator.GenerateFromPattern(pattern, new GenerationConfig() { Seed = 100 }); + Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); + } + + [TestMethod] + [TestCategory("Pattern")] + public void Can_Generate_Section_Anagram_With_Suffix() + { + var input = "abc"; + var pattern = @"(" + input + "){:anagram:, }"; + + var text = AlphanumericGenerator.GenerateFromPattern(pattern, new GenerationConfig() { Seed = 100 }); + Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); + } + + + private double CalcStandardDeviation(IEnumerable values) + { + double ret = 0; + var enumerable = values as int[] ?? values.ToArray(); + if (enumerable.Count() > 0) + { + double avg = enumerable.Average(); + double squaredDifference = enumerable.Sum(d => Math.Pow(d - avg, 2)); + double stdVariance = squaredDifference / enumerable.Count(); + ret = Math.Sqrt(stdVariance); + } + return ret; + } + + [TestMethod] + [TestCategory("Pattern")] + public void Output_is_Random_Unseeded() + { + var pattern = @"\w{100000}"; + + var text = AlphanumericGenerator.GenerateFromPattern(pattern); + + + var data = new Dictionary(); + foreach (var c in text.ToCharArray()) + { + if (data.ContainsKey(c)) + data[c]++; + else + data[c] = 1; + } + + var stdev = CalcStandardDeviation(data.Values); + Console.WriteLine("Standard Deviation=" + stdev); + + var rStdev = 1 * stdev / data.Values.Average(); + Console.WriteLine("Relative Standard Deviation=" + rStdev); + + Assert.IsTrue(rStdev < 0.05, "relative stantard deviation appears higher than expected"); + + var list = data.Keys.ToList(); + list.Sort(); + + foreach (var item in list) + { + Console.WriteLine(item + ":" + data[item]); + } + Console.WriteLine(); + Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); + } + + [TestMethod] + [TestCategory("Pattern")] + public void Output_is_Random_Seeded() + { + var pattern = @"\w{100000}"; + + var text = AlphanumericGenerator.GenerateFromPattern(pattern, new GenerationConfig() { Seed = 100 }); + + + var data = new Dictionary(); + foreach (var c in text.ToCharArray()) + { + if(data.ContainsKey(c)) + data[c]++; + else + data[c] = 1; + } + + var stdev = CalcStandardDeviation(data.Values); + Console.WriteLine("Standard Deviation=" + stdev); + + var rStdev = 1*stdev/data.Values.Average(); + Console.WriteLine("Relative Standard Deviation=" + rStdev); + + Assert.IsTrue(rStdev < 0.05, "relative stantard deviation appears higher than expected"); + + var list = data.Keys.ToList(); + list.Sort(); + + foreach (var item in list) + { + Console.WriteLine(item + ":" +data[item]); + } + Console.WriteLine(); + Console.WriteLine(@"'{0}' produced '{1}'", pattern, text); + } + #endregion } } diff --git a/src/TestDataGenerator.Core.Tests/packages.config b/src/TestDataGenerator.Core.Tests/packages.config index 48a2ba4..b3a83dd 100644 --- a/src/TestDataGenerator.Core.Tests/packages.config +++ b/src/TestDataGenerator.Core.Tests/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/src/TestDataGenerator.Core.sln b/src/TestDataGenerator.Core.sln index cc0bbfb..d8f56a3 100644 --- a/src/TestDataGenerator.Core.sln +++ b/src/TestDataGenerator.Core.sln @@ -7,6 +7,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution ProjectSection(SolutionItems) = preProject DataGenerator.vsmdi = DataGenerator.vsmdi LocalTestRun.testrunconfig = LocalTestRun.testrunconfig + Performance1.psess = Performance1.psess ..\..\VERSION = ..\..\VERSION EndProjectSection EndProject @@ -39,6 +40,9 @@ Global GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection + GlobalSection(Performance) = preSolution + HasPerformanceSessions = true + EndGlobalSection GlobalSection(TestCaseManagementSettings) = postSolution CategoryFile = DataGenerator.vsmdi EndGlobalSection diff --git a/src/TestDataGenerator.Core/Exceptions/GenerationException.cs b/src/TestDataGenerator.Core/Exceptions/GenerationException.cs index 59cc749..1456a5f 100644 --- a/src/TestDataGenerator.Core/Exceptions/GenerationException.cs +++ b/src/TestDataGenerator.Core/Exceptions/GenerationException.cs @@ -1,6 +1,6 @@ using System; -namespace TestDataGenerator.Core.Exceptions +namespace TestDataGenerator.Core { /// /// Used when a exception needs to be thrown by the test data generator. diff --git a/src/TestDataGenerator.Core/FileReader.cs b/src/TestDataGenerator.Core/FileReader.cs index c406fe7..35982b8 100644 --- a/src/TestDataGenerator.Core/FileReader.cs +++ b/src/TestDataGenerator.Core/FileReader.cs @@ -4,7 +4,7 @@ using System.IO; using System.Xml; using System.Xml.Serialization; -using TestDataGenerator.Core.Exceptions; +using TestDataGenerator.Core; namespace TestDataGenerator.Core { diff --git a/src/TestDataGenerator.Core/Generators/AlphaNumericGenerator.cs b/src/TestDataGenerator.Core/Generators/AlphaNumericGenerator.cs index a0d1b14..f116be7 100644 --- a/src/TestDataGenerator.Core/Generators/AlphaNumericGenerator.cs +++ b/src/TestDataGenerator.Core/Generators/AlphaNumericGenerator.cs @@ -1,15 +1,16 @@ using System; +using System.Collections.Generic; using System.Globalization; using System.IO; using System.Linq; using System.Text; using System.Text.RegularExpressions; using Eloquent; -using TestDataGenerator.Core.Exceptions; +using TestDataGenerator.Core; -namespace TestDataGenerator.Core.Generators +namespace TestDataGenerator.Core { - public static class AlphaNumericGenerator + public static class AlphanumericGenerator { private const string _AllPossibleCharacters = _AllLetters + _AllNumbers + _AllNonWhitespaceNonAlphaNumericCharacters + " "; private const string _AllLetters = _ShortHand_l + _ShortHand_L; @@ -219,9 +220,7 @@ private static void AppendPatternsFromConfigToCollection(GenerationConfig config } } } - - private static GenerationConfig LoadAndRemoveConfigFromTemplate(ref string template) { int index = 0; @@ -402,6 +401,14 @@ private static void AppendContentFromSectionExpression(StringBuilder sb, string var contentOptions = GetContentOptions(characters, ref index, _Section_Start.ToString(CultureInfo.InvariantCulture), _Section_End.ToString(CultureInfo.InvariantCulture), random); var exp = contentOptions.Content; + + // Anagram handling - "(ABC){:anagram:}" + if (contentOptions.IsAnagram) + { + GenerateAnagramFromSection(sb, exp, contentOptions, random); + return; + } + if (contentOptions.ContainsAlternation) // contains alternations { GenerateFromAlternatedPattern(sb, namedPatterns, exp, contentOptions, random); @@ -482,7 +489,7 @@ private static void GenerateFromAlternatedPattern(StringBuilder sb, NamedPattern } } - private static void GenerateFromAnagramPattern(StringBuilder sb, string exp, ContentOptions contentOptions, Random random) + private static void GenerateAnagramFromSet(StringBuilder sb, string exp, ContentOptions contentOptions, Random random) { for (int x = 0; x < contentOptions.Repeat; x++) { @@ -493,6 +500,63 @@ private static void GenerateFromAnagramPattern(StringBuilder sb, string exp, Con } } + /// + /// Generate all possible anagram variants from the provided expression. + /// + /// + /// + /// + /// + private static void GenerateAnagramFromSection(StringBuilder sb, string exp, ContentOptions contentOptions, Random random) + { + if(exp.Length >7) + throw new GenerationException("Anagrams greater than 7 characters in length are not supported."); + + foreach (var permutation in GetAllPermutations(exp)) + { + sb.Append(contentOptions.Prefix); + foreach (var ch in permutation) + { + AppendCharacterDerivedFromSymbol(sb, ch, false, random); + } + sb.Append(contentOptions.Suffix); + } + } + + private static IEnumerable GetAllPermutations(string exp) + { + var value = exp; + var maxDepth = value.Length - 1; + return GetAllPermutations(value.ToCharArray(), 0, maxDepth); + } + + private static IEnumerable GetAllPermutations(char[] value, int currentDepth, int maxDepth) + { + if (currentDepth == maxDepth) + { + yield return new string(value); + } + + for (int i = currentDepth; i <= maxDepth; i++) + { + Swap(ref value[currentDepth], ref value[i]); + foreach (var item in GetAllPermutations(value, currentDepth + 1, maxDepth)) + { + yield return item; + } + Swap(ref value[currentDepth], ref value[i]); + } + } + + private static void Swap(ref char a, ref char b) + { + if (a == b) return; + + a ^= b; + b ^= a; + a ^= b; + } + private static void AppendContentFromNamedPattern(StringBuilder sb, string characters, ref int index, NamedPatterns namedPatterns, Random random) { var ndx = index; @@ -523,7 +587,7 @@ private static void AppendContentFromSetExpression(StringBuilder sb, string char if (contentOptions.IsAnagram) { - GenerateFromAnagramPattern(sb, contentOptions.Content, contentOptions, random); + GenerateAnagramFromSet(sb, contentOptions.Content, contentOptions, random); return; } @@ -709,7 +773,18 @@ private static ContentOptions GetContentOptions(string characters, ref int index // check for special functions if (result.QuantifierContent.Contains(":")) { - result.IsAnagram = ContainsAnagram(result.QuantifierContent); + if (ContainsAnagram(result.QuantifierContent)) + { + result.IsAnagram = true; + if (result.QuantifierContent.Contains(",")) + { + var tmp = result.QuantifierContent.Replace(_Anagram, "").TrimStart(); + if (tmp[0] == ',') + { + result.Suffix = tmp.Substring(1); + } + } + } } else { @@ -721,7 +796,7 @@ private static ContentOptions GetContentOptions(string characters, ref int index private static bool ContainsAnagram(string content) { - return content.ToLower().Equals(_Anagram); + return content.ToLower().Contains(_Anagram); } private static string GetContent(string characters, ref int index, string openingContainerChar, string closingContainerChar) diff --git a/src/TestDataGenerator.Core/Generators/ContentOptions.cs b/src/TestDataGenerator.Core/Generators/ContentOptions.cs index 6387020..d3bfea0 100644 --- a/src/TestDataGenerator.Core/Generators/ContentOptions.cs +++ b/src/TestDataGenerator.Core/Generators/ContentOptions.cs @@ -1,4 +1,6 @@ -namespace TestDataGenerator.Core.Generators +using System.Net.NetworkInformation; + +namespace TestDataGenerator.Core { internal class ContentOptions { @@ -9,6 +11,8 @@ internal class ContentOptions public bool IsAnagram { get; set; } public bool IsSpecialFunction { get { return IsAnagram; } } public string QuantifierContent { get; set; } + public string Prefix { get; set; } + public string Suffix { get; set; } public ContentOptions() { @@ -17,6 +21,8 @@ public ContentOptions() Content = ""; ContainsAlternation = false; Repeat = 1; + Prefix = ""; + Suffix = ""; } } } \ No newline at end of file diff --git a/src/TestDataGenerator.Core/Generators/Utility.cs b/src/TestDataGenerator.Core/Generators/Utility.cs index cce9b60..824d3f6 100644 --- a/src/TestDataGenerator.Core/Generators/Utility.cs +++ b/src/TestDataGenerator.Core/Generators/Utility.cs @@ -1,7 +1,7 @@ using System.IO; using System.Text; -namespace TestDataGenerator.Core.Generators +namespace TestDataGenerator.Core { public static class Utility { diff --git a/src/TestDataGenerator.Core/Properties/AssemblyInfo.cs b/src/TestDataGenerator.Core/Properties/AssemblyInfo.cs index 320e9fb..d8b6e5f 100644 --- a/src/TestDataGenerator.Core/Properties/AssemblyInfo.cs +++ b/src/TestDataGenerator.Core/Properties/AssemblyInfo.cs @@ -1,4 +1,6 @@ -using System.Reflection; +using System; +using System.Reflection; +using System.Resources; using System.Runtime.InteropServices; // General Information about an assembly is controlled through the following @@ -12,6 +14,8 @@ [assembly: AssemblyCopyright("Gary Kenneally (@SecretDeveloper) [2015]")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] +[assembly: CLSCompliant(true)] +[assembly: NeutralResourcesLanguage("en-IE")] // Setting ComVisible to false makes the types in this assembly not visible // to COM components. If you need to access a type in this assembly from @@ -31,4 +35,4 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("4.0.1.0")] +[assembly: AssemblyVersion("4.0.2.0")] diff --git a/src/TestDataGenerator.Core/TestDataGenerator.Core.csproj b/src/TestDataGenerator.Core/TestDataGenerator.Core.csproj index efb9319..76e1e91 100644 --- a/src/TestDataGenerator.Core/TestDataGenerator.Core.csproj +++ b/src/TestDataGenerator.Core/TestDataGenerator.Core.csproj @@ -45,6 +45,8 @@ prompt 4 false + true + AllRules.ruleset none @@ -55,10 +57,16 @@ 4 false + + true + + + TestDataGenerator.snk + - + False - ..\packages\Eloquent.1.0.1.1\lib\net45\Eloquent.dll + ..\packages\Eloquent.1.0.2.0\lib\net45\Eloquent.dll @@ -103,6 +111,7 @@ + diff --git a/src/TestDataGenerator.Core/TestDataGenerator.snk b/src/TestDataGenerator.Core/TestDataGenerator.snk new file mode 100644 index 0000000..657614c Binary files /dev/null and b/src/TestDataGenerator.Core/TestDataGenerator.snk differ diff --git a/src/TestDataGenerator.Core/packages.config b/src/TestDataGenerator.Core/packages.config index 48a2ba4..b3a83dd 100644 --- a/src/TestDataGenerator.Core/packages.config +++ b/src/TestDataGenerator.Core/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file