示例#1
0
        public void FamilyRental_CalculatePrice_RentalListFull_Succeeds()
        {
            //Arrange
            decimal      discount      = new decimal(0.30);
            Rental       rentalByHour  = new Rental(5, 3);
            Rental       rentalByDay   = new Rental(20, 2);
            Rental       rentalByWeek  = new Rental(60, 1);
            FamilyRental familyRental  = new FamilyRental(discount);
            FamilyRental familyRental2 = new FamilyRental(discount);

            familyRental2.AddRental(rentalByHour);
            familyRental2.AddRental(rentalByDay);
            familyRental2.AddRental(rentalByWeek);

            familyRental.AddRental(rentalByHour);
            familyRental.AddRental(rentalByDay);
            familyRental.AddRental(rentalByWeek);
            familyRental.AddRental(familyRental2);

            //Act
            var result = familyRental.CalculatePrice();

            //Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(136.85, (double)result);
        }
示例#2
0
        public void Should_not_get_price_minrentals()
        {
            var rentService = _configurationService.GetInstance <IRentaislService>();

            var rentals = new List <Rental>();

            FamilyRental familyRental = new FamilyRental();

            try
            {
                familyRental.AddRental(new RentalByDay {
                    Amount = 1, Id = 1
                });
                familyRental.AddRental(new RentalByDay {
                    Amount = 1, Id = 1
                });

                var price = familyRental.Price;
            }
            catch (InvalidFamilyRentalException ex)
            {
                Assert.IsTrue(0 == 0);

                return;
            }

            Assert.IsTrue(0 != 0);
        }
示例#3
0
        public void TestByFamilyRental()
        {
            FamilyRental fr = new FamilyRental();

            fr.AddRental(CreateHourRental());
            fr.AddRental(CreateDayRental());
            Assert.AreEqual(fr.Rent(), 63);
        }
示例#4
0
        public void TestByFamilyRentalInvalid()
        {
            FamilyRental rf = new FamilyRental();

            rf.AddRental(CreateHourRental());
            rf.AddRental(CreateDayRental());
            rf.AddRental(CreateWeekRental());
            Assert.AreEqual(rf.Rent(), 63);
        }
示例#5
0
        public void TestAddExcess()
        {
            var familyRental = new FamilyRental();
            var rentals      = _rentals.Take(5).ToList();

            foreach (var r in rentals)
            {
                familyRental.AddRental(r);
            }
            Assert.ThrowsException <RentalException>(() => familyRental.AddRental(rentals.Last()));
        }
示例#6
0
        public void TestEndDate()
        {
            var familyRental = new FamilyRental();

            familyRental.AddRental(new HourlyRental {
                BeginDate = _baseDate, EndDate = _baseDate.AddHours(8)
            });
            familyRental.AddRental(new HourlyRental {
                BeginDate = _baseDate, EndDate = _baseDate.AddHours(3)
            });
            Assert.AreEqual(familyRental.EndDate, _baseDate.AddHours(8));
        }
示例#7
0
        public void TestBeginDate()
        {
            var familyRental = new FamilyRental();

            familyRental.AddRental(new HourlyRental {
                BeginDate = _baseDate
            });
            familyRental.AddRental(new HourlyRental {
                BeginDate = _baseDate.AddDays(-5)
            });
            Assert.AreEqual(familyRental.BeginDate, _baseDate.AddDays(-5));
        }
示例#8
0
        public void TestIsNotFinished()
        {
            var familyRental = new FamilyRental();

            familyRental.AddRental(new HourlyRental {
                BeginDate = _baseDate, EndDate = _baseDate.AddHours(3)
            });
            familyRental.AddRental(new HourlyRental {
                BeginDate = _baseDate
            });
            familyRental.AddRental(new HourlyRental {
                BeginDate = _baseDate, EndDate = _baseDate.AddHours(3)
            });
            Assert.IsFalse(familyRental.IsFinished());
        }
示例#9
0
        public void FamilyRental_CalculatePrice_RentalListNotFull_Fails()
        {
            //Arrange
            decimal      discount     = new decimal(0.30);
            Rental       rentalByHour = new Rental(5, 3);
            Rental       rentalByDay  = new Rental(20, 2);
            Rental       rentalByWeek = new Rental(60, 1);
            FamilyRental familyRental = new FamilyRental(discount);

            familyRental.AddRental(rentalByHour);
            familyRental.AddRental(rentalByDay);

            //Act & Assert
            Assert.ThrowsException <IndexOutOfRangeException>(() => familyRental.CalculatePrice());
        }
示例#10
0
        public void InitialSetup()
        {
            _nBikes = 1;
            _hours  = 3;
            _days   = 2;
            _weeks  = 1;

            _hourlyRental = new HourlyRental(_nBikes, _hours);
            _dailyRental  = new DailyRental(_nBikes, _days);
            _weeklyRental = new WeeklyRental(_nBikes, _weeks);

            _familyRental = new FamilyRental();
            _familyRental.AddRental(_hourlyRental);
            _familyRental.AddRental(_dailyRental);
            _familyRental.AddRental(_weeklyRental);
        }
