示例#1
0
        public override IEnumerator <ISpecimenBuilder> GetEnumerator()
        {
            using (var enumerator = base.GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    var value = enumerator.Current;

                    // Replace target method query
                    var mi = value as MethodInvoker;
                    CompositeMethodQuery cmq = mi?.Query as CompositeMethodQuery;
                    if (mi != null && cmq?.Queries.Skip(1).FirstOrDefault() is FactoryMethodQuery)
                    {
                        yield return(new MethodInvoker(
                                         new CompositeMethodQuery(
                                             new ModestConstructorQuery(),
                                             new PatchedFactoryMethodQuery()
                                             )
                                         ));
                    }
                    else
                    {
                        yield return(value);
                    }
                }
            }
        }
        public void SutIsMethodQuery()
        {
            // Arrange
            // Act
            var sut = new CompositeMethodQuery();

            // Assert
            Assert.IsAssignableFrom <IMethodQuery>(sut);
        }
        public void SutIsMethodQuery()
        {
            // Fixture setup
            // Exercise system
            var sut = new CompositeMethodQuery();

            // Verify outcome
            Assert.IsAssignableFrom <IMethodQuery>(sut);
            // Teardown
        }
        public void QueriesWillNotBeNullWhenSutIsCreatedWithDefaultConstructor()
        {
            // Arrange
            var sut = new CompositeMethodQuery();
            // Act
            IEnumerable <IMethodQuery> result = sut.Queries;

            // Assert
            Assert.NotNull(result);
        }
        public void QueriesWillNotBeNullWhenSutIsCreatedWithDefaultConstructor()
        {
            // Fixture setup
            var sut = new CompositeMethodQuery();
            // Exercise system
            IEnumerable <IMethodQuery> result = sut.Queries;

            // Verify outcome
            Assert.NotNull(result);
            // Teardown
        }
        public void QueriesWillNotMatchParamsArray()
        {
            // Arrange
            var expectedQueries = new IMethodQuery[]
            {
                new DelegatingMethodQuery(),
                new DelegatingMethodQuery(),
                new DelegatingMethodQuery()
            };
            var sut = new CompositeMethodQuery(expectedQueries[0], expectedQueries[2], expectedQueries[1]);
            // Act
            var result = sut.Queries;

            // Assert
            Assert.False(expectedQueries.SequenceEqual(result));
        }
        public void QueriesWillMatchListParameter()
        {
            // Arrange
            var expectedQueries = new IMethodQuery[]
            {
                new DelegatingMethodQuery(),
                new DelegatingMethodQuery(),
                new DelegatingMethodQuery()
            }.AsEnumerable();
            var sut = new CompositeMethodQuery(expectedQueries);
            // Act
            var result = sut.Queries;

            // Assert
            Assert.True(expectedQueries.SequenceEqual(result));
        }
        public void QueriesWillNotMatchParamsArray()
        {
            // Fixture setup
            var expectedQueries = new IMethodQuery[]
            {
                new DelegatingMethodQuery(),
                new DelegatingMethodQuery(),
                new DelegatingMethodQuery()
            };
            var sut = new CompositeMethodQuery(expectedQueries[0], expectedQueries[2], expectedQueries[1]);
            // Exercise system
            var result = sut.Queries;

            // Verify outcome
            Assert.False(expectedQueries.SequenceEqual(result));
            // Teardown
        }
        public void QueriesWillMatchListParameter()
        {
            // Fixture setup
            var expectedQueries = new IMethodQuery[]
            {
                new DelegatingMethodQuery(),
                new DelegatingMethodQuery(),
                new DelegatingMethodQuery()
            }.AsEnumerable();
            var sut = new CompositeMethodQuery(expectedQueries);
            // Exercise system
            var result = sut.Queries;

            // Verify outcome
            Assert.True(expectedQueries.SequenceEqual(result));
            // Teardown
        }
        public void SelectWillReturnResultsInCorrectSequence(Type type)
        {
            // Fixture setup
            IEnumerable <IMethod> modestConstructors = from ci in type.GetConstructors()
                                                       let parameters = ci.GetParameters()
                                                                        orderby parameters.Length ascending
                                                                        select new ConstructorMethod(ci) as IMethod;

            IEnumerable <IMethod> greedyConstructors = from ci in type.GetConstructors()
                                                       let parameters = ci.GetParameters()
                                                                        orderby parameters.Length descending
                                                                        select new ConstructorMethod(ci) as IMethod;

            var expectedConstructors = new List <IMethod>();

            expectedConstructors.AddRange(modestConstructors);
            expectedConstructors.AddRange(greedyConstructors);

            var queries = new IMethodQuery[]
            {
                new DelegatingMethodQuery {
                    OnSelectMethods = t => modestConstructors
                },
                new DelegatingMethodQuery {
                    OnSelectMethods = t => greedyConstructors
                },
                new DelegatingMethodQuery()
            };

            var sut = new CompositeMethodQuery(queries);
            // Exercise system
            var result = sut.SelectMethods(type);

            // Verify outcome
            Assert.True(expectedConstructors.SequenceEqual(result));
            // Teardown
        }