From 8e351fbdb96e6124767fbd165025f46e69c8eba4 Mon Sep 17 00:00:00 2001 From: Michael Whelan Date: Wed, 17 Sep 2014 10:48:16 +0100 Subject: [PATCH 1/7] Created random generator --- .gitignore | 4 +- .../Generators/RandomGeneratorTests.cs | 41 +++++++++++++++++++ .../NTestDataBuilder.Tests.csproj | 4 ++ NTestDataBuilder.Tests/packages.config | 1 + .../DataSources/Generators/IGenerator.cs | 7 ++++ .../DataSources/Generators/RandomGenerator.cs | 27 ++++++++++++ NTestDataBuilder/NTestDataBuilder.csproj | 4 ++ 7 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 NTestDataBuilder.Tests/DataSources/Generators/RandomGeneratorTests.cs create mode 100644 NTestDataBuilder/DataSources/Generators/IGenerator.cs create mode 100644 NTestDataBuilder/DataSources/Generators/RandomGenerator.cs diff --git a/.gitignore b/.gitignore index 4862351..6ea0185 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,6 @@ _ReSharper.* *~ *.log packages -*.DotSettings \ No newline at end of file +*.DotSettings +*.ncrunchproject +*.ncrunchsolution \ No newline at end of file diff --git a/NTestDataBuilder.Tests/DataSources/Generators/RandomGeneratorTests.cs b/NTestDataBuilder.Tests/DataSources/Generators/RandomGeneratorTests.cs new file mode 100644 index 0000000..e7e7a22 --- /dev/null +++ b/NTestDataBuilder.Tests/DataSources/Generators/RandomGeneratorTests.cs @@ -0,0 +1,41 @@ +using System; +using NTestDataBuilder.DataSources.Generators; +using Shouldly; +using Xunit; +using Xunit.Extensions; + +namespace NTestDataBuilder.Tests.DataSources.Generators +{ + public class RandomGeneratorTests + { + [Fact] + public void WhenGeneratingRandomIntegers_ThenShouldAlwaysGenerateIntegerBetweenMinAndMaxValue() + { + var random = new Random(); + for (int i = 0; i < 10; i++) + { + int minimumValue = random.Next(0,10); + int maximumValue = random.Next(20,30); + var sut = new RandomGenerator(minimumValue, maximumValue); + + var result = sut.Generate(); + + result.ShouldBeGreaterThanOrEqualTo(minimumValue); + result.ShouldBeLessThanOrEqualTo(maximumValue); + } + } + + [Theory, + InlineData(0,0), + InlineData(0,-1), + InlineData(-1,-2), + InlineData(5,4), + InlineData(5,5)] + public void WhenCreatingRandomGenerator_minimumValueMustBeLessThanMaximumValue(int minValue, int maxValue) + { + Action factory = () => new RandomGenerator(minValue, maxValue); + Should.Throw(factory) + .Message.ShouldBe(string.Format("minValue must be less than maxValue")); + } + } +} diff --git a/NTestDataBuilder.Tests/NTestDataBuilder.Tests.csproj b/NTestDataBuilder.Tests/NTestDataBuilder.Tests.csproj index d6ef831..ddfae7e 100644 --- a/NTestDataBuilder.Tests/NTestDataBuilder.Tests.csproj +++ b/NTestDataBuilder.Tests/NTestDataBuilder.Tests.csproj @@ -47,8 +47,12 @@ ..\packages\xunit.1.9.2\lib\net20\xunit.dll + + ..\packages\xunit.extensions.1.9.2\lib\net20\xunit.extensions.dll + + diff --git a/NTestDataBuilder.Tests/packages.config b/NTestDataBuilder.Tests/packages.config index 51b44ac..b36ce0f 100644 --- a/NTestDataBuilder.Tests/packages.config +++ b/NTestDataBuilder.Tests/packages.config @@ -4,4 +4,5 @@ + \ No newline at end of file diff --git a/NTestDataBuilder/DataSources/Generators/IGenerator.cs b/NTestDataBuilder/DataSources/Generators/IGenerator.cs new file mode 100644 index 0000000..82dcc61 --- /dev/null +++ b/NTestDataBuilder/DataSources/Generators/IGenerator.cs @@ -0,0 +1,7 @@ +namespace NTestDataBuilder.DataSources.Generators +{ + public interface IGenerator + { + int Generate(); + } +} \ No newline at end of file diff --git a/NTestDataBuilder/DataSources/Generators/RandomGenerator.cs b/NTestDataBuilder/DataSources/Generators/RandomGenerator.cs new file mode 100644 index 0000000..7c532eb --- /dev/null +++ b/NTestDataBuilder/DataSources/Generators/RandomGenerator.cs @@ -0,0 +1,27 @@ +using System; + +namespace NTestDataBuilder.DataSources.Generators +{ + public class RandomGenerator : IGenerator + { + private readonly Random _random; + private readonly int _minValue; + private readonly int _maxValue; + + public RandomGenerator(int minValue, int maxValue) + { + if (minValue >= maxValue) + { + throw new ArgumentException("minValue must be less than maxValue"); + } + _minValue = minValue; + _maxValue = maxValue; + _random = new Random(); + } + + public int Generate() + { + return _random.Next(_minValue, _maxValue); + } + } +} \ No newline at end of file diff --git a/NTestDataBuilder/NTestDataBuilder.csproj b/NTestDataBuilder/NTestDataBuilder.csproj index f289a5e..6bba230 100644 --- a/NTestDataBuilder/NTestDataBuilder.csproj +++ b/NTestDataBuilder/NTestDataBuilder.csproj @@ -52,6 +52,9 @@ + + + @@ -68,6 +71,7 @@ +