public void Test() { // 生成操作对象实例 IHandler handler1 = new InternalHandler(); IHandler handler2 = new DiscountHandler(); IHandler handler3 = new MailHandler(); IHandler handler4 = new RegularHandler(); // 组装链式的结构 internal-> mail-> discount-> regular-> null handler1.Successor = handler3; handler3.Successor = handler2; handler2.Successor = handler4; IHandler head = handler1; Request request = new Request(20, PurchaseType.Mail); head.HandleRequest(request); Assert.AreEqual <double>(20 * 1.3, request.Price); // 重新组织链表结构 handler1.Successor = handler1.Successor.Successor; // 短路掉Discount request = new Request(20, PurchaseType.Discount); head.HandleRequest(new Request(20, PurchaseType.Discount)); Assert.AreEqual <double>(20, request.Price); // 确认被短路的部分无法生效 }
static void Main() { double saleAmount; char code; DiscountHandler firstDel, secondDel, thirdDel; firstDel = new DiscountHandler(StandardDiscount); secondDel = new DiscountHandler(PreferredDiscount); thirdDel = firstDel + secondDel; Write("Enter amount of sale: "); saleAmount = Convert.ToDouble(ReadLine()); Write("Enter \'S\' for standard discount, \'P\' for preferred discount,\nor \'X\' for eXtreme discount: "); code = Convert.ToChar(ReadLine()); if (code == 'S') { firstDel(ref saleAmount); } else { if (code == 'P') { secondDel(ref saleAmount); } else { thirdDel(ref saleAmount); } } WriteLine("New sale amount int: {0}", saleAmount.ToString("C2")); }
public void ApplyDiscount(IDiscount discount, ref IArticle article) { ValidateInput(discount, article); string userInput = GetUserInput(); var discountHandler = new DiscountHandler(r => userInput == "Yes", ExecuteDiscount); discountHandler.Discount(discount, article); }
public void ApplyDiscount(IDiscount discount, ref IArticle article) { ValidateInput(discount, article); var castedDiscount = discount as PeriodDiscount; var discountHandler = new DiscountHandler(r => IsBetweenDate(castedDiscount.StartDate, castedDiscount.EndDate), ExecuteDiscount); discountHandler.Discount(discount, article); }
public void ProductStorageLifeEnd(object source, DiscountHandler e) { if (e.StorageLife == 0) { JournalEntryProduct je = new JournalEntryProduct(e.Message, e.Price, e.Discount, e.StorageLife, e.Product); DeadProducts.Add(je); } }
public static void Execute() { var handler3 = new DiscountHandler("3", 200, 6000); var handler2 = new DiscountHandler("2", 100, 8000, handler3); var handler1 = new DiscountHandler("1", 100, 10000, handler2); Console.WriteLine(handler1.Discount(250, 8000)); Console.WriteLine(handler1.Discount(1000, 16000)); Console.WriteLine(handler3.Discount(300, 10000)); }
private void IncrementDiscountCounter(int _ProfileID, int _CouponID) { try { DiscountHandler handler = new DiscountHandler(); handler.IncrementDiscountCounter(_ProfileID, _CouponID); } catch (Exception ex) { } }
private void IncrementDiscountCounter(int _ProfileID, int _CouponID) { try { DiscountHandler handler = new DiscountHandler(); handler.IncrementDiscountCounter(_ProfileID, _CouponID); } catch (Exception ex) { lblSystemMessage.Text = ex.Message; } }
public void EligibleForDiscount_NameNotStartsWithA_ReturnsFalse() { DiscountHandler handler = new DiscountHandler(); string name1 = "Bob Anthony"; string name2 = " curt Alanson"; bool discounted1 = handler.EligibleForDiscount(name1); bool discounted2 = handler.EligibleForDiscount(name2); Assert.IsFalse(discounted1, $"Expected name: {name1} to not be eligible for a discount"); Assert.IsFalse(discounted2, $"Expected name: {name2} to not be eligible for a discount"); }
public void EligibleForDiscount_NameStartsWithA_ReturnsTrue() { DiscountHandler handler = new DiscountHandler(); string name1 = "Adam Smith"; string name2 = " alan Curtis "; bool discounted1 = handler.EligibleForDiscount(name1); bool discounted2 = handler.EligibleForDiscount(name2); Assert.IsTrue(discounted1, $"Expected name: {name1} to be eligible for a discount"); Assert.IsTrue(discounted2, $"Expected name: {name2} to be eligible for a discount"); }
public void StartDiscountFunctionsTest() { // Arrange IDiscountHandler discountHandler = new DiscountHandler(); IDiscountHandler discountHandlerSec = new DiscountHandler(10M); ShipmentHandler shipmentHandler = new ShipmentHandler(); var shipment = shipmentHandler.CreateShipment("2015-02-01 S MR"); var shipmentSec = shipmentHandler.CreateShipment("2015-02-01 S MR"); // Act discountHandler.StartDiscountFunctions(shipment, 3M); discountHandlerSec.StartDiscountFunctions(shipmentSec, 3M); // Assert Assert.AreEqual(shipment.ToString(), shipmentSec.ToString()); }
public void Test() { // 生成操作对象实例 IHandler handler1 = new InternalHandler(); IHandler handler2 = new DiscountHandler(); IHandler handler3 = new MailHandler(); IHandler handler4 = new RegularHandler(); //// 组装链式的结构 internal-> mail-> discount-> regular-> null handler1.AddSuccessor(handler2); handler2.AddSuccessor(handler3); handler2.AddSuccessor(handler4); IHandler head = handler1; Request request = new Request(20, PurchaseType.Mail); head.HandleRequest(request); Assert.AreEqual <double>(20 * 1.3, request.Price); }
static void Main(string[] args) { IHandler handler1 = new InternalHandler(); IHandler handler2 = new DiscountHandler(); IHandler handler3 = new MailHandler(); IHandler handler4 = new RegularHandler(); handler1.Next = handler3; handler3.Next = handler2; handler2.Next = handler4; IHandler head = handler1; Request request = new Request(20, PurchaseType.Mail); head.HandleRequest(request); Console.Write(request.Price); //26 //将MailHandler短路 handler1.Next = handler1.Next.Next; request = new Request(20, PurchaseType.Mail); head.HandleRequest(request); Console.Write(request.Price); //20 }
public void Test() { // 生成操作对象实例、组装链式结构 IHandler handler1 = new InternalHandler(); IHandler handler2 = new DiscountHandler(); IHandler handler3 = new MailHandler(); IHandler handler4 = new RegularHandler(); handler1.Successor = handler3; handler3.Successor = handler2; handler2.Successor = handler4; IHandler head = handler1; handler1.HasBreakPoint = true; handler1.Break += this.Break; handler3.HasBreakPoint = true; handler3.Break += this.Break; Request request = new Request(20, PurchaseType.Regular); head.HandleRequest(request); currentType = PurchaseType.Internal; // 为第一个断点做的准备 Assert.AreEqual <double>(20, request.Price); }
public void ProductDiscountChanged(object source, DiscountHandler e) { JournalEntryProduct je = new JournalEntryProduct(e.Message, e.Price, e.Discount, e.StorageLife, e.Product); JournalEntryProducts.Add(je); }