Пример #1
0
        public void CreateReturnsCorrectResultWithMinimumMaximumOnMultipleCall(
            double minimum,
            double maximum)
        {
            // Fixture setup
            var numbers = new Random();
            var request = new RangedNumberRequest(
                typeof(double),
                minimum,
                maximum);
            var context = new DelegatingSpecimenContext
            {
                OnResolve = r =>
                {
                    Assert.Equal(request.OperandType, r);
                    return((double)numbers.Next());
                }
            };
            var sut = new RangedNumberGenerator();
            // Exercise system
            var result = Enumerable
                         .Range(0, 33)
                         .Select(x => sut.Create(request, context))
                         .Cast <double>();

            // Verify outcome
            Assert.True(
                result.All(x => x >= minimum && x <= maximum));
            // Teardown
        }
        public void CreateWithNullContextThrows()
        {
            // Arrange
            var sut          = new RangedNumberGenerator();
            var dummyRequest = new object();

            // Act & assert
            Assert.Throws <ArgumentNullException>(() => sut.Create(dummyRequest, null));
        }
        public void SutIsSpecimenBuilder()
        {
            // Arrange
            // Act
            var sut = new RangedNumberGenerator();

            // Assert
            Assert.IsAssignableFrom <ISpecimenBuilder>(sut);
        }
Пример #4
0
        public void CreateWithNullContextThrows()
        {
            // Fixture setup
            var sut          = new RangedNumberGenerator();
            var dummyRequest = new object();

            // Exercise system and verify outcome
            Assert.Throws <ArgumentNullException>(() => sut.Create(dummyRequest, null));
            // Teardown
        }
Пример #5
0
        public void SutIsSpecimenBuilder()
        {
            // Fixture setup
            // Exercise system
            var sut = new RangedNumberGenerator();

            // Verify outcome
            Assert.IsAssignableFrom <ISpecimenBuilder>(sut);
            // Teardown
        }
        public void CreateWithNullRequestReturnsCorrectResult()
        {
            // Arrange
            var sut          = new RangedNumberGenerator();
            var dummyContext = new DelegatingSpecimenContext();
            // Act
            var result = sut.Create(null, dummyContext);

            // Assert
            Assert.Equal(new NoSpecimen(), result);
        }
Пример #7
0
        public void CreateWithNullRequestReturnsCorrectResult()
        {
            // Fixture setup
            var sut          = new RangedNumberGenerator();
            var dummyContext = new DelegatingSpecimenContext();
            // Exercise system
            var result = sut.Create(null, dummyContext);

            // Verify outcome
            Assert.Equal(new NoSpecimen(), result);
            // Teardown
        }
        public void ReturnsSameNumberWhenMinimumAndMaximumAreSame(Type requestType)
        {
            // Arrange
            var range   = Convert.ChangeType(42, requestType, CultureInfo.InvariantCulture);
            var sut     = new RangedNumberGenerator();
            var request = new RangedNumberRequest(requestType, range, range);

            var dummyContext = new DelegatingSpecimenContext();

            // Act
            var result = sut.Create(request, dummyContext);

            // Assert
            Assert.Equal(range, result);
        }
        public void CreateWithAnonymousRequestReturnsCorrectResult()
        {
            // Fixture setup
            var sut          = new RangedNumberGenerator();
            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
        }
Пример #10
0
        public void CreateWithDifferentOperandTypeDoesNotThrowOnMultipleCall(object minimum, object maximum)
        {
            // Fixture setup
            var numbers = new Random();
            var request = new[]
            {
                new RangedNumberRequest(
                    typeof(decimal),
                    Convert.ChangeType(minimum, typeof(decimal)),
                    Convert.ChangeType(maximum, typeof(decimal))
                    ),
                new RangedNumberRequest(
                    typeof(double),
                    Convert.ChangeType(minimum, typeof(double)),
                    Convert.ChangeType(maximum, typeof(double))
                    ),
                new RangedNumberRequest(
                    typeof(decimal),
                    Convert.ChangeType(minimum, typeof(decimal)),
                    Convert.ChangeType(maximum, typeof(decimal))
                    )
            };
            var context = new DelegatingSpecimenContext
            {
                OnResolve = r =>
                {
                    if (r.Equals(typeof(double)))
                    {
                        return(numbers.NextDouble());
                    }
                    if (r.Equals(typeof(decimal)))
                    {
                        return(Convert.ToDecimal(numbers.Next()));
                    }

                    return(new NoSpecimen());
                }
            };
            var sut = new RangedNumberGenerator();

            // Exercise system and verify outcome
            foreach (var r in request)
            {
                Assert.Null(Record.Exception(() => sut.Create(r, context)));
            }

            // Teardown
        }
