Example #1
0
        public void ShouldRespectUnderlyingEnumType(Type enumType, Type underlyingType)
        {
            // Arrange
            var sut     = new EnumRangedRequestRelay();
            var request =
                new RangedRequest(memberType: enumType, operandType: typeof(int), minimum: 1, maximum: 2);

            RangedNumberRequest capturedNumericRequest = null;
            var context = new DelegatingSpecimenContext
            {
                OnResolve = r =>
                {
                    capturedNumericRequest = (RangedNumberRequest)r;
                    return(new NoSpecimen());
                }
            };

            // Act
            sut.Create(request, context);

            // Assert
            Assert.NotNull(capturedNumericRequest);
            Assert.Equal(underlyingType, capturedNumericRequest.OperandType);
            Assert.IsType(underlyingType, capturedNumericRequest.Minimum);
            Assert.IsType(underlyingType, capturedNumericRequest.Maximum);
        }
Example #2
0
        public void ShouldCorrectPassMinimumAndMaximum()
        {
            // Arrange
            var sut     = new EnumRangedRequestRelay();
            int minimum = 5;
            int maximum = 10;

            var request = new RangedRequest(typeof(EnumType), typeof(int), minimum, maximum);
            RangedNumberRequest capturedNumericRequest = null;
            var context = new DelegatingSpecimenContext
            {
                OnResolve = r =>
                {
                    capturedNumericRequest = (RangedNumberRequest)r;
                    return(new NoSpecimen());
                }
            };

            // Act
            sut.Create(request, context);

            // Assert
            Assert.NotNull(capturedNumericRequest);
            Assert.Equal(minimum, capturedNumericRequest.Minimum);
            Assert.Equal(maximum, capturedNumericRequest.Maximum);
        }
Example #3
0
        public void ShouldCorrectPassMinimumAndMaximumAsMilliseconds()
        {
            // Arrange
            var sut = new TimeSpanRangedRequestRelay();

            var request = new RangedRequest(typeof(TimeSpan), typeof(TimeSpan), "00:00:00", "12:00:00");
            RangedNumberRequest capturedNumericRequest = null;

            var context = new DelegatingSpecimenContext
            {
                OnResolve = r =>
                {
                    capturedNumericRequest = (RangedNumberRequest)r;
                    return(new NoSpecimen());
                }
            };

            // Act
            sut.Create(request, context);

            // Assert
            Assert.NotNull(capturedNumericRequest);
            Assert.Equal(0.0, capturedNumericRequest.Minimum);
            Assert.Equal(12 * 60 * 60 * 1000.0, capturedNumericRequest.Maximum);
        }
        public void ShouldCorrectPassMinimumAndMaximumAsTicks()
        {
            // Arrange
            var sut = new DateTimeRangedRequestRelay();

            var request = new RangedRequest(typeof(DateTime), typeof(DateTime), "2020-01-01 00:00:00", "2020-12-31 23:59:59");
            RangedNumberRequest capturedNumericRequest = null;

            var context = new DelegatingSpecimenContext
            {
                OnResolve = r =>
                {
                    capturedNumericRequest = (RangedNumberRequest)r;
                    return(new NoSpecimen());
                }
            };

            // Act
            sut.Create(request, context);

            // Assert
            Assert.NotNull(capturedNumericRequest);
            Assert.Equal(new DateTime(2020, 1, 1, 0, 0, 0).Ticks, capturedNumericRequest.Minimum);
            Assert.Equal(new DateTime(2020, 12, 31, 23, 59, 59).Ticks, capturedNumericRequest.Maximum);
        }
        public void SutIsEquatable()
        {
            // Arrange
            var sut = new RangedRequest(typeof(int), typeof(int), 1, 2);

            // Act & assert
            Assert.IsAssignableFrom <IEquatable <RangedRequest> >(sut);
        }
Example #6
0
        public void SutIsEquatable()
        {
            // Fixture setup
            var sut = new RangedRequest(typeof(int), typeof(int), 1, 2);

            // Exercise system and Verify outcome
            Assert.IsAssignableFrom <IEquatable <RangedRequest> >(sut);
            // Teardown
        }
        public void ShouldCorrectlyConvertMaximum(object bounaryValue)
        {
            // Arrange
            var sut = new RangedRequest(typeof(int), typeof(int), 0, bounaryValue);

            // Act
            var convertedValue = sut.GetConvertedMaximum(typeof(int));

            // Assert
            Assert.Equal(42, convertedValue);
        }
        public void SutIsNotEqualNullSut()
        {
            // Arrange
            var           sut     = new RangedRequest(typeof(int), typeof(int), 1, 2);
            RangedRequest nullSut = null;

            // Act
            var areEqual = sut.Equals(nullSut);

            // Assert
            Assert.False(areEqual);
        }
        public void SutIsNotEqualOtherSutWhenAnyMemberDiffers(Type memberType, Type operandType, object min, object max)
        {
            // Arrange
            var           sut   = new RangedRequest(typeof(long), typeof(int), 1, 3);
            RangedRequest other = new RangedRequest(memberType, operandType, min, max);

            // Act
            bool areEqual = sut.Equals(other);

            // Assert
            Assert.False(areEqual);
        }
