public void ProductPriceTest() { ProductWrapper productMain = new ProductWrapper(new Product { Part = new Part() }); //ловим ошибку при пустом списке себистоимостей в главном продукте try { productMain.GetPrice(); } catch (ArgumentException e) { Assert.AreSame(e.Message, "Нет себистоимости для этой даты (или для более ранней даты)"); } //добавляем стоимость главного продукта productMain.Part.Prices.Add(new CostOnDateWrapper(new CostOnDate { Date = DateTime.Today.AddDays(-1), Cost = 10 })); Assert.AreEqual(productMain.GetPrice(), 10); //добавляем стоимость дочернего продукта ProductWrapper productChild1 = new ProductWrapper(new Product { Part = new Part() }); productChild1.Part.Prices.Add(new CostOnDateWrapper(new CostOnDate { Date = DateTime.Today.AddDays(-1), Cost = 10 })); productMain.DependentProducts.Add(productChild1); Assert.AreEqual(productMain.GetPrice(), 20); //добавляем стоимость дочернего продукта к дочернему продукту ProductWrapper productChild2 = new ProductWrapper(new Product { Part = new Part() }); productChild2.Part.Prices.Add(new CostOnDateWrapper(new CostOnDate { Date = DateTime.Today.AddDays(-1), Cost = 10 })); productChild1.DependentProducts.Add(productChild2); Assert.AreEqual(productMain.GetPrice(), 30); }