Example #1
0
    def test_cyclic_different_start_number(self):

        edges = [(1, 2), (2, 1)]

        graph = initialise_graph(edges)

        self.assertEqual(is_cyclic(graph), True)
Example #2
0
    def test_cyclic_two_graphs(self):

        edges = [(0, 1), (2, 3), (3, 2)]

        graph = initialise_graph(edges)

        self.assertEqual(is_cyclic(graph), True)
Example #3
0
    def test_cyclic_second(self):

        edges = [(0, 1), (0, 2), (2, 0)]

        graph = initialise_graph(edges)

        self.assertEqual(is_cyclic(graph), True)
Example #4
0
    def test_not_cyclic_two_routes(self):

        edges = [(0, 1), (0, 2), (1, 2)]

        graph = initialise_graph(edges)

        self.assertEqual(is_cyclic(graph), False)
Example #5
0
    def test_not_cyclic(self):

        edges = [(0, 1)]

        graph = initialise_graph(edges)

        self.assertEqual(is_cyclic(graph), False)
Example #6
0
    def test_cyclic_simple(self):

        edges = [(0, 1), (1, 0)]

        graph = initialise_graph(edges)

        self.assertEqual(is_cyclic(graph), True)
Example #7
0
    def test_failing_example(self):

        edges = [(45, 16),  (54, 29),  (12, 41),  (36, 13),  (9, 31),  (49, 52),  (46, 53),  (22, 4),  (8, 11),  (35, 19),  (11, 54),  (22, 47),  (30, 37),  (42, 53),  (44, 47),  (54, 28),  (4, 47),  (59, 19),  (29, 35),  (32, 39),  (5, 23),  (32, 51),  (17, 55),  (57, 25),  (7, 31),  (46, 18),  (26, 8),  (6, 57),  (45, 50),  (51, 30),  (37, 47),  (60, 43),  (35, 59),  (1, 4)]

        graph = initialise_graph(edges)

        self.assertEqual(is_cyclic(graph), False)
Example #8
0
    def test_loop_non_zero_index(self):

        edges = [(1, 2), (2, 1)]

        graph = initialise_graph(edges)

        self.assertEqual(is_cyclic(graph), True)
Example #9
0
    def test_split(self):

        edges = [(0, 1), (0, 2), (1, 3), (2, 3)]

        graph = initialise_graph(edges)

        self.assertEqual(is_cyclic(graph), False)
Example #10
0
    def test_loop_rh_branch(self):

        edges = [(0, 1), (0, 2), (2, 2)]

        graph = initialise_graph(edges)

        self.assertEqual(is_cyclic(graph), True)
Example #11
0
    def test_self_loop(self):

        edges = [(0, 1), (0, 0)]

        graph = initialise_graph(edges)

        self.assertEqual(is_cyclic(graph), True)
Example #12
0
    def test_cycle(self):

        num_nodes = 3
        edges = [(0, 1), (1, 2), (2, 0)]

        graph = initialise_graph(edges)

        self.assertEqual(detect_cycle(graph, num_nodes), True)
Example #13
0
    def test_example_1(self):

        N = 5
        edges = [(0, 1), (0, 2), (0, 3), (2, 4)]

        graph = initialise_graph(edges)

        self.assertEqual(dfs(graph, N), [0, 1, 2, 4, 3])
Example #14
0
    def test_raises_on_limit(self):

        edges = [(i, i+1) for i in range(MAX_NUM_EDGES + 1)]

        graph = initialise_graph(edges)

        with self.assertRaises(ValueError):
            is_cyclic(graph)
Example #15
0
    def test_example_2(self):

        N = 4
        edges = [(0, 1), (1, 2), (0, 3)]

        graph = initialise_graph(edges)

        self.assertEqual(dfs(graph, N), [0, 1, 2, 3])
Example #16
0
    def test_example_1(self):

        num_nodes = 5
        edges = [(0, 1), (0, 2), (0, 3), (2, 4)]

        graph = initialise_graph(edges)

        self.assertEqual(bfs(graph, num_nodes), [0, 1, 2, 3, 4])
Example #17
0
    def test_more_nodes_than_edges(self):

        num_nodes = 6
        edges = [(0, 1)]

        graph = initialise_graph(edges)

        self.assertEqual(bfs(graph, num_nodes), [0, 1])
Example #18
0
    def test_example_2(self):

        num_nodes = 3
        edges = [(0, 1), (0, 2)]

        graph = initialise_graph(edges)

        self.assertEqual(bfs(graph, num_nodes), [0, 1, 2])
Example #19
0
    def test_circular_above_trunk(self):

        N = 2

        edges = [(0, 1), (1, 2), (2, 1)]

        graph = initialise_graph(edges)

        self.assertEqual(dfs(graph, N), [0, 1, 2])
Example #20
0
    def test_circular(self):

        N = 2

        edges = [(0, 1), (1, 0)]

        graph = initialise_graph(edges)

        self.assertEqual(dfs(graph, N), [0, 1])
Example #21
0
    def test_raises(self):

        N = 201
        edges = [(i, i+1) for i in range(201)]

        graph = initialise_graph(edges)

        with self.assertRaises(ValueError):
            dfs(graph, N)
Example #22
0
    def test_circular_not_root(self):
        # it's a graph not a tree!

        num_nodes = 2
        edges = [(0, 1), (1, 2), (2, 1)]

        graph = initialise_graph(edges)

        self.assertEqual(bfs(graph, num_nodes), [0, 1, 2])
Example #23
0
    def test_double_link(self):
        # it's a graph not a tree!

        num_nodes = 2
        edges = [(0, 1), (0, 2), (1, 3), (2, 3)]

        graph = initialise_graph(edges)

        self.assertEqual(bfs(graph, num_nodes), [0, 1, 2, 3])