diff UnitTests/CS/Mapping/MapValueAttributeTest.cs @ 0:f990fcb411a9

Копия текущей версии из github
author cin
date Thu, 27 Mar 2014 21:46:09 +0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/UnitTests/CS/Mapping/MapValueAttributeTest.cs	Thu Mar 27 21:46:09 2014 +0400
@@ -0,0 +1,200 @@
+using System;
+
+using NUnit.Framework;
+
+using BLToolkit.Mapping;
+
+namespace Mapping
+{
+	[TestFixture]
+	public class MapValueAttributeTest
+	{
+		public class Object1
+		{
+			[MapValue(true,  "Y")]
+			[MapValue(false, "N")]
+			public bool Bool1;
+
+			[MapValue(true,  "Y", "Yes")]
+			[MapValue(false, "N", "No")]
+			public bool Bool2;
+		}
+
+		[Test]
+		public void BoolTest1()
+		{
+			ObjectMapper om = Map.GetObjectMapper(typeof(Object1));
+
+			Object1 o = (Object1)om.CreateInstance();
+
+			om.SetValue(o, "Bool1", "Y");
+			om.SetValue(o, "Bool2", "Yes");
+
+			Assert.AreEqual(true, o.Bool1);
+			Assert.AreEqual(true, o.Bool2);
+
+			Assert.AreEqual("Y", om.GetValue(o, "Bool1"));
+			Assert.AreEqual("Y", om.GetValue(o, "Bool2"));
+		}
+
+		[MapValue(true,  "Y")]
+		[MapValue(false, "N")]
+		public class Object2
+		{
+			public bool Bool1;
+
+			[MapValue(true,  "Y", "Yes")]
+			[MapValue(false, "N", "No")]
+			public bool Bool2;
+		}
+
+		[Test]
+		public void BoolTest2()
+		{
+			ObjectMapper om = Map.GetObjectMapper(typeof(Object2));
+
+			Object2 o = (Object2)om.CreateInstance();
+
+			om.SetValue(o, "Bool1", "Y");
+			om.SetValue(o, "Bool2", "Yes");
+
+			Assert.AreEqual(true, o.Bool1);
+			Assert.AreEqual(true, o.Bool2);
+
+			Assert.AreEqual("Y", om.GetValue(o, "Bool1"));
+			Assert.AreEqual("Y", om.GetValue(o, "Bool2"));
+		}
+
+		[MapValue(Enum1.Value1, "1")]
+		[MapValue(Enum1.Value3, "3")]
+		public enum Enum1
+		{
+			                Value1,
+			[MapValue("2")] Value2,
+			                Value3,
+			[NullValue]     Value4
+		}
+
+		public class Object3
+		{
+			public Enum1 Enum1;
+			public Enum1 Enum2;
+
+			[MapValue(Enum1.Value1, "10")]
+			[MapValue(Enum1.Value2, "20")]
+			[MapValue(Enum1.Value3, "30")]
+			[MapValue(Enum1.Value3, "32")]
+			[MapValue(Enum1.Value3, "31")]
+			public Enum1 Enum3;
+			public Enum1 Enum4;
+		}
+
+		[Test]
+		public void EnumTest1()
+		{
+			ObjectMapper om = Map.GetObjectMapper(typeof(Object3));
+
+			Object3 o = (Object3)om.CreateInstance();
+
+			om.SetValue(o, "Enum1", "1");
+			om.SetValue(o, "Enum2", "2");
+			om.SetValue(o, "Enum3", "30");
+			om.SetValue(o, "Enum4", null);
+
+			Assert.AreEqual(Enum1.Value1, o.Enum1);
+			Assert.AreEqual(Enum1.Value2, o.Enum2);
+			Assert.AreEqual(Enum1.Value3, o.Enum3);
+			Assert.AreEqual(Enum1.Value4, o.Enum4);
+
+			om.SetValue(o, "Enum3", "31");
+			Assert.AreEqual(Enum1.Value3, o.Enum3);
+
+			om.SetValue(o, "Enum3", "32");
+			Assert.AreEqual(Enum1.Value3, o.Enum3);
+
+			Assert.AreEqual("1",                     om.GetValue(o, "Enum1"));
+			Assert.AreEqual("2",                     om.GetValue(o, "Enum2"));
+			Assert.Contains(om.GetValue(o, "Enum3"), new[] {"30", "31", "32", "3"});
+			Assert.IsNull  (                         om.GetValue(o, "Enum4"));
+		}
+
+		[MapValue(typeof(DayOfWeek), DayOfWeek.Monday, "M")]
+		[MapValue(                   DayOfWeek.Friday, "F")]
+		public class Object4
+		{
+			public DayOfWeek Dow1;
+			public DayOfWeek Dow2;
+		}
+
+		[Test]
+		public void DayOfWeekTest1()
+		{
+			ObjectMapper om = Map.GetObjectMapper(typeof(Object4));
+
+			Object4 o = (Object4)om.CreateInstance();
+
+			om.SetValue(o, "Dow1", "M");
+			om.SetValue(o, "Dow2", "F");
+
+			Assert.AreEqual(DayOfWeek.Monday, o.Dow1);
+			Assert.AreEqual(DayOfWeek.Friday, o.Dow2);
+
+			Assert.AreEqual("M", om.GetValue(o, "Dow1"));
+			Assert.AreEqual("F", om.GetValue(o, "Dow2"));
+		}
+
+		// http://www.rsdn.ru/Forum/?mid=1809157
+		//
+		public enum StringAlignment
+		{
+			Far,
+			Near,
+			Center
+		}
+
+		public class SourceObject
+		{
+			public string test = "Near";
+		}
+
+		public class DestObject
+		{
+			[MapValue(StringAlignment.Near,   "Near")]
+			[MapValue(StringAlignment.Far,    "Far")]
+			[MapValue(StringAlignment.Center, "Center")]
+			public StringAlignment test;
+		}
+
+		[Test]
+		public void EnumTest()
+		{
+			SourceObject so = new SourceObject();
+			DestObject o = (DestObject)Map.ObjectToObject(so, typeof(DestObject));
+
+			Assert.AreEqual(StringAlignment.Near, o.test);
+		}
+
+		#region Nullable Enum
+
+		public enum Enum2
+		{
+			[MapValue("Near")] Value1,
+		}
+
+		public class Object5
+		{
+			public Enum2? test;
+		}
+
+		[Test]
+		public void NullableEnumTest()
+		{
+			SourceObject so = new SourceObject();
+
+			Object5 b = Map.ObjectToObject<Object5>(so);
+			Assert.AreEqual(Enum2.Value1, b.test);
+		}
+
+		#endregion
+	}
+}