public void Map_TestMappingCommonlyNamedProperties()
        {
            var expected = new SaleItem
            {
                Description = "Test SaleItem",
                Id = 1,
                Weight = 3.4
            };

            var actual = Yam<SaleItem, Product>.Map(expected);

            Assert.AreEqual(expected.Description, actual.Description);
            Assert.AreEqual(expected.Id, actual.Id);
            Assert.AreEqual(0, actual.ShippingWeight);
        }
        public void Map_TestMappingUsingConstantExpressions()
        {
            var expected = new SaleItem
            {
                Description = "Test SaleItem",
                Id = 1,
                Weight = 3.4
            };

            var actual = Yam<SaleItem, Product>
                .Use(saleItem => 42, product => product.ShippingWeight)
                .Map(expected);

            Assert.AreEqual(expected.Description, actual.Description);
            Assert.AreEqual(expected.Id, actual.Id);
            Assert.AreEqual(42, actual.ShippingWeight);
        }
        public void Map_CreatesAMap_AndAddsItToTheYam()
        {
            var map = Yam.GetMap<SaleItem, Product>();
            Assert.IsNull(map);

            var expected = new SaleItem
            {
                Description = "Test SaleItem",
                Id = 1,
                Weight = 3.4
            };

            Yam<SaleItem, Product>.Map(expected);

            map = Yam.GetMap<SaleItem, Product>();
            Assert.IsNotNull(map);
        }
        public void Map_TestMappingPropertiesThatAreGenericLists_WhenAMappingForThoseDataTypesExists()
        {
            SaleItem saleItem1 = new SaleItem { Description = "SaleItem 1", Id = 1, Weight = 3.5 };
            SaleItem saleItem2 = new SaleItem { Description = "SaleItem 2", Id = 2, Weight = 4.7 };
            List<SaleItem> saleItems = new List<SaleItem> { saleItem1, saleItem2 };
            Order order = new Order { Items = saleItems };

            Yam.CreateMap(typeof(Order), typeof(Invoice));
            Yam.CreateMap(typeof(SaleItem), typeof(Product));
            Yam.AddPropertyMap(typeof(SaleItem), typeof(Product), "Weight", "ShippingWeight");

            Invoice invoice = (Invoice)Yam.Map(order, typeof(Invoice));

            Assert.AreEqual(order.Items.Count, invoice.Items.Count);
            foreach (var item in order.Items)
                Assert.IsNotNull(invoice.Items.FirstOrDefault(it => it.Description == item.Description && it.Id == item.Id && it.ShippingWeight == item.Weight));
        }