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