Esempio n. 1
0
class TestGraphs(unittest.TestCase):
    def setUp(self):
        n6 = Node(6)
        n5 = Node(5, [n6])
        n4 = Node(4, [n6])
        n3 = Node(3, [n4, n5])
        n2 = Node(2, [n4])
        n1 = Node(1, [n2, n3])
        self.g = Graph([n1, n2, n3, n4, n5, n6])

    def test_it_can_topo_sort_a_graph(self):
        n5 = Node(105)
        n3 = Node(103, [n5])
        n4 = Node(104)
        n2 = Node(102, [n3, n4, n5])
        n1 = Node(101, [n2, n4])
        g = Graph([n1, n2, n3, n4, n5])
        topoSorted = g.topo_sort()
        r = g.min_path(topoSorted)
        self.assertEqual(r, [1, 2, 3, 4, 5])

    def test_it_can_calculate_diameter(self):
        i = Node('i')
        h = Node('h', [i])
        g = Node('g')
        f = Node('f', [h, g])
        e = Node('e', [i])
        d = Node('d', [e])
        c = Node('c')
        b = Node('b', [c, f])
        a = Node('a', [b, d])
        g = Graph([a, b, c, d, e, f, g, h, i])
        r = g.diameter()
        print('dia', r)

    def test_it_can_print_level(self):
        return
        self.g.printLevels()

    def test_it_can_find_a_node(self):
        self.assertEqual(True, self.g.dfs(foo(5)))
        self.g.reset()
        self.assertEqual(True, self.g.dfs(foo(6)))

    def test_it_can_find_a_node_with_bfs(self):
        self.assertEqual(True, self.g.bfs(foo(5)))
        self.g.reset()
        self.assertEqual(True, self.g.bfs(foo(6)))

    def test_it_can_clone_a_graph(self):
        return
        nodes = self.g.getNodes()
        clone = self.g.clone()
        return
        for n in clone.getNeighbors():
            print(n)
        return
        self.assertEqual(True, clone.dfs(foo(5)))
        self.g.reset()
        self.assertEqual(True, self.g.dfs(foo(6)))