示例#11
0
        public void TestAvailableSlots()
        {
            var familyRental = new FamilyRental();

            Assert.AreEqual(familyRental.AvailableSlots, 5);
            familyRental.AddRental(_rentals[0]);
            Assert.AreEqual(familyRental.AvailableSlots, 4);
        }
示例#12
0
        public void TestIsValid()
        {
            var familyRental = new FamilyRental();
            var rentals      = _rentals.Take(5).ToList();

            foreach (var r in rentals)
            {
                familyRental.AddRental(r);
            }
            Assert.IsTrue(familyRental.IsValid());
        }
示例#13
0
        public void TestGetPrice()
        {
            var familyRental = new FamilyRental();
            var rentals      = _rentals.Take(3).ToList();

            foreach (var r in rentals)
            {
                familyRental.AddRental(r);
            }
            var expectedPrice = (15m + 60m + 180m);

            expectedPrice -= expectedPrice * 0.3m;
            Assert.AreEqual(familyRental.GetPrice(), expectedPrice);
        }
示例#14
0
        public void FamilyRental_GetRental_indexOutOfRange_Fails()
        {
            //Arrange
            decimal      discount     = new decimal(0.30);
            int          pricePerUnit = 5;
            decimal      units        = 3;
            Rental       rental       = new Rental(pricePerUnit, units);
            FamilyRental familyRental = new FamilyRental(discount);

            familyRental.AddRental(rental);

            //Act & Assert
            Assert.ThrowsException <IndexOutOfRangeException>(() => familyRental.GetRental(1));
        }
示例#15
0
        public void FamilyRental_AddRental_RentalListNotFull_Succeeds()
        {
            //Arrange
            decimal      discount     = new decimal(0.30);
            int          pricePerUnit = 5;
            decimal      units        = 3;
            Rental       rental       = new Rental(pricePerUnit, units);
            FamilyRental familyRental = new FamilyRental(discount);

            //Act
            familyRental.AddRental(rental);

            //Assert
            Assert.AreEqual(1, familyRental.GetRentalCount());
        }
示例#16
0
        public void TestRemove()
        {
            var familyRental = new FamilyRental();
            var rentals      = _rentals.Take(3).ToList();

            foreach (var r in rentals)
            {
                familyRental.AddRental(r);
            }
            Assert.AreEqual(familyRental.Rentals.Count(), 3);

            foreach (var r in rentals)
            {
                familyRental.RemoveRental(r);
            }
            Assert.AreEqual(familyRental.Rentals.Count(), 0);
        }
示例#17
0
        public void FamilyRental_GetRentalCount_AllParameters_Succeeds()
        {
            //Arrange
            decimal      discount     = new decimal(0.30);
            int          pricePerUnit = 5;
            decimal      units        = 3;
            Rental       rental       = new Rental(pricePerUnit, units);
            FamilyRental familyRental = new FamilyRental(discount);

            familyRental.AddRental(rental);

            //Act
            var result = familyRental.GetRentalCount();

            //Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(1, result);
        }
示例#18
0
 public void PromotionTest()
 {
     _familyRental.AddRental(new DailyRental(3, 3));
 }
示例#19
0
        public void Should_get_family_rental_price()
        {
            var rentService = _configurationService.GetInstance <IRentaislService>();

            var rentals = new List <Rental>();

            FamilyRental familyRental = new FamilyRental();

            familyRental.AddRental(new RentalByDay {
                Amount = 1, Id = 1
            });
            familyRental.AddRental(new RentalByDay {
                Amount = 1, Id = 1
            });
            familyRental.AddRental(new RentalByDay {
                Amount = 1, Id = 1
            });

            var price = familyRental.Price;


            // TODO: Calculate number from configuration file values.
            Assert.IsTrue(price == 42);

            familyRental = new FamilyRental();

            familyRental.AddRental(new RentalByDay {
                Amount = 1, Id = 1
            });
            familyRental.AddRental(new RentalByDay {
                Amount = 1, Id = 1
            });
            familyRental.AddRental(new RentalByDay {
                Amount = 1, Id = 1
            });
            familyRental.AddRental(new RentalByDay {
                Amount = 1, Id = 1
            });

            price = familyRental.Price;

            // TODO: Calculate number from configuration file values.
            Assert.IsTrue(price == 56);

            familyRental = new FamilyRental();

            familyRental.AddRental(new RentalByDay {
                Amount = 1, Id = 1
            });
            familyRental.AddRental(new RentalByDay {
                Amount = 1, Id = 1
            });
            familyRental.AddRental(new RentalByDay {
                Amount = 1, Id = 1
            });
            familyRental.AddRental(new RentalByDay {
                Amount = 1, Id = 1
            });
            familyRental.AddRental(new RentalByDay {
                Amount = 1, Id = 1
            });

            price = familyRental.Price;

            Assert.IsTrue(price == 70);
        }