Mercurial > pub > bltoolkit
diff UnitTests/CS/Reflection/Extension/DefaultValueTest.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/Reflection/Extension/DefaultValueTest.cs Thu Mar 27 21:46:09 2014 +0400 @@ -0,0 +1,117 @@ +using System; +using System.IO; + +using NUnit.Framework; + +using BLToolkit.Mapping; +using BLToolkit.Reflection.Extension; + +namespace Reflection.Extension +{ + [TestFixture] + public class DefaultValueTest + { + [SetUp] + public void SetUp() + { + Map.DefaultSchema = new DefaultMappingSchema(); + + using (StreamWriter sw = File.CreateText("Mapping.xml")) + { + sw.WriteLine(@"<?xml version='1.0' encoding='utf-8' ?> +<Types xmlns='urn:schemas-bltoolkit-net:typeext'> + <Type Name='Enum3'> + <Member Name='Value1' MapValue='1' MapValue-Type='System.String' /> + <Member Name='Value2' MapValue='3' MapValue-Type='System.String' DefaultValue=''/> + </Type> + <Type Name='Enum4'> + <Member Name='Value1' MapValue='1' MapValue-Type='System.String' /> + <Member Name='Value2' MapValue='3' MapValue-Type='System.String' DefaultValue=''/> + </Type> + <Type Name='Dest'> + <Member Name='Field2'> + <MapValue Value='1' OrigValue='Value1' /> + <MapValue Value='2' OrigValue='Value2' /> + <DefaultValue Value='Value1' /> + </Member> + <Member Name='Field3' DefaultValue='Value1'> + <MapValue Value='1' OrigValue='Value1' /> + <MapValue Value='2' OrigValue='Value2' /> + </Member> + </Type> +</Types>"); + } + } + + [TearDown] + public void TearDown() + { + File.Delete("Mapping.xml"); + } + + public enum Enum1 + { + [MapValue("1")] Value1 = 11, + [MapValue("2"), DefaultValue] Value2 = 12 + } + + [MapValue(Enum2.Value1, "1")] + [MapValue(Enum2.Value2, "2")] + [DefaultValue(Enum2.Value2)] + public enum Enum2 + { + Value1, + Value2 + } + + public enum Enum3 + { + Value1, + Value2 + } + + public enum Enum4 + { + [MapValue("1")] Value1, + [MapValue("2"), DefaultValue] Value2 + } + + public class Source + { + public string Field1 = "11"; + public string Field2 = "22"; + public string Field3 = "33"; + } + + public class Dest + { + public Enum1 Field1; + public Enum1 Field2; + public Enum2 Field3; + } + + [Test] + public void Test1() + { + Map.Extensions = TypeExtension.GetExtensions("Mapping.xml"); + + Enum1 e1 = (Enum1)Map.ValueToEnum("3", typeof(Enum1)); + Assert.AreEqual(Enum1.Value2, e1); + + Enum2 e2 = (Enum2)Map.ValueToEnum("3", typeof(Enum2)); + Assert.AreEqual(Enum2.Value2, e2); + + Enum3 e3 = (Enum3)Map.ValueToEnum("4", typeof(Enum3)); + Assert.AreEqual(Enum3.Value2, e3); + + Enum4 e4 = (Enum4)Map.ValueToEnum("4", typeof(Enum4)); + Assert.AreEqual(Enum4.Value2, e4); + + Dest o = (Dest)Map.ObjectToObject(new Source(), typeof(Dest)); + + Assert.AreEqual(Enum1.Value2, o.Field1); + Assert.AreEqual(Enum1.Value1, o.Field2); + Assert.AreEqual(Enum2.Value1, o.Field3); + } + } +}