コード例 #1
0
        public void SutIsRequestSpecification()
        {
            // Arrange
            // Act
            var sut = new AndRequestSpecification();

            // Assert
            Assert.IsAssignableFrom <IRequestSpecification>(sut);
        }
コード例 #2
0
        public void SutIsRequestSpecification()
        {
            // Fixture setup
            // Exercise system
            var sut = new AndRequestSpecification();

            // Verify outcome
            Assert.IsAssignableFrom <IRequestSpecification>(sut);
            // Teardown
        }
コード例 #3
0
        public void SpecificationsMatchesConstructorSpecifications()
        {
            // Arrange
            var expectedSpecifications = new[] { new DelegatingRequestSpecification(), new DelegatingRequestSpecification(), new DelegatingRequestSpecification() };
            var sut = new AndRequestSpecification(expectedSpecifications.Cast <IRequestSpecification>());
            // Act
            IEnumerable <IRequestSpecification> result = sut.Specifications;

            // Assert
            Assert.True(expectedSpecifications.SequenceEqual(result));
        }
コード例 #4
0
        public void SpecificationsMatchesConstructorSpecifications()
        {
            // Fixture setup
            var expectedSpecifications = new[] { new DelegatingRequestSpecification(), new DelegatingRequestSpecification(), new DelegatingRequestSpecification() };
            var sut = new AndRequestSpecification(expectedSpecifications.Cast <IRequestSpecification>());
            // Exercise system
            IEnumerable <IRequestSpecification> result = sut.Specifications;

            // Verify outcome
            Assert.True(expectedSpecifications.SequenceEqual(result));
            // Teardown
        }
コード例 #5
0
        public void IsSatisfiedByPassesRequestToDecoratedSpecification()
        {
            // Arrange
            var expectedRequest = new object();
            var verified        = false;
            var specMock        = new DelegatingRequestSpecification {
                OnIsSatisfiedBy = r => verified = expectedRequest == r
            };
            var sut = new AndRequestSpecification(specMock);

            // Act
            sut.IsSatisfiedBy(expectedRequest);
            // Assert
            Assert.True(verified, "Mock verified");
        }
コード例 #6
0
        public void IsSatisfiedByReturnsCorrectResult(bool expectedResult, IEnumerable <bool> decoratedResults)
        {
            // Arrange
            var decoratedSpecs = from b in decoratedResults
                                 select new DelegatingRequestSpecification {
                OnIsSatisfiedBy = r => b
            };
            var sut = new AndRequestSpecification(decoratedSpecs.Cast <IRequestSpecification>());
            // Act
            var dummyRequest = new object();
            var result       = sut.IsSatisfiedBy(dummyRequest);

            // Assert
            Assert.Equal(expectedResult, result);
        }
コード例 #7
0
        public void IsSatisfiedByPassesRequestToDecoratedSpecification()
        {
            // Fixture setup
            var expectedRequest = new object();
            var verified        = false;
            var specMock        = new DelegatingRequestSpecification {
                OnIsSatisfiedBy = r => verified = expectedRequest == r
            };
            var sut = new AndRequestSpecification(specMock);

            // Exercise system
            sut.IsSatisfiedBy(expectedRequest);
            // Verify outcome
            Assert.True(verified, "Mock verified");
            // Teardown
        }
コード例 #8
0
        public void IsSatisfiedByReturnsCorrectResult(bool expectedResult, IEnumerable <bool> decoratedResults)
        {
            // Fixture setup
            var decoratedSpecs = from b in decoratedResults
                                 select new DelegatingRequestSpecification {
                OnIsSatisfiedBy = r => b
            };
            var sut = new AndRequestSpecification(decoratedSpecs.Cast <IRequestSpecification>());
            // Exercise system
            var dummyRequest = new object();
            var result       = sut.IsSatisfiedBy(dummyRequest);

            // Verify outcome
            Assert.Equal(expectedResult, result);
            // Teardown
        }
コード例 #9
0
        /// <summary>
        /// Adjusts the AutoProperties postprocessor and changes rule to avoid the specified member population.
        /// If AutoProperties node is missing, nothing is done.
        /// </summary>
        private static ISpecimenBuilderNode ExcludeMemberFromAutoProperties(MemberInfo member,
                                                                            ISpecimenBuilderNode graph)
        {
            var autoPropertiesNode = FindAutoPropertiesNode(graph);

            if (autoPropertiesNode == null)
            {
                return(graph);
            }

            var currentSpecification = ((AutoPropertiesCommand)autoPropertiesNode.Command).Specification;
            var newRule = new InverseRequestSpecification(
                new EqualRequestSpecification(
                    member,
                    new MemberInfoEqualityComparer()));

            // Try to make specification list flat if possible
            IRequestSpecification specification;

            if (currentSpecification is TrueRequestSpecification)
            {
                specification = newRule;
            }
            else if (currentSpecification is AndRequestSpecification andSpec)
            {
                specification = new AndRequestSpecification(andSpec.Specifications.Concat(new[] { newRule }));
            }
            else
            {
                specification = new AndRequestSpecification(currentSpecification, newRule);
            }

            return(graph.ReplaceNodes(
                       with: _ => new Postprocessor(
                           autoPropertiesNode.Builder,
                           new AutoPropertiesCommand(typeof(T), specification),
                           autoPropertiesNode.Specification),
                       when: autoPropertiesNode.Equals));
        }