コード例 #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);
        }
コード例 #2
0
        public void CreateFiltersOmitSpecimenInstances()
        {
            // Arrange
            var request     = new object();
            var count       = 3;
            var manyRequest = new FiniteSequenceRequest(request, count);

            var results = new object[]
            {
                new object(),
                new OmitSpecimen(),
                new object()
            };
            var q       = new Queue <object>(results);
            var context = new DelegatingSpecimenContext
            {
                OnResolve = r => request.Equals(r) ? q.Dequeue() : new NoSpecimen()
            };

            var sut = new StableFiniteSequenceRelay();
            // Act
            var actual = sut.Create(manyRequest, context);
            // Assert
            var iter = Assert.IsAssignableFrom <IEnumerable <object> >(actual);

            Assert.True(
                results.Where(x => !(x is OmitSpecimen)).SequenceEqual(iter),
                "Actual sequence is not equal to expected sequence.");
        }
コード例 #3
0
        public void CreateFiltersOmitSpecimenInstances()
        {
            // Fixture setup
            var request     = new object();
            var count       = 3;
            var manyRequest = new FiniteSequenceRequest(request, count);

            var results = new object[]
            {
                new object(),
                new OmitSpecimen(),
                new object()
            };
            var q       = new Queue <object>(results);
            var context = new DelegatingSpecimenContext
            {
                OnResolve = r => request.Equals(r) ? q.Dequeue() : new NoSpecimen(r)
            };

            var sut = new FiniteSequenceRelay();
            // Exercise system
            var actual = sut.Create(manyRequest, context);
            // Verify outcome
            var iter = Assert.IsAssignableFrom <IEnumerable <object> >(actual);

            Assert.True(
                results.Where(x => !(x is OmitSpecimen)).SequenceEqual(iter));
            // Teardown
        }
コード例 #4
0
        public void SutIsEquatable()
        {
            // Arrange
            var dummyCount = 3;
            // Act
            var sut = new FiniteSequenceRequest(new object(), dummyCount);

            // Assert
            Assert.IsAssignableFrom <IEquatable <FiniteSequenceRequest> >(sut);
        }
コード例 #5
0
 public void SutIsEquatable()
 {
     // Fixture setup
     var dummyCount = 3;
     // Exercise system
     var sut = new FiniteSequenceRequest(new object(), dummyCount);
     // Verify outcome
     Assert.IsAssignableFrom<IEquatable<FiniteSequenceRequest>>(sut);
     // Teardown
 }
コード例 #6
0
 public void SutDoesNotEqualNullSut()
 {
     // Fixture setup
     var sut = new FiniteSequenceRequest(new object(), 3);
     FiniteSequenceRequest other = null;
     // Exercise system
     var result = sut.Equals(other);
     // Verify outcome
     Assert.False(result, "Equals");
     // Teardown
 }
コード例 #7
0
        public void SutDoesNotEqualAnonymousObject()
        {
            // Arrange
            var    sut             = new FiniteSequenceRequest(new object(), 3);
            object anonymousObject = new ConcreteType();
            // Act
            var result = sut.Equals(anonymousObject);

            // Assert
            Assert.False(result, "Equals");
        }
コード例 #8
0
        public void SutDoesNotEqualNullSut()
        {
            // Arrange
            var sut = new FiniteSequenceRequest(new object(), 3);
            FiniteSequenceRequest other = null;
            // Act
            var result = sut.Equals(other);

            // Assert
            Assert.False(result, "Equals");
        }
コード例 #9
0
        public void SutIsEquatable()
        {
            // Fixture setup
            var dummyCount = 3;
            // Exercise system
            var sut = new FiniteSequenceRequest(new object(), dummyCount);

            // Verify outcome
            Assert.IsAssignableFrom <IEquatable <FiniteSequenceRequest> >(sut);
            // Teardown
        }
コード例 #10
0
        public void CreateRequestsReturnsCorrectResult(int requestedCount)
        {
            // Arrange
            var expectedRequest = new object();
            var sut             = new FiniteSequenceRequest(expectedRequest, requestedCount);
            // Act
            var result = sut.CreateRequests().ToList();

            // Assert
            Assert.Equal(requestedCount, result.Count);
            Assert.True(result.All(expectedRequest.Equals));
        }
コード例 #11
0
        public void SutDoesNotEqualAnonymousObject()
        {
            // Fixture setup
            var    sut             = new FiniteSequenceRequest(new object(), 3);
            object anonymousObject = new FileStyleUriParser();
            // Exercise system
            var result = sut.Equals(anonymousObject);

            // Verify outcome
            Assert.False(result, "Equals");
            // Teardown
        }
