예제 #1
0
    public void CreateReservation()
    {
        // Arrange
        DiscountCondition dc = new DiscountCondition()
        {
            Type     = DiscountConditionType.SEQUENCE,
            Sequence = 5
        };
        Movie     movie     = new Movie("THE BATMAN", TimeSpan.FromMinutes(300), Money.Wons(14000), Money.Wons(2000), dc);
        Screening screening = new Screening()
        {
            Movie        = movie,
            Sequence     = 5,
            WhenScreened = new DateTime(2022, 3, 12, 18, 00, 00)
        };
        Customer customer = new Customer("jongfeel", "0");

        // Action
        Reservation reservation = new ReservationAgency().Reserve(screening, customer, 1);

        // Assert
        Assert.IsNotNull(new ReservationAgency().Reserve(screening, customer, 1));
        Assert.AreEqual(reservation.Customer, customer);
        Assert.AreEqual(reservation.Screening, screening);
        Assert.AreEqual(reservation.Fee, Money.Wons(12000));
        Assert.AreEqual(reservation.AudienceCount, 1);
    }
예제 #2
0
    public void IsDiscountable_NoDiscountCondition()
    {
        // Arrange
        DiscountCondition dc = new DiscountCondition()
        {
            Type     = DiscountConditionType.SEQUENCE,
            Sequence = 2
        };
        Movie movie = new Movie("THE BATMAN", TimeSpan.FromMinutes(300), Money.Wons(14000), 0.1, dc);

        // Action and Assert
        Assert.IsFalse(movie.IsDiscountable(new DateTime(2022, 3, 12, 13, 00, 00), 3));
    }
예제 #3
0
    public void IsDiscountable_SEQUENCE()
    {
        // Arrange
        DiscountCondition dc = new DiscountCondition()
        {
            Type     = DiscountConditionType.SEQUENCE,
            Sequence = 2
        };

        // Action and Assert
        Assert.IsTrue(dc.IsDiscountable(2));
        Assert.IsFalse(dc.IsDiscountable(1));
    }
예제 #4
0
    public void IsDiscountable_HasDiscountCondition()
    {
        // Arrange
        DiscountCondition dc = new DiscountCondition()
        {
            Type      = DiscountConditionType.PERIOD,
            DayOfWeek = DayOfWeek.Saturday,
            StartTime = new DateTime(2022, 3, 12, 12, 00, 00),
            EndTime   = new DateTime(2022, 3, 12, 22, 00, 00)
        };
        Movie movie = new Movie("THE BATMAN", TimeSpan.FromMinutes(300), Money.Wons(14000), 0.1, dc);

        // Action and Assert
        Assert.IsTrue(movie.IsDiscountable(new DateTime(2022, 3, 12, 13, 00, 00), 2));
    }
예제 #5
0
    public void IsDiscountable_PERIOD()
    {
        // Arrange
        DiscountCondition dc = new DiscountCondition()
        {
            Type      = DiscountConditionType.PERIOD,
            DayOfWeek = DayOfWeek.Saturday,
            StartTime = new DateTime(2022, 3, 12, 12, 00, 00),
            EndTime   = new DateTime(2022, 3, 12, 22, 00, 00)
        };

        // Action and Assert
        Assert.IsTrue(dc.IsDiscountable(DayOfWeek.Saturday, new DateTime(2022, 3, 12, 18, 00, 00)));
        Assert.IsFalse(dc.IsDiscountable(DayOfWeek.Saturday, new DateTime(2022, 3, 12, 8, 00, 00)));
        Assert.IsFalse(dc.IsDiscountable(DayOfWeek.Sunday, new DateTime(2022, 3, 12, 8, 00, 00)));
        Assert.IsFalse(dc.IsDiscountable(DayOfWeek.Sunday, new DateTime(2022, 3, 12, 8, 00, 00)));
    }
예제 #6
0
    public void CalculateFee()
    {
        // Arrange
        // Arrange
        DiscountCondition dc = new DiscountCondition()
        {
            Type     = DiscountConditionType.SEQUENCE,
            Sequence = 5
        };
        Movie     movie     = new Movie("THE BATMAN", TimeSpan.FromMinutes(300), Money.Wons(14000), Money.Wons(2000), dc);
        Screening screening = new Screening()
        {
            Movie        = movie,
            Sequence     = 5,
            WhenScreened = new DateTime(2022, 3, 12, 18, 00, 00)
        };

        // Action and Assert
        Assert.AreEqual(screening.CalculateFee(1), Money.Wons(12000));
        Assert.AreEqual(screening.CalculateFee(2), Money.Wons(24000));
    }
예제 #7
0
파일: Program.cs 프로젝트: jongfeel/objects
        static void Main(string[] args)
        {
            // Reservation movie by DiscountCondition
            DiscountCondition dc = new DiscountCondition();

            dc.Type      = DiscountConditionType.PERIOD;
            dc.DayOfWeek = DayOfWeek.Friday;
            dc.StartTime = new DateTime(2021, 8, 13, 17, 0, 0);
            dc.EndTime   = new DateTime(2021, 8, 13, 21, 0, 0);

            Movie freeguy = new Movie("Free guy", TimeSpan.FromMinutes(115), Money.Wons(14000), Money.Wons(5000), dc);

            Screening screening = new Screening();

            screening.Movie        = freeguy;
            screening.Sequence     = 1;
            screening.WhenScreened = new DateTime(2021, 8, 13, 18, 30, 0);

            Reservation reservation = new ReservationAgency().Reserve(screening, new Customer("jongfeel", "feel"), 1);

            Console.WriteLine("Movie.Fee=" + freeguy.Fee);
            Console.WriteLine("Reservation.Fee=" + reservation.Fee);
        }