Exemplo n.º 1
0
        public void ShouldUseInitialRequestAndReturnedRandomNumberForFiniteSequenceRequest()
        {
            // Arrange
            var request        = new object();
            var rsr            = new RangedSequenceRequest(request, minLength: 10, maxLength: 20);
            var sequenceLength = 42;
            FiniteSequenceRequest capturedSequenceRequest = null;
            var context = new DelegatingSpecimenContext
            {
                OnResolve = r =>
                {
                    if (r is RangedNumberRequest)
                    {
                        return(sequenceLength);
                    }

                    if (r is FiniteSequenceRequest fsr)
                    {
                        capturedSequenceRequest = fsr;
                    }

                    return(new NoSpecimen());
                }
            };

            var sut = new RangedSequenceRelay();

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

            // Assert
            var expectedSequenceRequest = new FiniteSequenceRequest(request, sequenceLength);

            Assert.Equal(expectedSequenceRequest, capturedSequenceRequest);
        }
Exemplo n.º 2
0
        public void ShouldEmitRandomNumberRequestWithCorrectBoundaries()
        {
            // Arrange
            var min = 10;
            var max = 20;
            var rsr = new RangedSequenceRequest(typeof(object), min, max);

            RangedNumberRequest capturedNumberRequest = null;
            var context = new DelegatingSpecimenContext
            {
                OnResolve = r =>
                {
                    if (r is RangedNumberRequest rnr)
                    {
                        capturedNumberRequest = rnr;
                    }

                    return(new NoSpecimen());
                }
            };

            var sut = new RangedSequenceRelay();

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

            // Assert
            Assert.NotNull(capturedNumberRequest);
            Assert.Equal(min, capturedNumberRequest.Minimum);
            Assert.Equal(max, capturedNumberRequest.Maximum);
        }
Exemplo n.º 3
0
        public void ShouldUseFiniteSequenceRequestResultForResult()
        {
            // Arrange
            var rsr            = new RangedSequenceRequest(typeof(object), minLength: 10, maxLength: 20);
            var expectedResult = new object();
            var context        = new DelegatingSpecimenContext
            {
                OnResolve = r =>
                {
                    if (r is RangedNumberRequest)
                    {
                        return(42);
                    }

                    if (r is FiniteSequenceRequest)
                    {
                        return(expectedResult);
                    }

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

            // Act
            var actualResult = sut.Create(rsr, context);

            // Assert
            Assert.Equal(expectedResult, actualResult);
        }
        public void SutIsEquatable()
        {
            // Act
            var sut = new RangedSequenceRequest(new object(), 10, 20);

            // Assert
            Assert.IsAssignableFrom <IEquatable <RangedSequenceRequest> >(sut);
        }
        public void SutDoesNotEqualAnonymousObject()
        {
            // Arrange
            var    sut             = new RangedSequenceRequest(new object(), 10, 20);
            object anonymousObject = new ConcreteType();

            // Act
            var result = sut.Equals(anonymousObject);

            // Assert
            Assert.False(result, "Equals");
        }
        public void SutDoesNotEqualNullSut()
        {
            // Arrange
            var sut = new RangedSequenceRequest(new object(), 10, 20);
            RangedSequenceRequest other = null;

            // Act
            var result = sut.Equals(other);

            // Assert
            Assert.False(result, "Equals");
        }
        public void GetHashCodeChangesWhenAnyMemberDiffers(object request, int minLength, int maxLength)
        {
            // Arrange
            var etalonHashCode = new RangedSequenceRequest(typeof(object), 10, 20).GetHashCode();
            var sut            = new RangedSequenceRequest(request, minLength, maxLength);

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

            // Assert
            Assert.NotEqual(etalonHashCode, result);
        }
        public void SutDoesNotEqualOtherObjectWhenRangeDifferButRequestMatches()
        {
            // Arrange
            var    request = new object();
            var    sut     = new RangedSequenceRequest(request, 10, 20);
            object other   = new RangedSequenceRequest(request, 1, 30);

            // Act
            var result = sut.Equals(other);

            // Assert
            Assert.False(result, "Equals");
        }
        public void SutDoesNotEqualOtherObjectWhenRequestsDifferButRangeMatches()
        {
            // Arrange
            var    min   = 10;
            var    max   = 10;
            var    sut   = new RangedSequenceRequest(new object(), min, max);
            object other = new RangedSequenceRequest(new object(), min, max);

            // Act
            var result = sut.Equals(other);

            // Assert
            Assert.False(result, "Equals");
        }
        public void ShouldExposeTheValuesPassedToConstructor()
        {
            // Arrange
            var request = new object();
            var min     = 100;
            var max     = 200;

            // Act
            var sut = new RangedSequenceRequest(request, min, max);

            // Assert
            Assert.Equal(request, sut.Request);
            Assert.Equal(min, sut.MinLength);
            Assert.Equal(max, sut.MaxLength);
        }
        public void SutEqualsOtherSutWhenBothRequestsAndRangeMatch()
        {
            // Arrange
            var request = new object();
            var min     = 10;
            var max     = 20;
            var sut     = new RangedSequenceRequest(request, min, max);
            var other   = new RangedSequenceRequest(request, min, max);

            // Act
            var result = sut.Equals(other);

            // Assert
            Assert.True(result, "Equals");
        }
        public void CreateWithRangedSequenceRequestConstrainedByMinAndMaxLengthReturnsCorrectResult(int min, int max)
        {
            // Arrange
            var memberType = typeof(string[]);

            var minLengthAttribute = new MinLengthAttribute(min);
            var maxLengthAttribute = new MaxLengthAttribute(max);
            var request            = new FakeMemberInfo(
                new ProvidedAttribute(minLengthAttribute, true),
                new ProvidedAttribute(maxLengthAttribute, true));

            var expectedRangedSequenceRequest = new RangedSequenceRequest(typeof(string), min, max);
            var expectedResult = new List <string>();

            var context = new DelegatingSpecimenContext
            {
                OnResolve = r =>
                {
                    if (expectedRangedSequenceRequest.Equals(r))
                    {
                        return(expectedResult);
                    }
                    return(new NoSpecimen());
                }
            };

            var sut = new MinAndMaxLengthAttributeRelay
            {
                RequestMemberTypeResolver = new DelegatingRequestMemberTypeResolver
                {
                    OnTryGetMemberType = r => memberType
                }
            };

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

            // Assert
            Assert.Equal(expectedResult, result);
        }
Exemplo n.º 13
0
        public void ShouldReturnNoSpecimenIfUnableToGetRandomLength()
        {
            // Arrange
            var rsr     = new RangedSequenceRequest(typeof(object), minLength: 10, maxLength: 20);
            var context = new DelegatingSpecimenContext
            {
                OnResolve = r =>
                {
                    if (r is RangedNumberRequest)
                    {
                        return(new NoSpecimen());
                    }

                    return(42);
                }
            };
            var sut = new RangedSequenceRelay();

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

            // Assert
            Assert.IsType <NoSpecimen>(result);
        }