def test_illegal_value_for_maze_neighbors(self):
        model_maze = MusicMaze(3, 2, 2)

        try:
            model_maze.get_connected_neighbors(-1, 0)
            self.fail("Should not be able to get connected components")
        except IndexError as e:
            self.assertEqual("Maze does not contain vertice", str(e))
    def test_get_neighbors_two_by_two(self):
        m = MusicMaze(3, 2, 2, 1)

        m_str = "X - O\n" \
                "|   |\n" \
                "O   O"
        self.assertEqual(m_str, str(m))

        self.assertCountEqual(["(1, 0)", "(0, 1)"],
                              m.get_connected_neighbors(0, 0))

        self.assertCountEqual(["(0, 0)"], m.get_connected_neighbors(1, 0))
        self.assertCountEqual(["(0, 0)", "(1, 1)"],
                              m.get_connected_neighbors(0, 1))
        self.assertCountEqual(["(0, 1)"], m.get_connected_neighbors(1, 1))
    def test_get_neighbors_three_by_five(self):
        m = MusicMaze(7, 5, 3, 1)

        m_str = "O - O   O - O - O\n" \
                "|       |       |\n" \
                "O - O   O - X   O\n" \
                "    |   |       |\n" \
                "O - O - O - O   O"
        self.assertEqual(m_str, str(m))

        self.assertCountEqual(["(0, 1)", "(1, 0)"],
                              m.get_connected_neighbors(0, 0))
        self.assertCountEqual(["(2, 1)"], m.get_connected_neighbors(2, 0))
        self.assertCountEqual(["(2, 0)", "(1, 1)", "(2, 2)"],
                              m.get_connected_neighbors(2, 1))
        self.assertCountEqual(["(0, 2)", "(1, 3)", "(2, 2)"],
                              m.get_connected_neighbors(1, 2))
        self.assertCountEqual(["(0, 3)", "(1, 4)"],
                              m.get_connected_neighbors(0, 4))
        self.assertCountEqual(["(1, 4)"], m.get_connected_neighbors(2, 4))