public void CreateReturnsValuesFromCorrectSetForRequestsWithDifferentTypesAndSameLimits( Type primaryRequestType, Type otherRequestType) { // Arrange int minimum = 0, maximum = 2; int rangeCount = maximum - minimum + 1; var primaryRequest = new RangedNumberRequest(primaryRequestType, minimum, maximum); var otherRequest = new RangedNumberRequest(otherRequestType, minimum, maximum); var dummyContext = new DelegatingSpecimenContext(); var primaryResults = new List <IComparable>(); var sut = new RandomRangedNumberGenerator(); // Act primaryResults.Add((IComparable)sut.Create(primaryRequest, dummyContext)); primaryResults.Add((IComparable)sut.Create(primaryRequest, dummyContext)); var otherResult = ((IComparable)sut.Create(otherRequest, dummyContext)); primaryResults.Add((IComparable)sut.Create(primaryRequest, dummyContext)); // Verify Assert.True(primaryResults.Distinct().Count() == 3); Assert.InRange(otherResult, minimum, maximum); Assert.True(Enumerable.Range(minimum, rangeCount) .Select(a => Convert.ChangeType(a, primaryRequestType)) .Cast <IComparable>() .All(a => primaryResults.Any(b => b.CompareTo(a) == 0))); }
public void CreateReturnsUniqueNumbersOnMultipleCallAsynchronously(int minimum, int maximum, int numberOfThreads) { // Arrange int expectedDistinctCount = Math.Abs((maximum - minimum + 1)); int requestsPerThread = expectedDistinctCount / numberOfThreads; var dummyContext = new DelegatingSpecimenContext(); var sut = new RandomRangedNumberGenerator(); // Act var numbers = Enumerable .Range(0, numberOfThreads) .AsParallel() .WithExecutionMode(ParallelExecutionMode.ForceParallelism) .WithDegreeOfParallelism(numberOfThreads) .Select(threadNumber => Enumerable .Range(0, requestsPerThread) .Select(_ => new RangedNumberRequest(typeof(int), minimum, maximum)) .Select(request => sut.Create(request, dummyContext)) .Cast <int>() .ToArray()) .ToArray(); // Verify int actualDistinctCount = numbers.SelectMany(a => a).Distinct().Count(); Assert.Equal(expectedDistinctCount, actualDistinctCount); }
public void CreateWithNullContextThrows() { // Arrange var sut = new RandomRangedNumberGenerator(); var dummyRequest = new object(); // Act & assert Assert.Throws <ArgumentNullException>(() => sut.Create(dummyRequest, null)); }
public void SutIsSpecimenBuilder() { // Arrange // Act var sut = new RandomRangedNumberGenerator(); // Assert Assert.IsAssignableFrom <ISpecimenBuilder>(sut); }
public void CreateWithNullContextThrows() { // Fixture setup var sut = new RandomRangedNumberGenerator(); var dummyRequest = new object(); // Exercise system and verify outcome Assert.Throws <ArgumentNullException>(() => sut.Create(dummyRequest, null)); // Teardown }
public void SutIsSpecimenBuilder() { // Fixture setup // Exercise system var sut = new RandomRangedNumberGenerator(); // Verify outcome Assert.IsAssignableFrom <ISpecimenBuilder>(sut); // Teardown }
public void CreationOnFullRangeShouldNotFail(Type type, object minimum, object maximum) { // Arrange var request = new RangedNumberRequest(type, minimum, maximum); var sut = new RandomRangedNumberGenerator(); var dummyContext = new DelegatingSpecimenContext(); // Act & Assert Assert.Null(Record.Exception(() => sut.Create(request, dummyContext))); }
public void CreateWithNullRequestReturnsCorrectResult() { // Arrange var sut = new RandomRangedNumberGenerator(); var dummyContext = new DelegatingSpecimenContext(); // Act var result = sut.Create(null, dummyContext); // Assert Assert.Equal(new NoSpecimen(), result); }
public void CreateWithNullRequestReturnsCorrectResult() { // Fixture setup var sut = new RandomRangedNumberGenerator(); var dummyContext = new DelegatingSpecimenContext(); // Exercise system var result = sut.Create(null, dummyContext); // Verify outcome Assert.Equal(new NoSpecimen(), result); // Teardown }
public void CreateWithNonnumericLimitsReturnsNoSpecimen(Type operandType, object minimum, object maximum) { // Arrange var sut = new RandomRangedNumberGenerator(); var dummyContext = new DelegatingSpecimenContext(); var request = new RangedNumberRequest(operandType, minimum, maximum); // Act var result = sut.Create(request, dummyContext); // Verify Assert.Equal(new NoSpecimen(), result); }
public void CreationOnFullRangeShouldNotFail(Type type, object minimum, object maximum) { // Fixture setup var request = new RangedNumberRequest(type, minimum, maximum); var sut = new RandomRangedNumberGenerator(); var dummyContext = new DelegatingSpecimenContext(); // Excercise System And Verify Assert.Null(Record.Exception(() => sut.Create(request, dummyContext))); // Teardown }
public void CreationWithLimitsInBoundariesShouldReturnValueInRange(Type type, object minimum, object maximum) { // Arrange var request = new RangedNumberRequest(type, minimum, maximum); var sut = new RandomRangedNumberGenerator(); var dummyContext = new DelegatingSpecimenContext(); // Act var result = (IComparable)sut.Create(request, dummyContext); // Assert Assert.InRange(result, (IComparable)minimum, (IComparable)maximum); }
public void CreationOnFullRangeShouldReturnValue(Type type, object minimum, object maximum) { // Arrange var request = new RangedNumberRequest(type, minimum, maximum); var sut = new RandomRangedNumberGenerator(); var dummyContext = new DelegatingSpecimenContext(); // Act var result = sut.Create(request, dummyContext); // Assert Assert.IsType(type, result); }
public void ShouldCorrectlyHandleRequestsWithSameMinimumAndMaximumValue(Type type) { // Arrange var range = Convert.ChangeType(42, type, CultureInfo.InvariantCulture); var sut = new RandomRangedNumberGenerator(); var request = new RangedNumberRequest(type, range, range); var dummyContext = new DelegatingSpecimenContext(); // Act var result = sut.Create(request, dummyContext); // Assert Assert.Equal(range, result); }
public void CreateWithNonnumericLimitsReturnsNoSpecimen(Type operandType, object minimum, object maximum) { // Fixture setup var sut = new RandomRangedNumberGenerator(); var dummyContext = new DelegatingSpecimenContext(); var request = new RangedNumberRequest(operandType, minimum, maximum); // Exercise system var result = sut.Create(request, dummyContext); // Verify #pragma warning disable 618 Assert.Equal(new NoSpecimen(request), result); #pragma warning restore 618 }
public void CreationWithLimitsInBoundariesShouldReturnValueInRange(Type type, object minimum, object maximum) { // Fixture setup var request = new RangedNumberRequest(type, minimum, maximum); var sut = new RandomRangedNumberGenerator(); var dummyContext = new DelegatingSpecimenContext(); // Excercise System var result = (IComparable)sut.Create(request, dummyContext); // Verify Assert.InRange(result, (IComparable)minimum, (IComparable)maximum); // Teardown }
public void ShouldCorrectlyHandleRequestsWithSameMinimumAndMaximumValue(Type type) { // Fixture setup var range = Convert.ChangeType(42, type, CultureInfo.InvariantCulture); var sut = new RandomRangedNumberGenerator(); var request = new RangedNumberRequest(type, range, range); var dummyContext = new DelegatingSpecimenContext(); // Exercise system var result = sut.Create(request, dummyContext); // Verify outcome Assert.Equal(range, result); // Teardown }
public void CreateWithAnonymousRequestReturnsCorrectResult() { // Fixture setup var sut = new RandomRangedNumberGenerator(); var dummyRequest = new object(); var dummyContext = new DelegatingSpecimenContext(); // Exercise system var result = sut.Create(dummyRequest, dummyContext); // Verify outcome #pragma warning disable 618 Assert.Equal(new NoSpecimen(dummyRequest), result); #pragma warning restore 618 // Teardown }
public void CreationOnFullRangeShouldReturnValue(Type type, object minimum, object maximum) { // Fixture setup var request = new RangedNumberRequest(type, minimum, maximum); var sut = new RandomRangedNumberGenerator(); var dummyContext = new DelegatingSpecimenContext(); // Excercise System var result = sut.Create(request, dummyContext); // Verify Assert.IsType(type, result); // Teardown }
public void CreateReturnsValuesFromCorrectSetForTwoRequestsOfSameTypeAndDifferentLimits() { // Arrange var request1 = new RangedNumberRequest(typeof(int), 0, 2); var request2 = new RangedNumberRequest(typeof(int), 10, 20); var dummyContext = new DelegatingSpecimenContext(); var sut = new RandomRangedNumberGenerator(); // Act var value1 = (int)sut.Create(request1, dummyContext); var value2 = (int)sut.Create(request2, dummyContext); var value3 = (int)sut.Create(request1, dummyContext); // Verify Assert.InRange(value1, 0, 2); Assert.InRange(value2, 10, 20); Assert.InRange(value3, 0, 2); }
public void CreateReturnsAllValuesInSetBeforeRepeating() { // Arrange int minimum = 0; int maximum = 2; var request = new RangedNumberRequest(typeof(int), minimum, maximum); var dummyContext = new DelegatingSpecimenContext(); var sut = new RandomRangedNumberGenerator(); // Act var generatedValues = Enumerable.Range(0, 3).Select(i => sut.Create(request, dummyContext)).Cast <int>(); var shouldBeRepeatedValue = (int)sut.Create(request, dummyContext); // Verify Assert.True(generatedValues.All(a => a >= minimum && a <= maximum)); Assert.InRange(shouldBeRepeatedValue, minimum, maximum); }
public void CreateReturnsCorrectValuesForRequestsOfSameTypeAndSingleSharedLimit (int request1Min, int request1Max, int request1FirstGroup, int request1SecondGroup, int request2Min, int request2Max, int request2FirstGroup, int request2SecondGroup, int request3Min, int request3Max, int request3FirstGroup, int request3SecondGroup) { // Arrange int request1Count = request1Max - request1Min + 1; int request2Count = request2Max - request2Min + 1; int request3Count = request3Max - request3Min + 1; var request1 = new RangedNumberRequest(typeof(int), request1Min, request1Max); var request2 = new RangedNumberRequest(typeof(int), request2Min, request2Max); var request3 = new RangedNumberRequest(typeof(int), request3Min, request3Max); IDictionary <RangedNumberRequest, IList <int> > results = new Dictionary <RangedNumberRequest, IList <int> >() { { request1, new List <int>() }, { request2, new List <int>() }, { request3, new List <int>() } }; var dummyContext = new DelegatingSpecimenContext(); var sut = new RandomRangedNumberGenerator(); // Act results[request1].AddMany(() => (int)sut.Create(request1, dummyContext), request1FirstGroup); results[request2].AddMany(() => (int)sut.Create(request2, dummyContext), request2FirstGroup); results[request3].AddMany(() => (int)sut.Create(request3, dummyContext), request3FirstGroup); results[request1].AddMany(() => (int)sut.Create(request1, dummyContext), request1SecondGroup); results[request2].AddMany(() => (int)sut.Create(request2, dummyContext), request2SecondGroup); results[request3].AddMany(() => (int)sut.Create(request3, dummyContext), request3SecondGroup); // Verify Assert.True(Enumerable.Range(request1Min, request1Count) .Intersect(results[request1]).Count() == request1Count); Assert.True(Enumerable.Range(request2Min, request2Count) .Intersect(results[request2]).Count() == request2Count); Assert.True(Enumerable.Range(request3Min, request3Count) .Intersect(results[request3]).Count() == request3Count); }
public void CreateReturnsValuesFromCorrectSetForMultipleRequestsWithInterspersedDifferentRequestOfSameType() { // Arrange var request1 = new RangedNumberRequest(typeof(int), 0, 2); var request2 = new RangedNumberRequest(typeof(int), 10, 20); var request3 = new RangedNumberRequest(typeof(int), 0, 2); var dummyContext = new DelegatingSpecimenContext(); var sut = new RandomRangedNumberGenerator(); // Act var value1 = (int)sut.Create(request1, dummyContext); var value2 = (int)sut.Create(request2, dummyContext); var value3 = (int)sut.Create(request3, dummyContext); // Verify Assert.InRange(value1, 0, 2); Assert.InRange(value2, 10, 20); Assert.InRange(value3, 0, 2); Assert.NotEqual(value1, value3); }
public static Person CreateDatabasePersonEntity(string firstname = null, string lastname = null, string houseRef = null, int?personNo = null) { //Generate integers for house_ref column var rrng = new RandomRangedNumberGenerator(); var sc = new SpecimenContext(rrng); rrng.Create(new RangedNumberRequest(typeof(int), 100000, 999999), sc); var fixture = new Fixture(); fixture.Customizations.Add(rrng); var fp = fixture.Build <Person>() .Create(); fp.DateOfBirth = new DateTime (fp.DateOfBirth.Year, fp.DateOfBirth.Month, fp.DateOfBirth.Day); fp.FirstName = firstname ?? fp.FirstName; fp.LastName = lastname ?? fp.LastName; fp.HouseRef = houseRef ?? fixture.Create <int>().ToString(); fp.PersonNo = personNo ?? fp.PersonNo; return(fp); }