コード例 #12
0
        public void SutDoesNotEqualNullSut()
        {
            // Fixture setup
            var sut = new FiniteSequenceRequest(new object(), 3);
            FiniteSequenceRequest other = null;
            // Exercise system
            var result = sut.Equals(other);

            // Verify outcome
            Assert.False(result, "Equals");
            // Teardown
        }
コード例 #13
0
        public void SutDoesNotEqualOtherSutWhenRequestsDifferButCountsMatch()
        {
            // Arrange
            var count = 1;
            var sut   = new FiniteSequenceRequest(new object(), count);
            var other = new FiniteSequenceRequest(new object(), count);
            // Act
            var result = sut.Equals(other);

            // Assert
            Assert.False(result, "Equals");
        }
コード例 #14
0
 public void CreateRequestsReturnsCorrectResult(int requestedCount)
 {
     // Fixture setup
     var expectedRequest = new object();
     var sut = new FiniteSequenceRequest(expectedRequest, requestedCount);
     // Exercise system
     var result = sut.CreateRequests().ToList();
     // Verify outcome
     Assert.Equal(requestedCount, result.Count);
     Assert.True(result.All(expectedRequest.Equals));
     // Teardown
 }
コード例 #15
0
        public void SutDoesNotEqualOtherSutWhenCountsDiffer()
        {
            // Arrange
            var request = new object();
            var sut     = new FiniteSequenceRequest(request, 1);
            var other   = new FiniteSequenceRequest(request, 2);
            // Act
            var result = sut.Equals(other);

            // Assert
            Assert.False(result, "Equals");
        }
コード例 #16
0
        public void SutEqualsOtherSutWhenBothRequestsAndCountMatch()
        {
            // Arrange
            var request = new object();
            var count   = 4;
            var sut     = new FiniteSequenceRequest(request, count);
            var other   = new FiniteSequenceRequest(request, count);
            // Act
            var result = sut.Equals(other);

            // Assert
            Assert.True(result, "Equals");
        }
コード例 #17
0
        public void CreateRequestsReturnsCorrectResult(int requestedCount)
        {
            // Fixture setup
            var expectedRequest = new object();
            var sut             = new FiniteSequenceRequest(expectedRequest, requestedCount);
            // Exercise system
            var result = sut.CreateRequests().ToList();

            // Verify outcome
            Assert.Equal(requestedCount, result.Count);
            Assert.True(result.All(expectedRequest.Equals));
            // Teardown
        }
コード例 #18
0
        public void SutDoesNotEqualOtherSutWhenCountsDiffer()
        {
            // Fixture setup
            var request = new object();
            var sut     = new FiniteSequenceRequest(request, 1);
            var other   = new FiniteSequenceRequest(request, 2);
            // Exercise system
            var result = sut.Equals(other);

            // Verify outcome
            Assert.False(result, "Equals");
            // Teardown
        }
コード例 #19
0
        public void SutDoesNotEqualOtherObjectWhenRequestsDifferButCountsMatch()
        {
            // Fixture setup
            var    count = 1;
            var    sut   = new FiniteSequenceRequest(new object(), count);
            object other = new FiniteSequenceRequest(new object(), count);
            // Exercise system
            var result = sut.Equals(other);

            // Verify outcome
            Assert.False(result, "Equals");
            // Teardown
        }
コード例 #20
0
        public void GetHashCodeWhenCountIsSpecifiedReturnsCorrectResult()
        {
            // Arrange
            var request = new object();
            var count   = 19;
            var sut     = new FiniteSequenceRequest(request, count);
            // Act
            var result = sut.GetHashCode();
            // Assert
            var expectedHashCode = request.GetHashCode() ^ count.GetHashCode();

            Assert.Equal(expectedHashCode, result);
        }
コード例 #21
0
        public void SutEqualsOtherSutWhenBothRequestsAndCountMatch()
        {
            // Fixture setup
            var request = new object();
            var count   = 4;
            var sut     = new FiniteSequenceRequest(request, count);
            var other   = new FiniteSequenceRequest(request, count);
            // Exercise system
            var result = sut.Equals(other);

            // Verify outcome
            Assert.True(result, "Equals");
            // Teardown
        }
