示例#1
0
        public void Pass_Through_Variavle_Discounts()
        {
            //arrange
            Mock <IDiscountHelper> mock = new Mock <IDiscountHelper>();

            mock.Setup(m => m.ApplyDiscount(It.IsAny <decimal>())).Returns <decimal>(total => total);
            mock.Setup(m => m.ApplyDiscount(It.Is <decimal>(v => v <= 0))).Throws <System.ArgumentOutOfRangeException>();

            mock.Setup(m => m.ApplyDiscount(It.Is <decimal>(v => v > 100))).Returns <decimal>(total => (total * 0.9M));
            mock.Setup(m => m.ApplyDiscount(It.IsInRange <decimal>(10, 100, Range.Inclusive))).Returns <decimal>(total => (total - 5));

            var target = new LinqValueCalculyator(mock.Object);

            //act
            decimal FiveDollarDiscount        = target.ValueProducts(createProduct(5));
            decimal TenDollarDiscount         = target.ValueProducts(createProduct(10));
            decimal FiftyDollarDiscount       = target.ValueProducts(createProduct(50));
            decimal HundredDollarDiscount     = target.ValueProducts(createProduct(100));
            decimal FiveHundredDollarDiscount = target.ValueProducts(createProduct(500));

            // assert

            Assert.AreEqual(5, FiveDollarDiscount, "$5 Fail");
            Assert.AreEqual(5, TenDollarDiscount, "$10 Fail");
            Assert.AreEqual(45, FiftyDollarDiscount, "$50 Fail");
            Assert.AreEqual(95, HundredDollarDiscount, "$100 Fail");
            Assert.AreEqual(450, FiveHundredDollarDiscount, "$500 Fail");
            target.ValueProducts(createProduct(-100));
        }
示例#2
0
        public void Sum_Products_Correctly()
        {
            //Arrange

            Mock <IDiscountHelper> mock = new Mock <IDiscountHelper>();

            mock.Setup(m => m.ApplyDiscount(It.IsAny <decimal>())).Returns <decimal>(total => total);


            var target = new LinqValueCalculyator(mock.Object);



            //act
            var result = target.ValueProducts(products);

            //assert
            Assert.AreEqual(products.Sum(e => e.Price), result);
        }