예제 #1
0
    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))
예제 #2
0
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)
예제 #4
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))
예제 #5
0
 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)
예제 #7
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)
예제 #8
0
 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)
예제 #10
0
    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
            })
예제 #11
0
    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)
예제 #12
0
 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)
예제 #13
0
 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)
예제 #14
0
 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)
예제 #15
0
    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)
예제 #16
0
 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)
예제 #17
0
 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)
예제 #18
0
 def test_calculate_regular_empty(self):
     customer_request = CustomerRequest('Regular', [])
     self.assertEqual(self.hotel.calculate_price(customer_request), 0)