static void Main(string[] args) { // SequenceCondition + AmountDiscountPolicy SequenceCondition sc1 = new SequenceCondition(1); SequenceCondition sc2 = new SequenceCondition(2); AmountDiscountPolicy adp = new AmountDiscountPolicy(Money.Wons(10000), sc1, sc2); Movie GodzillaVSKong = new Movie("고질라VS.콩", TimeSpan.FromMinutes(113), Money.Wons(18000), adp); Screening screening = new Screening(GodzillaVSKong, 1, new DateTime(2021, 4, 3)); Reservation reservation = screening.Reserve(new Customer(), 1); Console.WriteLine(reservation); // --- // PeriodCondition + PercentDiscountPolicy PeriodCondition pc1 = new PeriodCondition(DayOfWeek.Saturday, TimeSpan.FromHours(9), TimeSpan.FromHours(13)); PeriodCondition pc2 = new PeriodCondition(DayOfWeek.Sunday, TimeSpan.FromHours(9), TimeSpan.FromHours(13)); PeriodCondition pc3 = new PeriodCondition(DayOfWeek.Monday, TimeSpan.FromHours(18), TimeSpan.FromHours(24)); PercentDiscountPolicy pdp = new PercentDiscountPolicy(0.1, pc1, pc2, pc3); Movie theBookOfFish = new Movie("자산어보", TimeSpan.FromMinutes(126), Money.Wons(12000), pdp); Screening screening2 = new Screening(theBookOfFish, 3, new DateTime(2021, 4, 4, 11, 50, 00)); Reservation reservation2 = screening2.Reserve(new Customer() { Name = "jongfeel" }, 1); Console.WriteLine(reservation2); }
public void ReserveTest() { // Arrange & Action Customer jongfeel = new Customer("jongfeel", "1"); PeriodCondition periodCondition = new PeriodCondition( DayOfWeek.Wednesday, new DateTime(2022, 3, 23, 12, 0, 0), new DateTime(2022, 3, 23, 22, 0, 0) ); SequenceCondition sequenceCondition = new SequenceCondition(1); Movie theBatman = new AmountDiscountMovie("The Batman", TimeSpan.FromMinutes(176), Money.Wons(14000), Money.Wons(2000), new DiscountCondition[] { periodCondition, sequenceCondition }); Reservation reservation = new Screening() { Movie = theBatman }.Reserve(jongfeel, 1); // Assert Assert.AreEqual(reservation.AudienceCount, 1); Assert.AreEqual(reservation.Customer, jongfeel); }