def test_get_lowest_offer_empty_contender_offer(self): customer_request = CustomerRequest('Regular', []) self.assertEqual( HotelChain.get_lowest_offer( self.hotel_a.get_offer(customer_request), None), self.hotel_a.get_offer(customer_request))
def process_input_line(line): '''Process each customer input and returns the cheapest hotel ''' client_type, dates = line.split(':') dates = list(map(lambda x: x.strip(), dates.split(','))) customer_request = CustomerRequest(client_type, dates) print(hotel_chain.find_best_offer(customer_request))
def test_weekdays_null(self): customer_request = CustomerRequest( 'Regular', [ ] ) self.assertEqual(customer_request.weekdays_count, 0) self.assertEqual(customer_request.weekends_count, 0)
def test_get_lowest_offer_current_offer_lower_price(self): customer_request = CustomerRequest('Regular', ['16Mar2009(mon)']) self.assertEqual( HotelChain.get_lowest_offer( self.hotel_a.get_offer(customer_request), self.hotel_b.get_offer(customer_request), ), self.hotel_a.get_offer(customer_request))
def test_get_lowest_offer_same_price_contender_lower_ranking(self): customer_request = CustomerRequest( 'Reward', ['15Mar2009(sun)', '16Mar2009(mon)']) self.assertEqual( HotelChain.get_lowest_offer( self.hotel_b.get_offer(customer_request), self.hotel_a.get_offer(customer_request), ), self.hotel_b.get_offer(customer_request))
def test_weekdays_1_weekday(self): customer_request = CustomerRequest( 'Regular', [ '16Mar2009(mon)', ] ) self.assertEqual(customer_request.weekdays_count, 1) self.assertEqual(customer_request.weekends_count, 0)
def test_calculate_reward_2_weekday_2_weekend(self): customer_request = CustomerRequest('Reward', [ '14Mar2009(sat)', '15Mar2009(sun)', '16Mar2009(mon)', '17Mar2009(tues)', ]) self.assertEqual( self.hotel.calculate_price(customer_request), self.weekend_reward_price * 2 + self.weekday_reward_price * 2)
def test_calculate_reward_5_weekday(self): customer_request = CustomerRequest('Reward', [ '16Mar2009(mon)', '17Mar2009(tues)', '18Mar2009(wes)', '19Mar2009(thur)', '20Mar2009(fri)', ]) self.assertEqual(self.hotel.calculate_price(customer_request), self.weekday_reward_price * 5)
def test_set_weekdays(self): customer_request = CustomerRequest( 'Regular', [ '14Mar2009(sat)', '15Mar2009(sun)', '16Mar2009(mon)', '17Mar2009(tues)', '18Mar2009(wed)' ] ) self.assertEqual(customer_request.weekdays_count, 3) self.assertEqual(customer_request.weekends_count, 2)
def test_get_offer(self): customer_request = CustomerRequest('Reward', [ '14Mar2009(sat)', '15Mar2009(sun)', '16Mar2009(mon)', '17Mar2009(tues)' ]) self.assertDictEqual( self.hotel.get_offer(customer_request), { 'hotel': self.hotel, 'price': self.weekend_reward_price * 2 + self.weekday_reward_price * 2 })
def test_find_best_offer_empty_dates(self): customer_request = CustomerRequest('Regular', []) self.assertEqual(self.hotel_chain.find_best_offer(customer_request), self.hotel_c.name)
def test_calculate_regular_2_weekend(self): customer_request = CustomerRequest( 'Regular', ['14Mar2009(sat)', '15Mar2009(sun)']) self.assertEqual(self.hotel.calculate_price(customer_request), self.weekend_regular_price * 2)
def test_calculate_reward_1_weekday(self): customer_request = CustomerRequest('Reward', ['16Mar2009(mon)']) self.assertEqual(self.hotel.calculate_price(customer_request), self.weekday_reward_price)
def test_calculate_reward_1_weekend(self): customer_request = CustomerRequest('Reward', ['14Mar2009(sat)']) self.assertEqual(self.hotel.calculate_price(customer_request), self.weekend_reward_price)
def test_find_best_offer_testcase_3(self): customer_request = CustomerRequest( 'Reward', ['26Mar2009(thur)', '27Mar2009(fri)', '28Mar2009(sat)']) self.assertEqual(self.hotel_chain.find_best_offer(customer_request), self.hotel_c.name)
def test_find_best_offer_testcase_2(self): customer_request = CustomerRequest( 'Regular', ['20Mar2009(fri)', '21Mar2009(sat)', '22Mar2009(sun)']) self.assertEqual(self.hotel_chain.find_best_offer(customer_request), self.hotel_b.name)
def test_find_best_offer_testcase_1(self): customer_request = CustomerRequest( 'Regular', ['16Mar2009(mon)', '17Mar2009(tues)', '18Mar2009(wed)']) self.assertEqual(self.hotel_chain.find_best_offer(customer_request), self.hotel_a.name)
def test_calculate_regular_empty(self): customer_request = CustomerRequest('Regular', []) self.assertEqual(self.hotel.calculate_price(customer_request), 0)