Пример #1
0
        public void AutoMap_tests()
        {
            var ds    = new DataSet();
            var table = ds.Tables.Add();

            table.Columns.Add(nameof(SimpleTestClass.Name), typeof(string));
            table.Columns.Add(nameof(SimpleTestClass.LastName), typeof(string));
            table.Columns.Add(nameof(SimpleTestClass.BirthDate), typeof(DateTime));
            table.Columns.Add(nameof(SimpleTestClass.DecimalNumber), typeof(decimal));
            table.Columns.Add(kDouble, typeof(double));
            table.Columns.Add(kNumero, typeof(int));

            var row = table.NewRow();

            row[nameof(SimpleTestClass.Name)]          = "Pepe";
            row[nameof(SimpleTestClass.LastName)]      = "De la Rosa Martínez";
            row[nameof(SimpleTestClass.BirthDate)]     = new DateTime(1980, 12, 31);
            row[nameof(SimpleTestClass.DecimalNumber)] = decimal.MaxValue;
            row[kNumero] = 666;
            row[kDouble] = Math.PI;
            table.Rows.Add(row);

            row = table.NewRow();
            row[nameof(SimpleTestClass.Name)]          = "Tronco";
            row[nameof(SimpleTestClass.LastName)]      = "Ramírez Villalobos";
            row[nameof(SimpleTestClass.BirthDate)]     = new DateTime(1955, 10, 12);
            row[nameof(SimpleTestClass.DecimalNumber)] = 666m;
            row[kNumero] = 512;
            row[kDouble] = Math.E;
            table.Rows.Add(row);

            var items = ds
                        .AsTable()
                        .AsEnumerable()
                        .AutoMap <SimpleTestClass>()
                        .ToList()
            ;

            Assert.AreEqual(2, items.Count());

            var itemPepe = items.Single(r => r.Name == "Pepe");

            Assert.AreEqual("De la Rosa Martínez", itemPepe.LastName);
            Assert.AreEqual(new DateTime(1980, 12, 31), itemPepe.BirthDate);
            Assert.AreEqual(decimal.MaxValue, itemPepe.DecimalNumber);
            Assert.AreEqual(0.0, itemPepe.DoubleNumber);
            Assert.AreEqual(0, itemPepe.Number);

            var itemTronco = items.Single(r => r.Name == "Tronco");

            Assert.AreEqual("Ramírez Villalobos", itemTronco.LastName);
            Assert.AreEqual(new DateTime(1955, 10, 12), itemTronco.BirthDate);
            Assert.AreEqual(666m, itemTronco.DecimalNumber);
            Assert.AreEqual(0.0, itemTronco.DoubleNumber);
            Assert.AreEqual(0, itemTronco.Number);

            items = ds
                    .AsTable()
                    .AsEnumerable()
                    .AutoMap <SimpleTestClass>((r, i) =>
            {
                i.DoubleNumber = r.Get <double>(kDouble);
                i.Number       = r.Get <int>(kNumero);
            })
                    .ToList()
            ;

            Assert.AreEqual(2, items.Count());

            itemPepe = items.Single(r => r.Name == "Pepe");
            Assert.AreEqual("De la Rosa Martínez", itemPepe.LastName);
            Assert.AreEqual(new DateTime(1980, 12, 31), itemPepe.BirthDate);
            Assert.AreEqual(decimal.MaxValue, itemPepe.DecimalNumber);
            Assert.AreEqual(666, itemPepe.Number);
            Assert.AreEqual(Math.PI, itemPepe.DoubleNumber);

            itemTronco = items.Single(r => r.Name == "Tronco");
            Assert.AreEqual("Ramírez Villalobos", itemTronco.LastName);
            Assert.AreEqual(new DateTime(1955, 10, 12), itemTronco.BirthDate);
            Assert.AreEqual(666m, itemTronco.DecimalNumber);
            Assert.AreEqual(Math.E, itemTronco.DoubleNumber);
            Assert.AreEqual(512, itemTronco.Number);
        }