public void UseConstructor_WhenCalled_SelectsConstructorToUse_2() { var expected = new MultipleConstructors(0, null, DateTime.MinValue); //TODO still wondering what happens if only default is available initializer.UseConstructor <MultipleConstructors>(c => c.OrderByDescending(x => x.GetParameters().Count()).First()); var actual = initializer.Create <MultipleConstructors>(); actual.Should().BeEquivalentTo(expected); }
public void Create_FewerArgumets_ChoosesCorrectConstructor() { var parameters = new { Foo = 44, Bar = "Other" }; var expected = new MultipleConstructors(44, "Other", new DateTime(1984, 1, 1)); var actual = initializer.Create <MultipleConstructors>(parameters); actual.Should().BeEquivalentTo(expected); }
public void Create_IncorrectArgumetTypes_ChoosesDefaultConstructor() { var parameters = new { Foo = "wrong", Bar = -1, Baz = "still wrong" }; var expected = new MultipleConstructors(42, "Answer", new DateTime(1989, 1, 1)); var actual = initializer.Create <MultipleConstructors>(parameters); actual.Should().BeEquivalentTo(expected); }
public void Create_IncorrectArgumets_ChoosesDefaultConstructor() { var parameters = new { Fooz = 44, Barz = "Other", Bazz = DateTime.Now }; var expected = new MultipleConstructors(42, "Answer", new DateTime(1989, 1, 1)); var actual = initializer.Create <MultipleConstructors>(parameters); actual.Should().BeEquivalentTo(expected); }
public void Create_ConcreteObjectsForInterfaces_CreatesObject() { TestClass first = new TestClass(42, "Answer", DateTime.MinValue); MultipleConstructors second = new MultipleConstructors(44, "Other"); NestedClassWithInterfaces expected = new NestedClassWithInterfaces(first, second); var values = new { ChildOne = first, ChildTwo = second }; var actual = initializer.Create <NestedClassWithInterfaces>(values); actual.Should().BeEquivalentTo(expected); }
public void Create_SomeIncorrectArguments_ChoosesCorrectConstructor() { //should choose MultipleConstructors(int foo, string bar, DateTime baz) //because it has the least arguments and most matched arguments var parameters = new { Fooz = "wrong", Bar = "Correct", Baz = new DateTime(1999, 1, 1) }; var expected = new MultipleConstructors(0, "Correct", new DateTime(1999, 1, 1)); var actual = initializer.Create <MultipleConstructors>(parameters); actual.Should().BeEquivalentTo(expected); }
public void UseConstructor_WhenCalled_SelectsConstructorToUse() { var parameters = new { Foo = 47, Bar = "Correct", Baz = new DateTime(1991, 1, 1) }; var expected = new MultipleConstructors(parameters.Foo, parameters.Bar, parameters.Baz); //TODO still wondering what happens if only default is available initializer.UseConstructor <MultipleConstructors>(c => c.OrderByDescending(x => x.GetParameters().Count()).First()); var actual = initializer.Create <MultipleConstructors>(parameters); actual.Should().BeEquivalentTo(expected); }