class Test(unittest.TestCase):

    def setUp(self):
        config = Configuration().create(["0 0 0 0 0 0",
                                         "1 1 0 0 0 0",
                                         "1 0 0 0 0 0"])
        self.validity = MoveValidity(config)

    def test_is_invalid_position_if_at_least_one_spot_occupied_by_other_piece(self):
        self.assertFalse(self.validity.is_valid_move([Point(2, 2)], 
                                                  [Point(1, 1)]))
        self.assertFalse(self.validity.is_valid_move([Point(2, 2),
                                                   Point(3, 3)], 
                                                  [Point(0, 0), 
                                                   Point(1, 1)]))
        
    def test_is_valid_position_if_no_spots_occupied(self):
        self.assertTrue(self.validity.is_valid_move([Point(1, 1)], 
                                                 [Point(0, 0)]))
        self.assertTrue(self.validity.is_valid_move([Point(2, 2),
                                                  Point(2, 3)], 
                                                 [Point(2, 3), 
                                                  Point(2, 4)]))
        
    def test_is_valid_position_if_all_spots_occupied_by_self(self):
        self.assertTrue(self.validity.is_valid_move([Point(1, 1)], [Point(1, 1)]))
        
        
    def test_is_invalid_position_if_even_one_spot_occupied_by_other(self):
        self.assertFalse(self.validity.is_valid_move([Point(1, 1),
                                                   Point(2, 2),
                                                   Point(2, 1)], 
                                                  [Point(1, 0), 
                                                   Point(2, 0),
                                                   Point(2, 1)]))
        
    def test_is_invalid_position_if_beyond_edge_of_board(self):
        self.assertFalse(self.validity.is_valid_move([Point(1, 0),
                                                   Point(2, 0)], 
                                                  [Point(1, -1), 
                                                   Point(2, -1)]))
 def setUp(self):
     config = Configuration().create(["0 0 0 0 0 0",
                                      "1 1 0 0 0 0",
                                      "1 0 0 0 0 0"])
     self.validity = MoveValidity(config)