public void Test_order_with_too_big_package() { var sut = new Solution(); var products = new Products {{"A", 1}}; var price = 0; sut.Setup(products, new ProductPackages {new ProductPackage {Price = 6, Products = Enumerable.Repeat("A", 8).ToList()}}); sut.SendPrice += p => price = p; sut.OrderMultiple(7, "A"); price.Should().Be(7, "6 would be to many As"); }
public void Test_performance() { var sut = new Solution(); var products = new Products {{"A", 10}, {"B", 20}, {"C", 30}}; var productPackages = new ProductPackages { new ProductPackage {Price = 29, Products = new List<string> {"A", "B"}}, new ProductPackage {Price = 30, Products = new List<string> {"A", "A", "A", "A"}}, new ProductPackage {Price = 48, Products = new List<string> {"B", "C"}}, new ProductPackage {Price = 57, Products = new List<string> {"A", "B", "C"}} }; sut.Setup(products, productPackages); sut.SendPrice += price => Console.WriteLine("{0,3}. Order, Price: {1,5}", count++, price); //sut.OrderMultiple(50, "A"); //sut.OrderMultiple(5, "B"); //sut.OrderMultiple(3, "C"); sut.OrderMultiple(40, "A"); sut.OrderMultiple(40, "B"); sut.OrderMultiple(40, "C"); }
public void Test_order_where_it_is_not_better_to_take_highest_discount() { var sut = new Solution(); var products = new Products { { "A", 10 } }; var productPackages = new ProductPackages { new ProductPackage {Price = 47, Products = new List<string> {"A", "A", "A", "A", "A"}}, // discount 3/5 pp new ProductPackage {Price = 38, Products = new List<string> {"A", "A", "A", "A"}} // discount 1/2 pp }; var price = 0; sut.Setup(products, productPackages); sut.SendPrice += p => price = p; sut.OrderMultiple(8, "A"); price.Should().Be(2 * 38); }