예제 #1
0
 def test_enforce_minimum_time(self):
     self.assertEqual(Babysitter.calculate_pay(12, 4),
                      "Start time is out of bounds")
     #whoops, we can start after midnight
     self.assertGreater(Babysitter.calculate_pay(3, 4), 0)
     #also should allow starting at 17 but not starting at 4
     self.assertGreater(Babysitter.calculate_pay(17, 4), 0)
     self.assertEqual(Babysitter.calculate_pay(4, 4),
                      "Start time is out of bounds")
예제 #2
0
 def test_enforce_clock_times(self):
     self.assertEqual(Babysitter.calculate_pay(25, 4),
                      "Start time is out of bounds")
     self.assertEqual(Babysitter.calculate_pay(-1, 4),
                      "Start time is out of bounds")
     self.assertEqual(Babysitter.calculate_pay(17, 25),
                      "End time is out of bounds")
     self.assertEqual(Babysitter.calculate_pay(17, -1),
                      "End time is out of bounds")
    def test_that_only_full_hour_rates_are_calculated(self):
        babysitter = Babysitter("6:30PM", "2:45AM", "c")
        self.assertEqual(babysitter.calculate_rate(), 138)

        babysitter = Babysitter("6:30PM", "2:30AM", "c")
        self.assertEqual(babysitter.calculate_rate(), 138)

        babysitter = Babysitter("6:30PM", "1:45AM", "c")
        self.assertEqual(babysitter.calculate_rate(), 123)
    def test_that_the_correct_rate_is_calculated_when_family_A_is_selected(
            self):
        babysitter = Babysitter("7:00PM", "11:00PM", "a")
        self.assertEqual(babysitter.calculate_rate(), 60)

        babysitter = Babysitter("7:00PM", "2:00AM", "a")
        self.assertEqual(babysitter.calculate_rate(), 120)

        babysitter = Babysitter("7:00PM", "10:00PM", "a")
        self.assertEqual(babysitter.calculate_rate(), 45)
    def test_that_the_correct_rate_is_calculated_when_family_C_is_selected(
            self):
        babysitter = Babysitter("6:00PM", "8:00PM", "c")
        self.assertEqual(babysitter.calculate_rate(), 42)

        babysitter = Babysitter("6:00PM", "11:00PM", "c")
        self.assertEqual(babysitter.calculate_rate(), 93)

        babysitter = Babysitter("6:00PM", "2:00AM", "c")
        self.assertEqual(babysitter.calculate_rate(), 138)
    def test_that_the_correct_rate_is_calculated_when_family_B_is_selected(
            self):
        babysitter = Babysitter("7:00PM", "9:00PM", "b")
        self.assertEqual(babysitter.calculate_rate(), 24)

        babysitter = Babysitter("7:00PM", "11:00PM", "b")
        self.assertEqual(babysitter.calculate_rate(), 44)

        babysitter = Babysitter("7:00PM", "2:00AM", "b")
        self.assertEqual(babysitter.calculate_rate(), 84)
    def test_that_the_correct_number_of_hrs_between_start_and_end_time_is_calculated(
            self):
        babysitter = Babysitter("7:00PM", "2:00AM", "a")
        self.assertEqual(babysitter.calculate_num_hrs(19, 2), 7)

        babysitter = Babysitter("7:00PM", "12:00PM", "a")
        self.assertEqual(babysitter.calculate_num_hrs(19, 24), 5)
    def test_that_the_start_time_no_earlier_than_5pm(self):
        babysitter = Babysitter("5:00PM", "10:00PM", "a")
        self.assertTrue(babysitter.is_start_time_valid())

        babysitter = Babysitter("4:00PM", "10:00PM", "a")
        self.assertFalse(babysitter.is_start_time_valid())

        babysitter = Babysitter("1:00AM", "10:00PM", "a")
        self.assertTrue(babysitter.is_start_time_valid())

        babysitter = Babysitter("4:45PM", "10:00PM", "a")
        self.assertFalse(babysitter.is_start_time_valid())
    def test_that_a_selected_family_name_is_valid_or_not(self):
        babysitter = Babysitter("8:00PM", "6:00PM", "a")
        self.assertTrue(babysitter.is_family_valid())

        babysitter = Babysitter("8:00PM", "6:00PM", "b")
        self.assertTrue(babysitter.is_family_valid())

        babysitter = Babysitter("8:00PM", "6:00PM", "c")
        self.assertTrue(babysitter.is_family_valid())

        babysitter = Babysitter("8:00PM", "6:00PM", "d")
        self.assertFalse(babysitter.is_family_valid())
예제 #10
0
    def test_that_the_start_time_is_before_end_time(self):
        babysitter = Babysitter("6:00PM", "12:00PM", "a")
        self.assertTrue(babysitter.is_start_before_end(18, 24))

        babysitter = Babysitter("1:00AM", "3:00AM", "a")
        self.assertTrue(babysitter.is_start_before_end(1, 3))

        babysitter = Babysitter("6:00PM", "3:00AM", "a")
        self.assertTrue(babysitter.is_start_before_end(18, 3))

        babysitter = Babysitter("8:00PM", "6:00PM", "a")
        self.assertFalse(babysitter.is_start_before_end(20, 18))

        babysitter = Babysitter("1:00AM", "11:00PM", "a")
        self.assertFalse(babysitter.is_start_before_end(1, 23))
