OO Mapper 实践(上篇)

         上一篇 介绍了OO Mapper的作用以及支持的功能。这一篇将以上一篇为提纲进行实践。

   准备工作

  • 下载NLite
  •  编译NLite 项目
  •  创建一个NUnit单元测试项目
  •  添加NLite.dll 引用
  •   添加 : using NLite;

       实践:

         1. Any -> String 

Assert.AreEqual("5", Mapper.Map<int, string>(5));

        2. primitive->Enum,Enum->primitive

   [TestFixture]

    public class EnumTests

    {

        public enum En1 : byte

        {

            a = 1,

            b = 2,

            c = 3

        }



        public enum En2 : long

        {

            a = 1,

            b = 2,

            c = 3

        }



        public enum En3 : int

        {

            b = 2,

            c = 3,

            a = 1

        }



        public class A

        {

            public En1 en1 { get; set; }

            public En2 en2;

            public En3 en3 { get; set; }

            public decimal en4;

            public string en5;

            public En1? en6;

            public En3 en7;

            public En3? en8;

            public En3? en9 = En3.c;

        }



        public class B

        {

            public decimal en1 = 3;

            public En1 en2 { get; set; }

            public string en3 = "c";

            public En2 en4 = En2.b;

            public En3 en5 = En3.a;

            public En2 en6 = En2.c;

            public En1? en7 = En1.c;

            public En1? en8 = En1.c;

            public En2? en9 = null;



            public B()

            {

                en2 = En1.c;

            }

        }

        [Test]

        public void EnumTests1()

        {

             Mapper.CreateMapper<B, A>();



            var a = Mapper.Map<B,A>(new B());

            Assert.IsTrue(a.en1 == En1.c);

            Assert.IsTrue(a.en2 == En2.c);

            Assert.IsTrue(a.en3 == En3.c);

            Assert.IsTrue(a.en4 == 2);

            Assert.IsTrue(a.en6 == En1.c);

            Assert.IsTrue(a.en7 == En3.c);

            Assert.IsTrue(a.en8 == En3.c);

            Assert.IsNull(a.en9);

        }

    }

    3. Nullable -> Primitive, 

            Assert.AreEqual(true, Mapper.Map<bool?, bool>(true));

            Assert.AreEqual(false, Mapper.Map<bool?, bool>(false));

            Assert.AreEqual(false, Mapper.Map<bool?, bool>(null));

           4. Primitive -> Nullable

            Assert.AreEqual(true, Mapper.Map<bool, bool?>(true));

            Assert.AreEqual(false, Mapper.Map<bool, bool?>(false));

           5. Nullable -> Nullable

            Assert.IsFalse(Mapper.Map<sbyte?, Boolean?>(null).HasValue);

            Assert.IsFalse(Mapper.Map<Char?, Boolean?>(null).HasValue);

            Assert.IsFalse(Mapper.Map<Byte?, Boolean?>(null).HasValue);

            Assert.IsFalse(Mapper.Map<Int16?, Boolean?>(null).HasValue);

            Assert.IsFalse(Mapper.Map<UInt16?, Boolean?>(null).HasValue);

            Assert.IsFalse(Mapper.Map<Int32?, Boolean?>(null).HasValue);

            Assert.IsFalse(Mapper.Map<UInt32?, Boolean?>(null).HasValue);

            Assert.IsFalse(Mapper.Map<Int64?, Boolean?>(null).HasValue);

            Assert.IsFalse(Mapper.Map<UInt64?, Boolean?>(null).HasValue);

            Assert.IsFalse(Mapper.Map<Single?, Boolean?>(null).HasValue);

            Assert.IsFalse(Mapper.Map<Double?, Boolean?>(null).HasValue);

            Assert.IsFalse(Mapper.Map<Decimal?, Boolean?>(null).HasValue);

            Assert.IsFalse(Mapper.Map<DateTime?, Boolean?>(null).HasValue);



            Assert.IsFalse(Mapper.Map<Boolean?, Char?>(null).HasValue);

            Assert.IsFalse(Mapper.Map<sbyte?, Char?>(null).HasValue);

            Assert.IsFalse(Mapper.Map<Byte?, Char?>(null).HasValue);

            Assert.IsFalse(Mapper.Map<Int16?, Char?>(null).HasValue);

            Assert.IsFalse(Mapper.Map<UInt16?, Char?>(null).HasValue);

            Assert.IsFalse(Mapper.Map<Int32?, Char?>(null).HasValue);

            Assert.IsFalse(Mapper.Map<UInt32?, Char?>(null).HasValue);

            Assert.IsFalse(Mapper.Map<Int64?, Char?>(null).HasValue);

            Assert.IsFalse(Mapper.Map<UInt64?, Char?>(null).HasValue);

            Assert.IsFalse(Mapper.Map<Single?, Char?>(null).HasValue);

            Assert.IsFalse(Mapper.Map<Double?, Char?>(null).HasValue);

            Assert.IsFalse(Mapper.Map<Decimal?, Char?>(null).HasValue);

            Assert.IsFalse(Mapper.Map<DateTime?, Char?>(null).HasValue);





            。。。
 

    6.  Null -> Primitive

            object d = null;

            object t = Mapper.Map(d, null, typeof(Int32));

            Assert.IsInstanceOf<int>(t);

          未完待续。

你可能感兴趣的:(mapper)