예제 #1
0
def test_dispatch():
    """Test moving a car that doesn't have enough fuel."""
    manager = SuperDuperManager()
    manager.add_car('car1', 30)
    manager.add_car('car2', 30)
    manager.add_car('car3', 20)
    manager.move_car('car2', 6, 2)
    manager.move_car('car1', 3, 5)
    manager.dispatch(6, 6)
    assert manager.get_car_position('car1') == (6, 6)
예제 #2
0
class TestCar(unittest.TestCase):
    """Sample unit tests for Exercise 1."""
    def setUp(self):
        """This is a special method that's called at the beginning of each test.

        It is used to create a SuperDuperManager object with three cars;
        these will be the cars used in subsequent tests.
        """
        self.manager = SuperDuperManager()
        self.manager.add_car('car1', 2)
        self.manager.add_car('car2', 10)
        self.manager.add_car('car3', 20)

    def test_move_simple(self):
        self.manager.move_car('car2', 2, 3)
        pos = self.manager.get_car_position('car2')
        self.assertEqual(pos, (2, 3))
        self.assertEqual(self.manager.get_car_fuel('car2'), 5)

    def test_move_not_enough(self):
        self.manager.move_car('car1', 3, 5)
        pos = self.manager.get_car_position('car1')
        self.assertEqual(pos, (0, 0))
        self.assertEqual(self.manager.get_car_fuel('car1'), 2)

    def test_move_negative(self):
        self.manager.move_car('car3', -2, -3)
        pos = self.manager.get_car_position('car3')
        self.assertEqual(pos, (-2, -3))
        self.assertEqual(self.manager.get_car_fuel('car3'), 15)

    def test_dispatch_no_ok_car(self):
        self.manager.dispatch(10, 20)
        self.assertEqual(self.manager.get_car_position('car1'), (0, 0))
        self.assertEqual(self.manager.get_car_position('car2'), (0, 0))
        self.assertEqual(self.manager.get_car_position('car3'), (0, 0))
        self.assertEqual(self.manager.get_car_fuel('car1'), 2)
        self.assertEqual(self.manager.get_car_fuel('car2'), 10)
        self.assertEqual(self.manager.get_car_fuel('car3'), 20)

    def test_dispatch_has_ok_car(self):
        self.manager.dispatch(10, 10)
        self.assertEqual(self.manager.get_car_position('car1'), (0, 0))
        self.assertEqual(self.manager.get_car_position('car2'), (0, 0))
        self.assertEqual(self.manager.get_car_position('car3'), (10, 10))
        self.assertEqual(self.manager.get_car_fuel('car1'), 2)
        self.assertEqual(self.manager.get_car_fuel('car2'), 10)
        self.assertEqual(self.manager.get_car_fuel('car3'), 0)

    def test_dispatch_has_conflict_car(self):
        self.manager.dispatch(1, 1)
        self.assertEqual(self.manager.get_car_position('car1'), (1, 1))
        self.assertEqual(self.manager.get_car_position('car2'), (0, 0))
        self.assertEqual(self.manager.get_car_position('car3'), (0, 0))
        self.assertEqual(self.manager.get_car_fuel('car1'), 0)
        self.assertEqual(self.manager.get_car_fuel('car2'), 10)
        self.assertEqual(self.manager.get_car_fuel('car3'), 20)

    def test_dispatch_has_closet_car(self):
        self.manager.move_car('car2', 3, 3)
        self.manager.move_car('car3', 6, 6)
        self.manager.dispatch(4, 4)
        self.assertEqual(self.manager.get_car_position('car1'), (0, 0))
        self.assertEqual(self.manager.get_car_position('car2'), (4, 4))
        self.assertEqual(self.manager.get_car_position('car3'), (6, 6))
        self.assertEqual(self.manager.get_car_fuel('car1'), 2)
        self.assertEqual(self.manager.get_car_fuel('car2'), 2)
        self.assertEqual(self.manager.get_car_fuel('car3'), 8)