Example #10
0
        public void ShouldCorrectlyConvertMaximum(object bounaryValue)
        {
            // Fixture setup
            var sut = new RangedRequest(typeof(int), typeof(int), 0, bounaryValue);

            // Exercise system
            var convertedValue = sut.GetConvertedMaximum(typeof(int));

            // Verify outcome
            Assert.Equal(42, convertedValue);
            // Teardown
        }
        public void HashCodeIsDifferentWhenAnyMemberChanges(Type memberType, Type operandType, object min, object max)
        {
            // Arrange
            var etalonHashCode = new RangedRequest(typeof(long), typeof(int), 1, 3).GetHashCode();
            var sut            = new RangedRequest(memberType, operandType, min, max);

            // Act
            var newHashCode = sut.GetHashCode();

            // Assert
            Assert.NotEqual(etalonHashCode, newHashCode);
        }
        public void SutIsNotEqualOtherTypeObject()
        {
            // Arrange
            var sut       = new RangedRequest(typeof(int), typeof(int), 1, 2);
            var otherType = new object();

            // Act
            var areEqual = sut.Equals(otherType);

            // Assert
            Assert.False(areEqual);
        }
        public void FailsWithMeaningfulExceptionWhenMaximumCannotBeConvertedWithoutOverflow()
        {
            // Arrange
            double valueWithOverflow = (double)long.MaxValue;

            var sut = new RangedRequest(typeof(long), typeof(double), 0, valueWithOverflow);

            // Act & assert
            var actualEx = Assert.Throws <OverflowException>(() =>
                                                             sut.GetConvertedMaximum(typeof(long)));

            Assert.Contains("To solve the issue", actualEx.Message);
        }
Example #14
0
        public void ShouldReturnNoResultIfRangedRequestIsOfNonNumericMemberType(Type memberType)
        {
            // Arrange
            var sut     = new NumericRangedRequestRelay();
            var request = new RangedRequest(memberType, typeof(int), 0, 42);
            var context = new DelegatingSpecimenContext();

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

            // Assert
            Assert.IsType <NoSpecimen>(result);
        }
Example #15
0
        public void SutIsNotEqualOtherObjectWhenAnyMemberDiffers(Type memberType, Type operandType, object min, object max)
        {
            // Fixture setup
            var    sut   = new RangedRequest(typeof(long), typeof(int), 1, 3);
            object other = new RangedRequest(memberType, operandType, min, max);

            // Exercise system
            bool areEqual = sut.Equals(other);

            // Verify outcome
            Assert.False(areEqual);
            // Teardown
        }
Example #16
0
        public void SutIsNotEqualNullSut()
        {
            // Fixture setup
            var           sut     = new RangedRequest(typeof(int), typeof(int), 1, 2);
            RangedRequest nullSut = null;

            // Exercise system
            var areEqual = sut.Equals(nullSut);

            // Verify outcome
            Assert.False(areEqual);
            // Teardown
        }
Example #17
0
        public void SutIsNotEqualOtherTypeObject()
        {
            // Fixture setup
            var sut       = new RangedRequest(typeof(int), typeof(int), 1, 2);
            var otherType = new object();

            // Exercise system
            var areEqual = sut.Equals(otherType);

            // Verify outcome
            Assert.False(areEqual);
            // Teardown
        }
Example #18
0
        public void HashCodeIsDifferentWhenAnyMemberChanges(Type memberType, Type operandType, object min, object max)
        {
            // Fixture setup
            var etalonHashCode = new RangedRequest(typeof(long), typeof(int), 1, 3).GetHashCode();
            var sut            = new RangedRequest(memberType, operandType, min, max);

            // Exercise system
            var newHashCode = sut.GetHashCode();

            // Verify outcome
            Assert.NotEqual(etalonHashCode, newHashCode);
            // Teardown
        }
Example #19
0
        public void ShouldNotHandleRequestIfMemberTypeIsNotEnum()
        {
            // Arrange
            var sut     = new EnumRangedRequestRelay();
            var request =
                new RangedRequest(memberType: typeof(object), operandType: typeof(EnumType), minimum: 0, maximum: 1);
            var context = new DelegatingSpecimenContext();

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

            // Assert
            Assert.Equal(new NoSpecimen(), result);
        }
Example #20
0
        public void ShouldReturnNoResultIfRangedRequestIsOfNonNumericMemberType(Type memberType)
        {
            // Fixture setup
            var sut     = new NumericRangedRequestRelay();
            var request = new RangedRequest(memberType, typeof(int), 0, 42);
            var context = new DelegatingSpecimenContext();

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

            // Verify outcome
            Assert.IsType <NoSpecimen>(result);
            // Teardown
        }
