Beispiel #1
0
        public void DiscountBookPricesWithTopSet_WhenBooksArePurchasedUnderBookCompositeWithAnotherComposite()
        {
            // Arrange
            var book1            = new Book("Effective C++", 65.0M);
            var book2            = new Book("More Effective C++", 35.0M);
            var bookCompositeCpp = new BookComposite(5, "Effective C++ Series");

            bookCompositeCpp.Add(book1);
            bookCompositeCpp.Add(book2);

            var bookCompositeCSharp = new BookComposite(10, "Effective C# Series");
            var book3 = new Book("Effective C#", 70.0M);
            var book4 = new Book("Pro C# Coding", 30.0M);

            bookCompositeCSharp.Add(book3);
            bookCompositeCSharp.Add(book4);

            var effectiveSeries = new BookComposite(15, "Effective Coding Series");

            effectiveSeries.Add(bookCompositeCpp);
            effectiveSeries.Add(bookCompositeCSharp);

            // Act
            var effectiveSeriesPrice = ComputeDiscount(effectiveSeries.Discount, effectiveSeries.Price);

            // Assert
            effectiveSeriesPrice.Should().Be(170.0M);
        }
Beispiel #2
0
        public void DiscountBookPriceAsSet_WhenBooksArePurchasedUnderBookComposite()
        {
            // Arrange
            var book1         = new Book("Effective C++", 65.0M);
            var book2         = new Book("More Effective C++", 35.0M);
            var bookComposite = new BookComposite(5, "Effective C++ Series");

            bookComposite.Add(book1);
            bookComposite.Add(book2);

            // Act
            var compositePrice = ComputeDiscount(bookComposite.Discount, bookComposite.Price);

            // Assert
            compositePrice.Should().Be(95.0M);
        }