/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/selftest/testgraph.py

  • Committer: Robert Collins
  • Date: 2005-10-16 00:22:17 UTC
  • mto: This revision was merged to the branch mainline in revision 1457.
  • Revision ID: robertc@lifelesslap.robertcollins.net-20051016002217-aa38f9c1eb13ee48
Plugins are now loaded under bzrlib.plugins, not bzrlib.plugin.

Plugins are also made available for other plugins to use by making them 
accessible via import bzrlib.plugins.NAME. You should not import other
plugins during the __init__ of your plugin though, as no ordering is
guaranteed, and the plugins directory is not on the python path.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
from bzrlib.selftest import TestCase
 
2
from bzrlib.graph import node_distances, nodes_by_distance
 
3
 
 
4
class TestBase(TestCase):
 
5
    def edge_add(self, *args):
 
6
        for start, end in zip(args[:-1], args[1:]):
 
7
            if start not in self.graph:
 
8
                self.graph[start] = {}
 
9
            if end not in self.graph:
 
10
                self.graph[end] = {}
 
11
            self.graph[start][end] = 1
 
12
 
 
13
    def setUp(self):
 
14
        TestCase.setUp(self)
 
15
        self.graph = {}
 
16
        self.edge_add('A', 'B', 'C', 'D')
 
17
        self.edge_add('A', 'E', 'F', 'C')
 
18
        self.edge_add('A', 'G', 'H', 'I', 'B')
 
19
        self.edge_add('A', 'J', 'K', 'L', 'M', 'N')
 
20
        self.edge_add('O', 'N')
 
21
 
 
22
    def node_descendants(self):
 
23
        descendants = {'A':set()}
 
24
        for node in self.graph:
 
25
            for ancestor in self.graph[node]:
 
26
                if ancestor not in descendants:
 
27
                    descendants[ancestor] = set()
 
28
                descendants[ancestor].add(node)
 
29
        return descendants
 
30
    
 
31
    def test_distances(self):
 
32
        descendants = self.node_descendants()
 
33
        distances = node_distances(self.graph, descendants, 'A')
 
34
        nodes = nodes_by_distance(distances)
 
35
        self.assertEqual(nodes[0], 'D')
 
36
        assert nodes[1] in ('N', 'C')
 
37
        assert nodes[2] in ('N', 'C')
 
38
        assert nodes[3] in ('B', 'M')
 
39
        assert nodes[4] in ('B', 'M')
 
40
 
 
41
        #Ensure we don't shortcut through B when there's only a difference of
 
42
        # 1 in distance
 
43
        self.graph = {}
 
44
        self.edge_add('A', 'B', 'C')
 
45
        self.edge_add('A', 'D', 'E', 'C')
 
46
        descendants = self.node_descendants()
 
47
        distances = node_distances(self.graph, descendants, 'A')
 
48
        self.assertEqual(distances['C'], 3)
 
49