Example #1
0
        public void AllowNullDeterminesWhetherNullCanBeReturned(bool allowNull)
        {
            var nullFound = false;

            var executeStrategy = Substitute.For <IExecuteStrategy>();

            var buildChain = new BuildHistory();

            executeStrategy.BuildChain.Returns(buildChain);

            var sut = new NumericValueGenerator
            {
                AllowNull = allowNull
            };

            for (var index = 0; index < 10000; index++)
            {
                var value = sut.Generate(executeStrategy, typeof(int?));

                if (value == null)
                {
                    nullFound = true;

                    break;
                }
            }

            nullFound.Should().Be(allowNull);
        }
        public void GenerateCanEvalutateManyTimesTest(Type type, bool typeSupported, double min, double max)
        {
            if (typeSupported == false)
            {
                // Ignore this test
                return;
            }

            var target = new NumericValueGenerator();

            for (var index = 0; index < 10000; index++)
            {
                var value = target.Generate(type, null, null);
                
                if (type.IsNullable() && value == null)
                {
                    // Nullable values could be returned so nothing more to assert
                    return;
                }

                var evaluateType = type;

                if (type.IsNullable())
                {
                    evaluateType = type.GenericTypeArguments[0];
                }

                value.Should().BeOfType(evaluateType);

                var convertedValue = Convert.ToDouble(value);

                convertedValue.Should().BeGreaterOrEqualTo(min);
                convertedValue.Should().BeLessOrEqualTo(max);
            }
        }
        public void PriorityReturnsValueHigherThanNumericValueGenerator()
        {
            var sut   = new AgeValueGenerator();
            var other = new NumericValueGenerator();

            sut.Priority.Should().BeGreaterThan(other.Priority);
        }
Example #4
0
        public void PriorityReturnsGreaterThanNumericValueGenerator()
        {
            var sut = new Wrapper();

            var generator = new NumericValueGenerator();

            sut.Priority.Should().BeGreaterThan(generator.Priority);
        }
Example #5
0
        public void UpdateValueGeneratorThrowsExceptionWhenOnlyBaseClassFound()
        {
            var sut       = new BuildConfiguration();
            var generator = new NumericValueGenerator();

            sut.ValueGenerators.Add(generator);

            Action action = () => sut.UpdateValueGenerator <CountValueGenerator>(x =>
            {
                // Do nothing
            });

            action.Should().Throw <InvalidOperationException>();
        }
Example #6
0
        public void UpdateValueGeneratorUpdateMatchingRuleMatchingExplicitType()
        {
            var sut    = new BuildConfiguration();
            var first  = new CountValueGenerator();
            var second = new NumericValueGenerator();

            sut.ValueGenerators.Add(first);
            sut.ValueGenerators.Add(second);

            var config = sut.UpdateValueGenerator <NumericValueGenerator>(x => { x.AllowNull = true; });

            config.Should().Be(sut);

            first.AllowNull.Should().BeFalse();
            second.AllowNull.Should().BeTrue();
        }
        public void GenerateCanReturnNonMinValuesTest()
        {
            var valueFound = false;

            var target = new NumericValueGenerator();

            for (var index = 0; index < 1000; index++)
            {
                var value = target.Generate(typeof(double), null, null);

                var actual = Convert.ToDouble(value);

                if (actual.Equals(double.MinValue) == false)
                {
                    valueFound = true;

                    break;
                }
            }

            valueFound.Should().BeTrue();
        }
        public void GenerateCanReturnNullAndNonNullValuesTest()
        {
            var nullFound = false;
            var valueFound = false;

            var target = new NumericValueGenerator();

            for (var index = 0; index < 1000; index++)
            {
                var value = (int?) target.Generate(typeof(int?), null, null);

                if (value == null)
                {
                    nullFound = true;
                }
                else
                {
                    valueFound = true;
                }

                if (nullFound && valueFound)
                {
                    break;
                }
            }

            nullFound.Should().BeTrue();
            valueFound.Should().BeTrue();
        }
        public void IsSupportedThrowsExceptionWithNullTypeTest()
        {
            var target = new NumericValueGenerator();

            Action action = () => target.IsSupported(null, null, null);

            action.ShouldThrow<ArgumentNullException>();
        }
        public void IsSupportedEvaluatesRequestedTypeTest(Type type, bool typeSupported, double min, double max)
        {
            var target = new NumericValueGenerator();

            var actual = target.IsSupported(type, null, null);

            actual.Should().Be(typeSupported);
        }
        public void GenerateValidatesRequestedTypeTest(Type type, bool typeSupported, double min, double max)
        {
            var target = new NumericValueGenerator();

            Action action = () => target.Generate(type, null, null);

            if (typeSupported)
            {
                action.ShouldNotThrow();
            }
            else
            {
                action.ShouldThrow<NotSupportedException>();
            }
        }
        public void GenerateReturnsDecimalValuesTest(Type type)
        {
            var decimalFound = false;

            var target = new NumericValueGenerator();

            for (var index = 0; index < 1000; index++)
            {
                var value = target.Generate(type, null, null);

                var actual = Convert.ToDouble(value);

                if (unchecked(actual != (int) actual))
                {
                    decimalFound = true;

                    break;
                }
            }

            decimalFound.Should().BeTrue();
        }
        public void GenerateDoesNotReturnInfinityForDoubleTest()
        {
            var target = new NumericValueGenerator();

            var value = target.Generate(typeof(double), null, null);

            var actual = Convert.ToDouble(value);

            double.IsInfinity(actual).Should().BeFalse();
        }
        public void HasHigherPriorityThanNumericValueGeneratorTest()
        {
            var target = new AgeValueGenerator();
            var other = new NumericValueGenerator();

            target.Priority.Should().BeGreaterThan(other.Priority);
        }
        public void PriorityReturnsGreaterThanNumericValueGeneratorTest()
        {
            var target = new CountValueGenerator();
            var generator = new NumericValueGenerator();

            target.Priority.Should().BeGreaterThan(generator.Priority);
        }
Example #16
0
        public void AllowNullReturnsFalseByDefault()
        {
            var sut = new NumericValueGenerator();

            sut.AllowNull.Should().BeFalse();
        }