public void When_Mapping_Nested_Class_Then_Maps()
        {
            // Arrange
            var sut = new Mapper();
            sut.BuildClassMap<NestedFrom, NestedTo>();
            sut.BuildClassMap<NestedFrom.NestedChildFrom, NestedTo.NestedChildTo>();
            var from = new NestedFrom {Child = new NestedFrom.NestedChildFrom {Name = "Bob"}};
            var to = new NestedTo {Child = new NestedTo.NestedChildTo()};

            // Act
            sut.Merge(from, to);

            // Assert
            Assert.AreEqual(from.Child.Name, to.Child.Name);
            Assert.AreNotEqual(from.Child, to.Child); // Ensure mapping of class not ref copying!
        }
        public void When_Mapping_Derived_Instance_Then_Uses_Inherited_Binding()
        {
            // Arrange
            var sut = new Mapper();

            sut.BuildClassMap<VehicleFrom, VehicleTo>()
               .For(x => x.Name, o => o.Custom(_ => "Ferrari"));
            sut.BuildClassMap<CarFrom, CarTo>()
               .InheritsFrom<VehicleFrom, VehicleTo>();

            var from = new CarFrom() {Name = "Porsche", NumSeats = 4};
            var to = new CarTo();

            // Act
            sut.Merge(from, to);

            // Assert
            Assert.AreEqual("Ferrari", to.Name);
            Assert.AreEqual(from.NumSeats, to.NumSeats);
        }
        public void When_Enumerating_Bindings_Then_MemberDefinitiontType_Is_Auto()
        {
            // Arrange
            var sut = new Mapper();
            var map = sut.BuildClassMap<SimpleFrom, SimpleTo>().Map;

            // Act
            var res = map.Bindings;

            // Assert
            Assert.IsTrue(res.All(b => b.BindingType == BindingType.Auto));
        }
        public void When_Mapping_Then_Unflattens()
        {
            var dto = new Dto
            {
                P1 = "A",
                P2 = "B",
                P3 = "C"
            };

            // Arrange
            var mapper = new Mapper();
            mapper.BuildClassMap<Dto, SubDomainModel>();
            mapper.BuildClassMap<Dto, DomainModel>().For(t => t.SubModel, o => o.From(x => x));

            // Act
            var model = mapper.Map<Dto, DomainModel>(dto);

            // Assert
            Assert.AreEqual("A", model.SubModel.P1);
            Assert.AreEqual("B", model.SubModel.P2);
            Assert.AreEqual("C", model.P3);
        }
        public void When_Mapping_Then_Can_Project_Inline()
        {
            var dto = new Dto
            {
                P1 = "A",
                P2 = "B",
                P3 = "C"
            };

            // Arrange
            var mapper = new Mapper();
            mapper.BuildClassMap<Dto, SubDomainModel>();
            mapper.BuildClassMap<Dto, DomainModel>().For(t => t.P3, o => o.From(x => x.P2, y => y + "Hello"));

            // Act
            var model = mapper.Map<Dto, DomainModel>(dto);

            // Assert
              //  Assert.AreEqual("A", model.SubModel.P1);
              //  Assert.AreEqual("B", model.SubModel.P2);
            Assert.AreEqual("BHello", model.P3);
        }
        public void When_Mapping_Flattening_Class_Then_Maps()
        {
            // Arrange
            var sut = new Mapper();
            sut.BuildClassMap<FlatteningFrom, FlatteningTo>();
            var from = new FlatteningFrom {Child = new FlatteningFrom.FlatteningChildFrom {Name = "Bob"}};
            var to = new FlatteningTo();

            // Act
            sut.Merge(from, to);

            // Assert
            Assert.AreEqual(from.Child.Name, to.ChildName);
        }
        public void When_Mapping_Simple_Class_Then_Maps()
        {
            // Arrange
            var sut = new Mapper();
            sut.BuildClassMap<SimpleFrom, SimpleTo>();
            var from = new SimpleFrom() {StringProp = "Bob", IntField = 20};
            var to = new SimpleTo();

            // Act
            sut.Merge(from, to);

            // Assert
            Assert.AreEqual(from.StringProp, to.StringProp);
            Assert.AreEqual(from.IntField, to.IntField);
        }
예제 #8
0
        public void When_Mapping_Derived_Instance_As_Base_Then_Maps_Polymorphically_As_Derived()
        {
            // Arrange
            var sut = new Mapper();

            sut.BuildPolymorphicMap<VehicleFrom, VehicleTo>()
               .AddPolymorph<CarFrom, CarTo>();

            sut.BuildClassMap<CarFrom, CarTo>();

            var from = new CarFrom() {Name = "Porsche", NumSeats = 4};

            // Act
            var to = sut.Map<VehicleFrom, VehicleTo>(from);
            var res = to as CarTo;

            // Assert
            Assert.NotNull(res);
            Assert.AreEqual("Porsche", res.Name);
            Assert.AreEqual(from.NumSeats, res.NumSeats);
        }
        public void When_Mapping_With_Conversion_Then_Maps()
        {
            // Arrange
            var sut = new Mapper();
            sut.BuildClassMap<ConversionFrom, ConversionTo>();
            sut.BuildConversion<string, int>().Explictly(x => x.Count());
            var from = new ConversionFrom {Age = "Twelve"};
            var to = new ConversionTo {Age = 6};

            // Act
            sut.Merge(from, to);

            // Assert
            Assert.AreEqual(from.Age.Count(), to.Age);
        }
예제 #10
0
        public void When_Mapping_Value_Type_To_Class_Then_Maps()
        {
            // Arrange
            var sut = new Mapper();
            sut.BuildClassMap<int, SimpleTo>()
               .For(x => x.IntField, o => o.Custom(ctx => (int) ctx.FromInstance))
               .For(x => x.StringProp, o => o.Custom(ctx => ((int) ctx.FromInstance).ToString()));
            const int from = 12;
            var to = new SimpleTo();

            // Act
            sut.Merge(from, to);

            // Assert
            Assert.AreEqual(from, to.IntField);
            Assert.AreEqual("12", to.StringProp);
        }
예제 #11
0
        public void When_Mapping_Object_With_Complex_Enumerable_Then_Maps()
        {
            // Arrange
            var sut = new Mapper();
            sut.BuildClassMap<SimpleFrom, SimpleTo>();
            sut.BuildClassMap<ContainsEnumerableTFrom, ContainsListTTo>();
            var from = new ContainsEnumerableTFrom
            {
                Collection = new List<SimpleFrom>
                {
                    new SimpleFrom {StringProp = "One", IntField = 1},
                    new SimpleFrom {StringProp = "Two", IntField = 2},
                    new SimpleFrom {StringProp = "Three", IntField = 3},
                }
            };

            // Act
            var res = sut.Map<ContainsListTTo>(from);

            // Assert
            KKAssert.AreEqualByValue(from, res);
        }