bzr branch
http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
| 
1185.31.25
by John Arbash Meinel
 Renamed all of the tests from selftest/foo.py to tests/test_foo.py  | 
1  | 
from bzrlib.tests import TestCase  | 
| 
1607.1.12
by Robert Collins
 Fix common_ancestor to still calculate a common ancestor when ghosts are  | 
2  | 
from bzrlib.graph import node_distances, nodes_by_distance, Graph  | 
| 
974.1.57
by aaron.bentley at utoronto
 Started work on djkstra longest-path algorithm  | 
3  | 
|
4  | 
class TestBase(TestCase):  | 
|
| 
1607.1.12
by Robert Collins
 Fix common_ancestor to still calculate a common ancestor when ghosts are  | 
5  | 
|
| 
974.1.57
by aaron.bentley at utoronto
 Started work on djkstra longest-path algorithm  | 
6  | 
def edge_add(self, *args):  | 
7  | 
for start, end in zip(args[:-1], args[1:]):  | 
|
8  | 
if start not in self.graph:  | 
|
9  | 
self.graph[start] = {}  | 
|
10  | 
if end not in self.graph:  | 
|
11  | 
self.graph[end] = {}  | 
|
12  | 
self.graph[start][end] = 1  | 
|
13  | 
||
14  | 
def setUp(self):  | 
|
15  | 
TestCase.setUp(self)  | 
|
16  | 
self.graph = {}  | 
|
| 
974.1.58
by aaron.bentley at utoronto
 Implemented yet another farthest_node algorithm  | 
17  | 
self.edge_add('A', 'B', 'C', 'D')  | 
18  | 
self.edge_add('A', 'E', 'F', 'C')  | 
|
19  | 
self.edge_add('A', 'G', 'H', 'I', 'B')  | 
|
20  | 
self.edge_add('A', 'J', 'K', 'L', 'M', 'N')  | 
|
| 
974.1.64
by Aaron Bentley
 Handled ancestors that are missing when finding a base  | 
21  | 
self.edge_add('O', 'N')  | 
| 
974.1.87
by Aaron Bentley
 Refactored and documented graph stuff  | 
22  | 
|
23  | 
def node_descendants(self):  | 
|
| 
974.1.64
by Aaron Bentley
 Handled ancestors that are missing when finding a base  | 
24  | 
descendants = {'A':set()}  | 
| 
974.1.59
by aaron.bentley at utoronto
 Created yet another longest-patch-picker  | 
25  | 
for node in self.graph:  | 
26  | 
for ancestor in self.graph[node]:  | 
|
27  | 
if ancestor not in descendants:  | 
|
28  | 
descendants[ancestor] = set()  | 
|
29  | 
descendants[ancestor].add(node)  | 
|
| 
974.1.87
by Aaron Bentley
 Refactored and documented graph stuff  | 
30  | 
return descendants  | 
31  | 
||
32  | 
def test_distances(self):  | 
|
33  | 
descendants = self.node_descendants()  | 
|
34  | 
distances = node_distances(self.graph, descendants, 'A')  | 
|
35  | 
nodes = nodes_by_distance(distances)  | 
|
| 
974.1.59
by aaron.bentley at utoronto
 Created yet another longest-patch-picker  | 
36  | 
self.assertEqual(nodes[0], 'D')  | 
| 
1185.16.145
by Martin Pool
 Remove all assert statements from test cases.  | 
37  | 
self.assert_(nodes[1] in ('N', 'C'))  | 
38  | 
self.assert_(nodes[2] in ('N', 'C'))  | 
|
39  | 
self.assert_(nodes[3] in ('B', 'M'))  | 
|
40  | 
self.assert_(nodes[4] in ('B', 'M'))  | 
|
| 
974.1.59
by aaron.bentley at utoronto
 Created yet another longest-patch-picker  | 
41  | 
|
| 
1185.8.3
by Aaron Bentley
 Fixed bug in distance-from-root graph operation  | 
42  | 
        #Ensure we don't shortcut through B when there's only a difference of
 | 
43  | 
        # 1 in distance
 | 
|
44  | 
self.graph = {}  | 
|
45  | 
self.edge_add('A', 'B', 'C')  | 
|
46  | 
self.edge_add('A', 'D', 'E', 'C')  | 
|
47  | 
descendants = self.node_descendants()  | 
|
48  | 
distances = node_distances(self.graph, descendants, 'A')  | 
|
49  | 
self.assertEqual(distances['C'], 3)  | 
|
| 
974.1.58
by aaron.bentley at utoronto
 Implemented yet another farthest_node algorithm  | 
50  | 
|
| 
1607.1.12
by Robert Collins
 Fix common_ancestor to still calculate a common ancestor when ghosts are  | 
51  | 
|
52  | 
class TestGraph(TestCase):  | 
|
53  | 
||
54  | 
def test_get_descendants(self):  | 
|
55  | 
        # Graph objects let you get a descendants graph in 
 | 
|
56  | 
        # node: {direct-children:distance} which contains
 | 
|
57  | 
        # known children, including ghost children
 | 
|
58  | 
graph = Graph()  | 
|
59  | 
graph.add_ghost('ghost')  | 
|
60  | 
graph.add_node('rev1', ['ghost'])  | 
|
61  | 
        # check the result contains ghosts:
 | 
|
62  | 
self.assertEqual({'ghost': {'rev1': 1}, 'rev1': {}},  | 
|
63  | 
graph.get_descendants())  |