public void ObjectMapConfig_CustomPropertyMappingRule() { var config = new ObjectMapConfig(); config.PropertyMapRules.Clear(); var rule = new PropertyNameMappingRule(); rule.AddPropertyNameMap("Value", "Int32"); rule.AddPropertyNameMap("Value", "DateTime"); rule.AddPropertyNameMap("Value", "Decimal"); rule.AddPropertyNameMap("Value", "DayOfWeek"); config.PropertyMapRules.Add(rule); var u1 = new User(); { u1.Value = "23"; var u2 = config.Map(u1, new User()); Assert.AreEqual(23, u2.Int32); } { u1.Value = "2014/12/17 00:00:00"; var u2 = config.Map(u1, new User()); Assert.AreEqual(new DateTime(2014, 12, 17), u2.DateTime); } { u1.Value = "23.4"; var u2 = config.Map(u1, new User()); Assert.AreEqual(23.4m, u2.Decimal); } { u1.Value = "Friday"; var u2 = config.Map(u1, new User()); Assert.AreEqual(DayOfWeek.Friday, u2.DayOfWeek); } }
public void ObjectMapConfig_AddPostAction_Encoding() { var config = new ObjectMapConfig(); config.AddPostAction <String, Encoding>((source, target) => { if (source == "U8") { return(Encoding.UTF8); } return(null); }); config.PropertyMapRules.Clear(); var rule = new PropertyNameMappingRule(); rule.AddPropertyNameMap("Value", "Encoding"); config.PropertyMapRules.Add(rule); var u1 = new User(); u1.Value = "U8"; var p2 = new TextParser(); p2.Encoding = null; config.Map(u1, p2); Assert.AreEqual(Encoding.UTF8, p2.Encoding); }
public void ObjectMapConfig_Map_FromDecimalToInt32() { var config = new ObjectMapConfig(); config.PropertyMapRules.Clear(); var rule = new PropertyNameMappingRule(); rule.AddPropertyNameMap("Int32", "Decimal"); config.PropertyMapRules.Add(rule); var u1 = new User(); u1.Int32 = 23; var u2 = config.Map(u1, new User()); Assert.AreEqual(23m, u2.Decimal); }
public void ObjectMapConfig_PropertyNameMappingRule_Failure() { var config = new ObjectMapConfig(); config.PropertyMapRules.Clear(); var rule = new PropertyNameMappingRule(); rule.AddPropertyNameMap("Value", "Decimal"); config.PropertyMapRules.Add(rule); var u1 = new User(); u1.Value = "abc"; var u2 = config.Map(u1, new User()); //Not changed... Assert.AreEqual(20.4m, u2.Decimal); }
public void ObjectMapConfig_CustomStructConverter() { var config = new ObjectMapConfig(); config.AddConverter(DayOfWeekConverter); config.PropertyMapRules.Clear(); var rule = new PropertyNameMappingRule(); rule.PropertyNameMaps.Add("Value", "DayOfWeek"); config.PropertyMapRules.Add(rule); var u1 = new User(); u1.Value = "Friday"; var u2 = config.Map(u1, new User()); Assert.AreEqual(DayOfWeek.Friday, u2.DayOfWeek); }
public void ObjectMapConfig_CustomClassConverter() { var config = new ObjectMapConfig(); config.AddConverter <MapPoint>(MapPointConverter); config.PropertyMapRules.Clear(); var rule = new PropertyNameMappingRule(); rule.PropertyNameMaps.Add("Value", "MapPoint"); config.PropertyMapRules.Add(rule); var u1 = new User(); u1.Value = "23, 45"; var u2 = config.Map(u1, new User()); Assert.AreEqual(23m, u2.MapPoint.Latitude); Assert.AreEqual(45m, u2.MapPoint.Longitude); }
public void ObjectMapConfig_Map_List_NullableList() { var config = new ObjectMapConfig(); config.PropertyMapRules.Clear(); var rule = new PropertyNameMappingRule(); rule.AddPropertyNameMap("Vectors", "NullableVectors"); config.PropertyMapRules.Add(rule); var l1 = new VectorList(); l1.Vectors.Add(new Vector2() { X = 1, Y = 2 }); var l2 = config.Map(l1, new VectorList()); Assert.AreEqual(1, l2.NullableVectors[0].Value.X); }
public void ObjectMapConfig_CustomPropertyMappingRule_AddPostAction() { var config = new ObjectMapConfig(); config.AddPostAction <User>((source, target) => { target.MapPoint = MapPointConverter(source.Value) ?? target.MapPoint; }); config.PropertyMapRules.Clear(); var rule = new PropertyNameMappingRule(); rule.AddPropertyNameMap("Value", "MapPoint"); config.PropertyMapRules.Add(rule); var u1 = new User(); u1.Value = "23, 45"; var u2 = config.Map(u1, new User()); Assert.AreEqual(23m, u2.MapPoint.Latitude); Assert.AreEqual(45m, u2.MapPoint.Longitude); }
public void ObjectMapConfig_AddPostAction_String_DayOfWeek() { var config = new ObjectMapConfig(); config.AddPostAction <String, DayOfWeek>((source, target) => { return(DayOfWeekConverter(source) ?? target); }); config.PropertyMapRules.Clear(); var rule = new PropertyNameMappingRule(); rule.AddPropertyNameMap("Value", "DayOfWeek"); config.PropertyMapRules.Add(rule); var u1 = new User(); u1.Value = "Fri"; var u2 = config.Map(u1, new User()); Assert.AreEqual(DayOfWeek.Friday, u2.DayOfWeek); }