Example #21
0
        public void FailsWithMeaningfulExceptionWhenMaximumCannotBeConvertedWithoutOverflow()
        {
            // Fixture setup
            double valueWithOverflow = (double)long.MaxValue;

            var sut = new RangedRequest(typeof(long), typeof(double), 0, valueWithOverflow);

            // Exercise system and verify outcome
            var actualEx = Assert.Throws <OverflowException>(() =>
                                                             sut.GetConvertedMaximum(typeof(long)));

            Assert.Contains("To solve the issue", actualEx.Message);
            // Teardown
        }
        public void ShouldConvertLiteralEnumValues()
        {
            // Arrange
            var sut = new RangedRequest(
                typeof(EnumType), typeof(string), nameof(EnumType.First), nameof(EnumType.Third));

            // Act
            var convertedMin = sut.GetConvertedMinimum(typeof(EnumType));
            var convertedMax = sut.GetConvertedMaximum(typeof(EnumType));

            // Assert
            Assert.Equal(EnumType.First, convertedMin);
            Assert.Equal(EnumType.Third, convertedMax);
        }
        public void ToStringShouldBeOverridden()
        {
            // Arrange
            var sut = new RangedRequest(typeof(long), typeof(int), 42, 100);

            // Act
            var stringResult = sut.ToString();

            // Assert
            Assert.Contains("Int32", stringResult);
            Assert.Contains("Int64", stringResult);
            Assert.Contains("42", stringResult);
            Assert.Contains("100", stringResult);
        }
Example #24
0
        public void ShouldFailWithMeaningfulExceptionIfUnableToCastWithoutOverflow()
        {
            // Arrange
            var sut = new NumericRangedRequestRelay();

            double overflowedValue = long.MaxValue;
            var    request         = new RangedRequest(typeof(long), typeof(double), 0, overflowedValue);
            var    context         = new DelegatingSpecimenContext();

            // Act & assert
            var ex = Assert.Throws <OverflowException>(() =>
                                                       sut.Create(request, context));

            Assert.Contains("To solve the issue", ex.Message);
        }
Example #25
0
        public void ToStringShouldBeOverridden()
        {
            // Fixture setup
            var sut = new RangedRequest(typeof(long), typeof(int), 42, 100);

            // Exercise system
            var stringResult = sut.ToString();

            // Verify outcome
            Assert.Contains("Int32", stringResult);
            Assert.Contains("Int64", stringResult);
            Assert.Contains("42", stringResult);
            Assert.Contains("100", stringResult);

            // Teardown
        }
Example #26
0
        public void ShouldReturnNoSpecimenIfUnableToSatisfyRangedRequest()
        {
            // Arrange
            var sut     = new EnumRangedRequestRelay();
            var request =
                new RangedRequest(memberType: typeof(EnumType), operandType: typeof(int), minimum: 1, maximum: 2);
            var context = new DelegatingSpecimenContext
            {
                OnResolve = _ => new NoSpecimen()
            };

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

            // Assert
            Assert.Equal(new NoSpecimen(), result);
        }
Example #27
0
        public void ShouldCorrectlyConvertNumericValue(EnumType expectedResult, int numericValue)
        {
            // Arrange
            var sut     = new EnumRangedRequestRelay();
            var request =
                new RangedRequest(memberType: typeof(EnumType), operandType: typeof(int), minimum: 1, maximum: 3);
            var context = new DelegatingSpecimenContext
            {
                OnResolve = _ => numericValue
            };

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

            // Assert
            Assert.Equal(expectedResult, result);
        }
        public void SutIsEqualOtherObjectIfAllMembersEqual()
        {
            // Arrange
            var memberType  = typeof(decimal);
            var operandType = typeof(int);
            var min         = 1;
            var max         = 3;

            var    sut   = new RangedRequest(memberType, operandType, min, max);
            object other = new RangedRequest(memberType, operandType, min, max);

            // Act
            bool areEqual = sut.Equals(other);

            // Assert
            Assert.True(areEqual);
        }
        public void PropertiesShouldReturnPassedToConstructorValues()
        {
            // Arrange
            var memberType  = typeof(object);
            var operandType = typeof(int);
            var min         = 42;
            var max         = 100;

            // Act
            var sut = new RangedRequest(memberType, operandType, min, max);

            // Assert
            Assert.Equal(memberType, sut.MemberType);
            Assert.Equal(operandType, sut.OperandType);
            Assert.Equal(min, sut.Minimum);
            Assert.Equal(max, sut.Maximum);
        }
Example #30
0
        public void ShouldCorrectlyConvertDateTime()
        {
            // Fixture setup
            var minimum = DateTime.MinValue;
            var maximum = DateTime.MaxValue;
            var sut     = new RangedRequest(typeof(DateTime), typeof(DateTime), minimum.ToString("o"), maximum.ToString("o"));

            // Exercise system
            var convertedMinimumValue = sut.GetConvertedMinimum(typeof(DateTime));
            var convertedMaximumValue = sut.GetConvertedMaximum(typeof(DateTime));

            // Verify outcome
            Assert.Equal(minimum, convertedMinimumValue);
            Assert.Equal(maximum, convertedMaximumValue);

            // Teardown
        }