예제 #11
0
    def test_that_the_end_time_no_later_than_4am(self):
        babysitter = Babysitter("6:00PM", "3:00AM", "a")
        self.assertTrue(babysitter.is_end_time_valid())

        babysitter = Babysitter("6:00PM", "10:00PM", "a")
        self.assertTrue(babysitter.is_end_time_valid())

        babysitter = Babysitter("6:00PM", "6:00AM", "a")
        self.assertFalse(babysitter.is_end_time_valid())

        babysitter = Babysitter("6:00PM", "4:30AM", "a")
        self.assertFalse(babysitter.is_end_time_valid())
예제 #12
0
    def test_that_rates_are_only_calaculated_if_inputs_are_valid(self):
        babysitter = Babysitter("6:30PM", "1:45AM", "c")
        self.assertEqual(babysitter.calculate_rate(), 123)

        babysitter = Babysitter("4:30PM", "1:45AM", "c")
        self.assertEqual(babysitter.calculate_rate(), 0)

        babysitter = Babysitter("6:30PM", "4:55AM", "a")
        self.assertEqual(babysitter.calculate_rate(), 0)

        babysitter = Babysitter("6:30PM", "1:45AM", "s")
        self.assertEqual(babysitter.calculate_rate(), 0)

        babysitter = Babysitter("1:00AM", "11:00PM", "a")
        self.assertEqual(babysitter.calculate_rate(), 0)
예제 #13
0
 def test_enforce_time_direction(self):
     self.assertEqual(Babysitter.calculate_pay(19, 18),
                      "End time must be later than start time")
     #need to check after midnight, too
     self.assertEqual(Babysitter.calculate_pay(3, 2),
                      "End time must be later than start time")
예제 #14
0
 def test_post_midnight_rate(self):
     self.assertEqual(Babysitter.calculate_pay(2, 4, 3), 2 * POST_MID)
예제 #15
0
 def test_enforce_maximum_end_time(self):
     self.assertEqual(Babysitter.calculate_pay(17, 5),
                      "End time is out of bounds")
예제 #16
0
 def test_cross_midnight_midnight_bedtime(self):
     self.assertEqual(Babysitter.calculate_pay(23, 2, 0),
                      (1 * PRE_BED) + (2 * POST_MID))
     self.assertEqual(Babysitter.calculate_pay(23, 4, 24),
                      (1 * PRE_BED) + (4 * POST_MID))
예제 #17
0
 def test_ends_at_midnight_with_bedtime(self):
     self.assertEqual(Babysitter.calculate_pay(17, 0, 19),
                      (2 * PRE_BED) + (5 * POST_BED))
     self.assertEqual(Babysitter.calculate_pay(17, 24, 19),
                      (2 * PRE_BED) + (5 * POST_BED))
예제 #18
0
 def test_cross_midnight_rate_with_bedtime(self):
     self.assertEqual(Babysitter.calculate_pay(17, 4, 19),
                      (2 * PRE_BED) + (5 * POST_BED) + (4 * POST_MID))
예제 #19
0
 def test_cross_midnight_rate_no_bedtime(self):
     self.assertEqual(Babysitter.calculate_pay(23, 2, False),
                      (1 * PRE_BED) + (2 * POST_MID))
예제 #20
0
 def test_bed_time_is_real(self):
     self.assertEqual(Babysitter.calculate_pay(3, 4, 25),
                      "Bed time is out of bounds")
     self.assertEqual(Babysitter.calculate_pay(3, 4, -1),
                      "Bed time is out of bounds")
예제 #21
0
 def test_equal_start_and_end_time(self):
     self.assertEqual(Babysitter.calculate_pay(18, 18, 19),
                      "End time must be later than start time")
예제 #22
0
 def test_pre_midnight_rate_no_bedtime(self):
     self.assertEqual(Babysitter.calculate_pay(17, 20, False), 3 * PRE_BED)
예제 #23
0
 def test_early_bedtime(self):
     self.assertEqual(Babysitter.calculate_pay(17, 4, 14),
                      (7 * POST_BED) + (4 * POST_MID))
예제 #24
0
import unittest
from babysitter import Babysitter
Babysitter = Babysitter()
PRE_BED = 12
POST_BED = 8
POST_MID = 16


class BabysitterTests(unittest.TestCase):
    def test_enforce_minimum_time(self):
        self.assertEqual(Babysitter.calculate_pay(12, 4),
                         "Start time is out of bounds")
        #whoops, we can start after midnight
        self.assertGreater(Babysitter.calculate_pay(3, 4), 0)
        #also should allow starting at 17 but not starting at 4
        self.assertGreater(Babysitter.calculate_pay(17, 4), 0)
        self.assertEqual(Babysitter.calculate_pay(4, 4),
                         "Start time is out of bounds")

    def test_enforce_maximum_end_time(self):
        self.assertEqual(Babysitter.calculate_pay(17, 5),
                         "End time is out of bounds")

    def test_enforce_clock_times(self):
        self.assertEqual(Babysitter.calculate_pay(25, 4),
                         "Start time is out of bounds")
        self.assertEqual(Babysitter.calculate_pay(-1, 4),
                         "Start time is out of bounds")
        self.assertEqual(Babysitter.calculate_pay(17, 25),
                         "End time is out of bounds")
        self.assertEqual(Babysitter.calculate_pay(17, -1),