| 0 | 1 using System; | 
|  | 2 | 
|  | 3 using NUnit.Framework; | 
|  | 4 | 
|  | 5 using BLToolkit.Mapping; | 
|  | 6 | 
|  | 7 namespace Mapping | 
|  | 8 { | 
|  | 9 	[TestFixture] | 
|  | 10 	public class MapValueAttributeTest | 
|  | 11 	{ | 
|  | 12 		public class Object1 | 
|  | 13 		{ | 
|  | 14 			[MapValue(true,  "Y")] | 
|  | 15 			[MapValue(false, "N")] | 
|  | 16 			public bool Bool1; | 
|  | 17 | 
|  | 18 			[MapValue(true,  "Y", "Yes")] | 
|  | 19 			[MapValue(false, "N", "No")] | 
|  | 20 			public bool Bool2; | 
|  | 21 		} | 
|  | 22 | 
|  | 23 		[Test] | 
|  | 24 		public void BoolTest1() | 
|  | 25 		{ | 
|  | 26 			ObjectMapper om = Map.GetObjectMapper(typeof(Object1)); | 
|  | 27 | 
|  | 28 			Object1 o = (Object1)om.CreateInstance(); | 
|  | 29 | 
|  | 30 			om.SetValue(o, "Bool1", "Y"); | 
|  | 31 			om.SetValue(o, "Bool2", "Yes"); | 
|  | 32 | 
|  | 33 			Assert.AreEqual(true, o.Bool1); | 
|  | 34 			Assert.AreEqual(true, o.Bool2); | 
|  | 35 | 
|  | 36 			Assert.AreEqual("Y", om.GetValue(o, "Bool1")); | 
|  | 37 			Assert.AreEqual("Y", om.GetValue(o, "Bool2")); | 
|  | 38 		} | 
|  | 39 | 
|  | 40 		[MapValue(true,  "Y")] | 
|  | 41 		[MapValue(false, "N")] | 
|  | 42 		public class Object2 | 
|  | 43 		{ | 
|  | 44 			public bool Bool1; | 
|  | 45 | 
|  | 46 			[MapValue(true,  "Y", "Yes")] | 
|  | 47 			[MapValue(false, "N", "No")] | 
|  | 48 			public bool Bool2; | 
|  | 49 		} | 
|  | 50 | 
|  | 51 		[Test] | 
|  | 52 		public void BoolTest2() | 
|  | 53 		{ | 
|  | 54 			ObjectMapper om = Map.GetObjectMapper(typeof(Object2)); | 
|  | 55 | 
|  | 56 			Object2 o = (Object2)om.CreateInstance(); | 
|  | 57 | 
|  | 58 			om.SetValue(o, "Bool1", "Y"); | 
|  | 59 			om.SetValue(o, "Bool2", "Yes"); | 
|  | 60 | 
|  | 61 			Assert.AreEqual(true, o.Bool1); | 
|  | 62 			Assert.AreEqual(true, o.Bool2); | 
|  | 63 | 
|  | 64 			Assert.AreEqual("Y", om.GetValue(o, "Bool1")); | 
|  | 65 			Assert.AreEqual("Y", om.GetValue(o, "Bool2")); | 
|  | 66 		} | 
|  | 67 | 
|  | 68 		[MapValue(Enum1.Value1, "1")] | 
|  | 69 		[MapValue(Enum1.Value3, "3")] | 
|  | 70 		public enum Enum1 | 
|  | 71 		{ | 
|  | 72 			                Value1, | 
|  | 73 			[MapValue("2")] Value2, | 
|  | 74 			                Value3, | 
|  | 75 			[NullValue]     Value4 | 
|  | 76 		} | 
|  | 77 | 
|  | 78 		public class Object3 | 
|  | 79 		{ | 
|  | 80 			public Enum1 Enum1; | 
|  | 81 			public Enum1 Enum2; | 
|  | 82 | 
|  | 83 			[MapValue(Enum1.Value1, "10")] | 
|  | 84 			[MapValue(Enum1.Value2, "20")] | 
|  | 85 			[MapValue(Enum1.Value3, "30")] | 
|  | 86 			[MapValue(Enum1.Value3, "32")] | 
|  | 87 			[MapValue(Enum1.Value3, "31")] | 
|  | 88 			public Enum1 Enum3; | 
|  | 89 			public Enum1 Enum4; | 
|  | 90 		} | 
|  | 91 | 
|  | 92 		[Test] | 
|  | 93 		public void EnumTest1() | 
|  | 94 		{ | 
|  | 95 			ObjectMapper om = Map.GetObjectMapper(typeof(Object3)); | 
|  | 96 | 
|  | 97 			Object3 o = (Object3)om.CreateInstance(); | 
|  | 98 | 
|  | 99 			om.SetValue(o, "Enum1", "1"); | 
|  | 100 			om.SetValue(o, "Enum2", "2"); | 
|  | 101 			om.SetValue(o, "Enum3", "30"); | 
|  | 102 			om.SetValue(o, "Enum4", null); | 
|  | 103 | 
|  | 104 			Assert.AreEqual(Enum1.Value1, o.Enum1); | 
|  | 105 			Assert.AreEqual(Enum1.Value2, o.Enum2); | 
|  | 106 			Assert.AreEqual(Enum1.Value3, o.Enum3); | 
|  | 107 			Assert.AreEqual(Enum1.Value4, o.Enum4); | 
|  | 108 | 
|  | 109 			om.SetValue(o, "Enum3", "31"); | 
|  | 110 			Assert.AreEqual(Enum1.Value3, o.Enum3); | 
|  | 111 | 
|  | 112 			om.SetValue(o, "Enum3", "32"); | 
|  | 113 			Assert.AreEqual(Enum1.Value3, o.Enum3); | 
|  | 114 | 
|  | 115 			Assert.AreEqual("1",                     om.GetValue(o, "Enum1")); | 
|  | 116 			Assert.AreEqual("2",                     om.GetValue(o, "Enum2")); | 
|  | 117 			Assert.Contains(om.GetValue(o, "Enum3"), new[] {"30", "31", "32", "3"}); | 
|  | 118 			Assert.IsNull  (                         om.GetValue(o, "Enum4")); | 
|  | 119 		} | 
|  | 120 | 
|  | 121 		[MapValue(typeof(DayOfWeek), DayOfWeek.Monday, "M")] | 
|  | 122 		[MapValue(                   DayOfWeek.Friday, "F")] | 
|  | 123 		public class Object4 | 
|  | 124 		{ | 
|  | 125 			public DayOfWeek Dow1; | 
|  | 126 			public DayOfWeek Dow2; | 
|  | 127 		} | 
|  | 128 | 
|  | 129 		[Test] | 
|  | 130 		public void DayOfWeekTest1() | 
|  | 131 		{ | 
|  | 132 			ObjectMapper om = Map.GetObjectMapper(typeof(Object4)); | 
|  | 133 | 
|  | 134 			Object4 o = (Object4)om.CreateInstance(); | 
|  | 135 | 
|  | 136 			om.SetValue(o, "Dow1", "M"); | 
|  | 137 			om.SetValue(o, "Dow2", "F"); | 
|  | 138 | 
|  | 139 			Assert.AreEqual(DayOfWeek.Monday, o.Dow1); | 
|  | 140 			Assert.AreEqual(DayOfWeek.Friday, o.Dow2); | 
|  | 141 | 
|  | 142 			Assert.AreEqual("M", om.GetValue(o, "Dow1")); | 
|  | 143 			Assert.AreEqual("F", om.GetValue(o, "Dow2")); | 
|  | 144 		} | 
|  | 145 | 
|  | 146 		// http://www.rsdn.ru/Forum/?mid=1809157 | 
|  | 147 		// | 
|  | 148 		public enum StringAlignment | 
|  | 149 		{ | 
|  | 150 			Far, | 
|  | 151 			Near, | 
|  | 152 			Center | 
|  | 153 		} | 
|  | 154 | 
|  | 155 		public class SourceObject | 
|  | 156 		{ | 
|  | 157 			public string test = "Near"; | 
|  | 158 		} | 
|  | 159 | 
|  | 160 		public class DestObject | 
|  | 161 		{ | 
|  | 162 			[MapValue(StringAlignment.Near,   "Near")] | 
|  | 163 			[MapValue(StringAlignment.Far,    "Far")] | 
|  | 164 			[MapValue(StringAlignment.Center, "Center")] | 
|  | 165 			public StringAlignment test; | 
|  | 166 		} | 
|  | 167 | 
|  | 168 		[Test] | 
|  | 169 		public void EnumTest() | 
|  | 170 		{ | 
|  | 171 			SourceObject so = new SourceObject(); | 
|  | 172 			DestObject o = (DestObject)Map.ObjectToObject(so, typeof(DestObject)); | 
|  | 173 | 
|  | 174 			Assert.AreEqual(StringAlignment.Near, o.test); | 
|  | 175 		} | 
|  | 176 | 
|  | 177 		#region Nullable Enum | 
|  | 178 | 
|  | 179 		public enum Enum2 | 
|  | 180 		{ | 
|  | 181 			[MapValue("Near")] Value1, | 
|  | 182 		} | 
|  | 183 | 
|  | 184 		public class Object5 | 
|  | 185 		{ | 
|  | 186 			public Enum2? test; | 
|  | 187 		} | 
|  | 188 | 
|  | 189 		[Test] | 
|  | 190 		public void NullableEnumTest() | 
|  | 191 		{ | 
|  | 192 			SourceObject so = new SourceObject(); | 
|  | 193 | 
|  | 194 			Object5 b = Map.ObjectToObject<Object5>(so); | 
|  | 195 			Assert.AreEqual(Enum2.Value1, b.test); | 
|  | 196 		} | 
|  | 197 | 
|  | 198 		#endregion | 
|  | 199 	} | 
|  | 200 } |