/// <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; }
/// <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 }
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 }