Пример #11
0
        public void ReturnsSameNumberWhenMinimumAndMaximumAreSame(Type requestType)
        {
            // Fixture setup
            var range   = Convert.ChangeType(42, requestType, CultureInfo.InvariantCulture);
            var sut     = new RangedNumberGenerator();
            var request = new RangedNumberRequest(requestType, range, range);

            var dummyContext = new DelegatingSpecimenContext();

            // Exercise system
            var result = sut.Create(request, dummyContext);

            // Verify outcome
            Assert.Equal(range, result);
            // Teardown
        }
        public void CreateWithDifferentOperandTypeDoesNotThrowOnMultipleCall(object minimum, object maximum)
        {
            // Fixture setup
            var numbers = new Random();
            var request = new[]
            {
                new RangedNumberRequest(
                    typeof(decimal),
                    Convert.ChangeType(minimum, typeof(decimal)),
                    Convert.ChangeType(maximum, typeof(decimal))
                    ),
                new RangedNumberRequest(
                    typeof(double),
                    Convert.ChangeType(minimum, typeof(double)),
                    Convert.ChangeType(maximum, typeof(double))
                    ),
                new RangedNumberRequest(
                    typeof(decimal),
                    Convert.ChangeType(minimum, typeof(decimal)),
                    Convert.ChangeType(maximum, typeof(decimal))
                    )
            };
            var context = new DelegatingSpecimenContext
            {
                OnResolve = r =>
                {
                    if (r.Equals(typeof(double)))
                    {
                        return(numbers.NextDouble());
                    }
                    if (r.Equals(typeof(decimal)))
                    {
                        return(Convert.ToDecimal(numbers.Next()));
                    }

#pragma warning disable 618
                    return(new NoSpecimen(r));

#pragma warning restore 618
                }
            };
            var sut = new RangedNumberGenerator();

            // Exercise system and verify outcome
            Array.ForEach(request, r => Assert.DoesNotThrow(() => sut.Create(r, context)));
            // Teardown
        }
Пример #13
0
        public void DoesNotThrowForHeterogeneousRequestsWithValuesGreaterThanInt16MaxValue()
        {
            var testCases = new[]
            {
                new
                {
                    request =
                        new RangedNumberRequest(
                            typeof(short), (short)byte.MaxValue, short.MaxValue),
                    contextStub =
                        new DelegatingSpecimenContext
                    {
                        OnResolve = r => short.MaxValue
                    }
                },
                new
                {
                    request =
                        new RangedNumberRequest(
                            typeof(int), (int)(short.MaxValue), int.MaxValue),
                    contextStub =
                        new DelegatingSpecimenContext
                    {
                        OnResolve = r => int.MaxValue
                    }
                },
                new
                {
                    request =
                        new RangedNumberRequest(
                            typeof(short), (short)byte.MaxValue, short.MaxValue),
                    contextStub =
                        new DelegatingSpecimenContext
                    {
                        OnResolve = r => short.MaxValue
                    }
                }
            };
            var sut = new RangedNumberGenerator();

            Func <int, object> actual = i =>
                                        sut.Create(testCases[i].request, testCases[i].contextStub);

            Assert.Null(Record.Exception(() =>
                                         Enumerable.Range(0, testCases.Length).Select(actual).ToList()));
        }
        public void CreateReturnsCorrectResult(Type operandType, object minimum, object maximum, object contextValue, object expectedResult)
        {
            // Arrange
            var sut     = new RangedNumberGenerator();
            var request = new RangedNumberRequest(operandType, minimum, maximum);
            var context = new DelegatingSpecimenContext
            {
                OnResolve = r =>
                {
                    Assert.Equal(request.OperandType, r);
                    return(contextValue);
                }
            };
            // Act
            var result = sut.Create(request, context);

            // Assert
            Assert.Equal(expectedResult, result);
        }
Пример #15
0
        public void CreateReturnsCorrectResult(Type operandType, object minimum, object maximum, object contextValue, object expectedResult)
        {
            // Fixture setup
            var sut     = new RangedNumberGenerator();
            var request = new RangedNumberRequest(operandType, minimum, maximum);
            var context = new DelegatingSpecimenContext
            {
                OnResolve = r =>
                {
                    Assert.Equal(request.OperandType, r);
                    return(contextValue);
                }
            };
            // Exercise system
            var result = sut.Create(request, context);

            // Verify outcome
            Assert.Equal(expectedResult, result);
            // Teardown
        }