示例#1
0
        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);
        }
示例#7
0
        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);
        }