bzr branch
http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
| 
2052.3.2
by John Arbash Meinel
 Change Copyright .. by Canonical to Copyright ... Canonical  | 
1  | 
# Copyright (C) 2005, 2006 Canonical Ltd
 | 
| 
2052.3.1
by John Arbash Meinel
 Add tests to cleanup the copyright of all source files  | 
2  | 
#
 | 
3  | 
# This program is free software; you can redistribute it and/or modify
 | 
|
4  | 
# it under the terms of the GNU General Public License as published by
 | 
|
5  | 
# the Free Software Foundation; either version 2 of the License, or
 | 
|
6  | 
# (at your option) any later version.
 | 
|
7  | 
#
 | 
|
8  | 
# This program is distributed in the hope that it will be useful,
 | 
|
9  | 
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
|
10  | 
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
|
11  | 
# GNU General Public License for more details.
 | 
|
12  | 
#
 | 
|
13  | 
# You should have received a copy of the GNU General Public License
 | 
|
14  | 
# along with this program; if not, write to the Free Software
 | 
|
15  | 
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 | 
|
16  | 
||
| 
1185.31.25
by John Arbash Meinel
 Renamed all of the tests from selftest/foo.py to tests/test_foo.py  | 
17  | 
from bzrlib.tests import TestCase  | 
| 
2490.2.21
by Aaron Bentley
 Rename graph to deprecated_graph  | 
18  | 
from bzrlib.deprecated_graph import node_distances, nodes_by_distance, Graph  | 
| 
974.1.57
by aaron.bentley at utoronto
 Started work on djkstra longest-path algorithm  | 
19  | 
|
| 
2052.3.1
by John Arbash Meinel
 Add tests to cleanup the copyright of all source files  | 
20  | 
|
| 
974.1.57
by aaron.bentley at utoronto
 Started work on djkstra longest-path algorithm  | 
21  | 
class TestBase(TestCase):  | 
| 
1607.1.12
by Robert Collins
 Fix common_ancestor to still calculate a common ancestor when ghosts are  | 
22  | 
|
| 
974.1.57
by aaron.bentley at utoronto
 Started work on djkstra longest-path algorithm  | 
23  | 
def edge_add(self, *args):  | 
24  | 
for start, end in zip(args[:-1], args[1:]):  | 
|
25  | 
if start not in self.graph:  | 
|
26  | 
self.graph[start] = {}  | 
|
27  | 
if end not in self.graph:  | 
|
28  | 
self.graph[end] = {}  | 
|
29  | 
self.graph[start][end] = 1  | 
|
30  | 
||
31  | 
def setUp(self):  | 
|
32  | 
TestCase.setUp(self)  | 
|
33  | 
self.graph = {}  | 
|
| 
974.1.58
by aaron.bentley at utoronto
 Implemented yet another farthest_node algorithm  | 
34  | 
self.edge_add('A', 'B', 'C', 'D')  | 
35  | 
self.edge_add('A', 'E', 'F', 'C')  | 
|
36  | 
self.edge_add('A', 'G', 'H', 'I', 'B')  | 
|
37  | 
self.edge_add('A', 'J', 'K', 'L', 'M', 'N')  | 
|
| 
974.1.64
by Aaron Bentley
 Handled ancestors that are missing when finding a base  | 
38  | 
self.edge_add('O', 'N')  | 
| 
974.1.87
by Aaron Bentley
 Refactored and documented graph stuff  | 
39  | 
|
40  | 
def node_descendants(self):  | 
|
| 
974.1.64
by Aaron Bentley
 Handled ancestors that are missing when finding a base  | 
41  | 
descendants = {'A':set()}  | 
| 
974.1.59
by aaron.bentley at utoronto
 Created yet another longest-patch-picker  | 
42  | 
for node in self.graph:  | 
43  | 
for ancestor in self.graph[node]:  | 
|
44  | 
if ancestor not in descendants:  | 
|
45  | 
descendants[ancestor] = set()  | 
|
46  | 
descendants[ancestor].add(node)  | 
|
| 
974.1.87
by Aaron Bentley
 Refactored and documented graph stuff  | 
47  | 
return descendants  | 
48  | 
||
49  | 
def test_distances(self):  | 
|
50  | 
descendants = self.node_descendants()  | 
|
51  | 
distances = node_distances(self.graph, descendants, 'A')  | 
|
52  | 
nodes = nodes_by_distance(distances)  | 
|
| 
974.1.59
by aaron.bentley at utoronto
 Created yet another longest-patch-picker  | 
53  | 
self.assertEqual(nodes[0], 'D')  | 
| 
1185.16.145
by Martin Pool
 Remove all assert statements from test cases.  | 
54  | 
self.assert_(nodes[1] in ('N', 'C'))  | 
55  | 
self.assert_(nodes[2] in ('N', 'C'))  | 
|
56  | 
self.assert_(nodes[3] in ('B', 'M'))  | 
|
57  | 
self.assert_(nodes[4] in ('B', 'M'))  | 
|
| 
974.1.59
by aaron.bentley at utoronto
 Created yet another longest-patch-picker  | 
58  | 
|
| 
1185.8.3
by Aaron Bentley
 Fixed bug in distance-from-root graph operation  | 
59  | 
        #Ensure we don't shortcut through B when there's only a difference of
 | 
60  | 
        # 1 in distance
 | 
|
61  | 
self.graph = {}  | 
|
62  | 
self.edge_add('A', 'B', 'C')  | 
|
63  | 
self.edge_add('A', 'D', 'E', 'C')  | 
|
64  | 
descendants = self.node_descendants()  | 
|
65  | 
distances = node_distances(self.graph, descendants, 'A')  | 
|
66  | 
self.assertEqual(distances['C'], 3)  | 
|
| 
974.1.58
by aaron.bentley at utoronto
 Implemented yet another farthest_node algorithm  | 
67  | 
|
| 
1607.1.12
by Robert Collins
 Fix common_ancestor to still calculate a common ancestor when ghosts are  | 
68  | 
|
69  | 
class TestGraph(TestCase):  | 
|
70  | 
||
71  | 
def test_get_descendants(self):  | 
|
72  | 
        # Graph objects let you get a descendants graph in 
 | 
|
73  | 
        # node: {direct-children:distance} which contains
 | 
|
74  | 
        # known children, including ghost children
 | 
|
75  | 
graph = Graph()  | 
|
76  | 
graph.add_ghost('ghost')  | 
|
77  | 
graph.add_node('rev1', ['ghost'])  | 
|
78  | 
        # check the result contains ghosts:
 | 
|
79  | 
self.assertEqual({'ghost': {'rev1': 1}, 'rev1': {}},  | 
|
80  | 
graph.get_descendants())  |