コード例 #22
0
        public void CreateWithFiniteSequenceRequestConstrainedbyMinAndMaxLengthReturnsCorrectResult(int min, int max)
        {
            // Arrange
            var memberType = typeof(string[]);
            var randomNumberWithinRange = (min + max) / 2;

            var minLengthAttribute = new MinLengthAttribute(min);
            var maxLengthAttribute = new MaxLengthAttribute(max);

            var request = new FakeMemberInfo(
                new ProvidedAttribute(minLengthAttribute, true),
                new ProvidedAttribute(maxLengthAttribute, true));

            var expectedRangedNumberRequest   = new RangedNumberRequest(typeof(int), min, max);
            var expectedFiniteSequenceRequest = new FiniteSequenceRequest(
                memberType.GetElementType(),
                randomNumberWithinRange);

            var expectedResult = new List <string>();

            var context = new DelegatingSpecimenContext
            {
                OnResolve = r =>
                {
                    if (r.Equals(expectedRangedNumberRequest))
                    {
                        return(randomNumberWithinRange);
                    }
                    if (r.Equals(expectedFiniteSequenceRequest))
                    {
                        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);
        }
コード例 #23
0
        public void GetHashCodeWhenCountIsSpecifiedReturnsCorrectResult()
        {
            // Fixture setup
            var request = new object();
            var count   = 19;
            var sut     = new FiniteSequenceRequest(request, count);
            // Exercise system
            var result = sut.GetHashCode();
            // Verify outcome
            var expectedHashCode = request.GetHashCode() ^ count.GetHashCode();

            Assert.Equal(expectedHashCode, result);
            // Teardown
        }
コード例 #24
0
        public void CreateWithFiniteSequenceRequestReturnsCorrectResult()
        {
            // Fixture setup
            var request = new object();
            var count = 3;
            var manyRequest = new FiniteSequenceRequest(request, count);

            var expectedResult = new object();
            var container = new DelegatingSpecimenContext { OnResolve = r => request.Equals(r) ? expectedResult : new NoSpecimen() };

            var sut = new FiniteSequenceRelay();
            // Exercise system
            var result = sut.Create(manyRequest, container);
            // Verify outcome
            var actual = Assert.IsAssignableFrom<IEnumerable<object>>(result);
            Assert.True(actual.All(expectedResult.Equals));
            // Teardown
        }
コード例 #25
0
        public void CreateReturnsStableSequence()
        {
            // Arrange
            var request     = new object();
            var count       = 3;
            var manyRequest = new FiniteSequenceRequest(request, count);

            var context = new DelegatingSpecimenContext {
                OnResolve = r => request.Equals(r) ? new object() : new NoSpecimen()
            };

            var sut = new StableFiniteSequenceRelay();
            // Act
            var result = sut.Create(manyRequest, context);
            // Assert
            var expected = Assert.IsAssignableFrom <IEnumerable <object> >(result);

            Assert.True(expected.SequenceEqual(expected));
        }
コード例 #26
0
        public void CreateWithFiniteSequenceRequestReturnsCorrectResult()
        {
            // Arrange
            var request     = new object();
            var count       = 3;
            var manyRequest = new FiniteSequenceRequest(request, count);

            var expectedResult = new object();
            var container      = new DelegatingSpecimenContext {
                OnResolve = r => request.Equals(r) ? expectedResult : new NoSpecimen()
            };

            var sut = new FiniteSequenceRelay();
            // Act
            var result = sut.Create(manyRequest, container);
            // Assert
            var actual = Assert.IsAssignableFrom <IEnumerable <object> >(result);

            Assert.True(actual.All(expectedResult.Equals));
        }
コード例 #27
0
        public void CreateReturnsStableSequence()
        {
            // Fixture setup
            var request     = new object();
            var count       = 3;
            var manyRequest = new FiniteSequenceRequest(request, count);

            var context = new DelegatingSpecimenContext {
                OnResolve = r => request.Equals(r) ? new object() : new NoSpecimen(r)
            };

            var sut = new StableFiniteSequenceRelay();
            // Exercise system
            var result = sut.Create(manyRequest, context);
            // Verify outcome
            var expected = Assert.IsAssignableFrom <IEnumerable <object> >(result);

            Assert.True(expected.SequenceEqual(expected));
            // Teardown
        }
コード例 #28
0
        public void CreateWithManyRequestReturnsCorrectResult()
        {
            // Arrange
            var request             = new MultipleRequest(new object());
            var count               = 7;
            var expectedTranslation = new FiniteSequenceRequest(request.Request, 7);
            var expectedResult      = new object();
            var container           = new DelegatingSpecimenContext {
                OnResolve = r => expectedTranslation.Equals(r) ? expectedResult : new NoSpecimen()
            };

            var sut = new MultipleRelay {
                Count = count
            };
            // Act
            var result = sut.Create(request, container);

            // Assert
            Assert.Equal(expectedResult, result);
        }
コード例 #29
0
        public void CreateWithManyRequestReturnsCorrectResult()
        {
            // Fixture setup
            var request             = new MultipleRequest(new object());
            var count               = 7;
            var expectedTranslation = new FiniteSequenceRequest(request.Request, 7);
            var expectedResult      = new object();
            var container           = new DelegatingSpecimenContext {
                OnResolve = r => expectedTranslation.Equals(r) ? expectedResult : new NoSpecimen(r)
            };

            var sut = new MultipleRelay {
                Count = count
            };
            // Exercise system
            var result = sut.Create(request, container);

            // Verify outcome
            Assert.Equal(expectedResult, result);
            // Teardown
        }
コード例 #30
0
        public void CreateFiltersOmitSpecimenInstances()
        {
            // Fixture setup
            var request = new object();
            var count = 3;
            var manyRequest = new FiniteSequenceRequest(request, count);

            var results = new object[]
            {
                new object(),
                new OmitSpecimen(),
                new object()
            };
            var q = new Queue<object>(results);
            var context = new DelegatingSpecimenContext
            {
#pragma warning disable 618
                OnResolve = r => request.Equals(r) ? q.Dequeue() : new NoSpecimen(r)
#pragma warning restore 618
            };

            var sut = new FiniteSequenceRelay();
            // Exercise system
            var actual = sut.Create(manyRequest, context);
            // Verify outcome
            var iter = Assert.IsAssignableFrom<IEnumerable<object>>(actual);
            Assert.True(
                results.Where(x => !(x is OmitSpecimen)).SequenceEqual(iter));
            // Teardown
        }
コード例 #31
0
 public void SutDoesNotEqualAnonymousObject()
 {
     // Fixture setup
     var sut = new FiniteSequenceRequest(new object(), 3);
     object anonymousObject = new FileStyleUriParser();
     // Exercise system
     var result = sut.Equals(anonymousObject);
     // Verify outcome
     Assert.False(result, "Equals");
     // Teardown
 }
コード例 #32
0
        public void CreateWithManyRequestReturnsCorrectResult()
        {
            // Fixture setup
            var request = new MultipleRequest(new object());
            var count = 7;
            var expectedTranslation = new FiniteSequenceRequest(request.Request, 7);
            var expectedResult = new object();
            var container = new DelegatingSpecimenContext { OnResolve = r => expectedTranslation.Equals(r) ? expectedResult : new NoSpecimen(r) };

            var sut = new MultipleRelay { Count = count };
            // Exercise system
            var result = sut.Create(request, container);
            // Verify outcome
            Assert.Equal(expectedResult, result);
            // Teardown
        }
コード例 #33
0
 public void GetHashCodeWhenCountIsSpecifiedReturnsCorrectResult()
 {
     // Fixture setup
     var request = new object();
     var count = 19;
     var sut = new FiniteSequenceRequest(request, count);
     // Exercise system
     var result = sut.GetHashCode();
     // Verify outcome
     var expectedHashCode = request.GetHashCode() ^ count.GetHashCode();
     Assert.Equal(expectedHashCode, result);
     // Teardown
 }
コード例 #34
0
 public void SutEqualsOtherSutWhenBothRequestsAndCountMatch()
 {
     // Fixture setup
     var request = new object();
     var count = 4;
     var sut = new FiniteSequenceRequest(request, count);
     var other = new FiniteSequenceRequest(request, count);
     // Exercise system
     var result = sut.Equals(other);
     // Verify outcome
     Assert.True(result, "Equals");
     // Teardown
 }
コード例 #35
0
 public void SutDoesNotEqualOtherSutWhenCountsDiffer()
 {
     // Fixture setup
     var request = new object();
     var sut = new FiniteSequenceRequest(request, 1);
     var other = new FiniteSequenceRequest(request, 2);
     // Exercise system
     var result = sut.Equals(other);
     // Verify outcome
     Assert.False(result, "Equals");
     // Teardown
 }
コード例 #36
0
 public void SutDoesNotEqualOtherObjectWhenRequestsDifferButCountsMatch()
 {
     // Fixture setup
     var count = 1;
     var sut = new FiniteSequenceRequest(new object(), count);
     object other = new FiniteSequenceRequest(new object(), count);
     // Exercise system
     var result = sut.Equals(other);
     // Verify outcome
     Assert.False(result, "Equals");
     // Teardown
 }
コード例 #37
0
        public void CreateReturnsStableSequence()
        {
            // Fixture setup
            var request = new object();
            var count = 3;
            var manyRequest = new FiniteSequenceRequest(request, count);

#pragma warning disable 618
            var context = new DelegatingSpecimenContext { OnResolve = r => request.Equals(r) ? new object() : new NoSpecimen(r) };
#pragma warning restore 618

            var sut = new StableFiniteSequenceRelay();
            // Exercise system
            var result = sut.Create(manyRequest, context);
            // Verify outcome
            var expected = Assert.IsAssignableFrom<IEnumerable<object>>(result);
            Assert.True(expected.SequenceEqual(expected));
            // Teardown
        }