/// <summary>
        /// Initializes a new instance of the <see cref="ConstructorInvoker"/> class with the
        /// supplied <see cref="IConstructorQuery"/>.
        /// </summary>
        /// <param name="query">
        /// The <see cref="IConstructorQuery"/> that defines which constructors are attempted.
        /// </param>
        public ConstructorInvoker(IConstructorQuery query)
        {
            if (query == null)
            {
                throw new ArgumentNullException(nameof(query));
            }

            this.query = query;
        }
Exemple #2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ConstructorInvoker"/> class with the
        /// supplied <see cref="IConstructorQuery"/>.
        /// </summary>
        /// <param name="query">
        /// The <see cref="IConstructorQuery"/> that defines which constructors are attempted.
        /// </param>
        public ConstructorInvoker(IConstructorQuery query)
        {
            if (query == null)
            {
                throw new ArgumentNullException("query");
            }

            this.query = query;
        }
        public void QueryIsCorrect()
        {
            // Fixture setup
            var expectedPicker = new DelegatingConstructorQuery();
            var sut            = new ConstructorInvoker(expectedPicker);
            // Exercise system
            IConstructorQuery result = sut.Query;

            // Verify outcome
            Assert.Equal(expectedPicker, result);
            // Teardown
        }
 public void QueriesWillMatchParamsArray()
 {
     // Fixture setup
     var expectedQueries = new IConstructorQuery[]
     {
         new DelegatingConstructorQuery(),
         new DelegatingConstructorQuery(),
         new DelegatingConstructorQuery()
     };
     var sut = new CompositeConstructorQuery(expectedQueries);
     // Exercise system
     var result = sut.Queries;
     // Verify outcome
     Assert.True(expectedQueries.SequenceEqual(result));
     // Teardown
 }
Exemple #5
0
        public void QueriesWillMatchParamsArray()
        {
            // Fixture setup
            var expectedQueries = new IConstructorQuery[]
            {
                new DelegatingConstructorQuery(),
                new DelegatingConstructorQuery(),
                new DelegatingConstructorQuery()
            };
            var sut = new CompositeConstructorQuery(expectedQueries);
            // Exercise system
            var result = sut.Queries;

            // Verify outcome
            Assert.True(expectedQueries.SequenceEqual(result));
            // Teardown
        }
Exemple #6
0
        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 IConstructorQuery[]
            {
                new DelegatingConstructorQuery {
                    OnSelectConstructors = t => modestConstructors
                },
                new DelegatingConstructorQuery {
                    OnSelectConstructors = t => greedyConstructors
                },
                new DelegatingConstructorQuery()
            };

            var sut = new CompositeConstructorQuery(queries);
            // Exercise system
            var result = sut.SelectConstructors(type);

            // Verify outcome
            Assert.True(expectedConstructors.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 IConstructorQuery[]
            {
                new DelegatingConstructorQuery { OnSelectConstructors = t => modestConstructors },
                new DelegatingConstructorQuery { OnSelectConstructors = t => greedyConstructors },
                new DelegatingConstructorQuery()
            };

            var sut = new CompositeConstructorQuery(queries);
            // Exercise system
            var result = sut.SelectConstructors(type);
            // Verify outcome
            Assert.True(expectedConstructors.SequenceEqual(result));
            // Teardown
        }