Mercurial > genshi > mirror
comparison examples/trac/trac/versioncontrol/tests/diff.py @ 39:93b4dcbafd7b trunk
Copy Trac to main branch.
author | cmlenz |
---|---|
date | Mon, 03 Jul 2006 18:53:27 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
38:ee669cb9cccc | 39:93b4dcbafd7b |
---|---|
1 from trac.versioncontrol import diff | |
2 | |
3 import unittest | |
4 | |
5 | |
6 class DiffTestCase(unittest.TestCase): | |
7 | |
8 def test_get_change_extent(self): | |
9 self.assertEqual((3, 0), diff._get_change_extent('xxx', 'xxx')) | |
10 self.assertEqual((0, 0), diff._get_change_extent('', 'xxx')) | |
11 self.assertEqual((0, 0), diff._get_change_extent('xxx', '')) | |
12 self.assertEqual((0, 0), diff._get_change_extent('xxx', 'yyy')) | |
13 self.assertEqual((1, -1), diff._get_change_extent('xxx', 'xyx')) | |
14 self.assertEqual((1, -1), diff._get_change_extent('xxx', 'xyyyx')) | |
15 self.assertEqual((1, 0), diff._get_change_extent('xy', 'xzz')) | |
16 self.assertEqual((1, -1), diff._get_change_extent('xyx', 'xzzx')) | |
17 self.assertEqual((1, -1), diff._get_change_extent('xzzx', 'xyx')) | |
18 | |
19 def test_insert_blank_line(self): | |
20 opcodes = diff._get_opcodes(['A', 'B'], ['A', 'B', ''], | |
21 ignore_blank_lines=0) | |
22 self.assertEqual(('equal', 0, 2, 0, 2), opcodes.next()) | |
23 self.assertEqual(('insert', 2, 2, 2, 3), opcodes.next()) | |
24 | |
25 opcodes = diff._get_opcodes(['A', 'B'], ['A', 'B', ''], | |
26 ignore_blank_lines=1) | |
27 self.assertEqual(('equal', 0, 2, 0, 3), opcodes.next()) | |
28 | |
29 opcodes = diff._get_opcodes(['A'], ['A', 'B', ''], | |
30 ignore_blank_lines=1) | |
31 self.assertEqual(('equal', 0, 1, 0, 1), opcodes.next()) | |
32 self.assertEqual(('insert', 1, 1, 1, 3), opcodes.next()) | |
33 | |
34 def test_delete_blank_line(self): | |
35 opcodes = diff._get_opcodes(['A', 'B', ''], ['A', 'B'], | |
36 ignore_blank_lines=0) | |
37 self.assertEqual(('equal', 0, 2, 0, 2), opcodes.next()) | |
38 self.assertEqual(('delete', 2, 3, 2, 2), opcodes.next()) | |
39 | |
40 opcodes = diff._get_opcodes(['A', 'B', ''], ['A', 'B'], | |
41 ignore_blank_lines=1) | |
42 self.assertEqual(('equal', 0, 3, 0, 2), opcodes.next()) | |
43 | |
44 opcodes = diff._get_opcodes(['A', 'B', ''], ['A'], | |
45 ignore_blank_lines=1) | |
46 self.assertEqual(('equal', 0, 1, 0, 1), opcodes.next()) | |
47 self.assertEqual(('delete', 1, 3, 1, 1), opcodes.next()) | |
48 | |
49 def test_space_changes(self): | |
50 opcodes = diff._get_opcodes(['A', 'B b'], ['A', 'B b'], | |
51 ignore_space_changes=0) | |
52 self.assertEqual(('equal', 0, 1, 0, 1), opcodes.next()) | |
53 self.assertEqual(('replace', 1, 2, 1, 2), opcodes.next()) | |
54 | |
55 opcodes = diff._get_opcodes(['A', 'B b'], ['A', 'B b'], | |
56 ignore_space_changes=1) | |
57 self.assertEqual(('equal', 0, 2, 0, 2), opcodes.next()) | |
58 | |
59 def test_case_changes(self): | |
60 opcodes = diff._get_opcodes(['A', 'B b'], ['A', 'B B'], | |
61 ignore_case=0) | |
62 self.assertEqual(('equal', 0, 1, 0, 1), opcodes.next()) | |
63 self.assertEqual(('replace', 1, 2, 1, 2), opcodes.next()) | |
64 | |
65 opcodes = diff._get_opcodes(['A', 'B b'], ['A', 'B B'], | |
66 ignore_case=1) | |
67 self.assertEqual(('equal', 0, 2, 0, 2), opcodes.next()) | |
68 | |
69 def test_space_and_case_changes(self): | |
70 opcodes = diff._get_opcodes(['A', 'B b'], ['A', 'B B'], | |
71 ignore_case=0, ignore_space_changes=0) | |
72 self.assertEqual(('equal', 0, 1, 0, 1), opcodes.next()) | |
73 self.assertEqual(('replace', 1, 2, 1, 2), opcodes.next()) | |
74 | |
75 opcodes = diff._get_opcodes(['A', 'B b'], ['A', 'B B'], | |
76 ignore_case=1, ignore_space_changes=1) | |
77 self.assertEqual(('equal', 0, 2, 0, 2), opcodes.next()) | |
78 | |
79 def test_grouped_opcodes_context1(self): | |
80 opcodes = diff._get_opcodes(['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'], | |
81 ['A', 'B', 'C', 'd', 'e', 'f', 'G', 'H']) | |
82 groups = diff._group_opcodes(opcodes, n=1) | |
83 group = groups.next() | |
84 self.assertEqual(('equal', 2, 3, 2, 3), group[0]) | |
85 self.assertEqual(('replace', 3, 6, 3, 6), group[1]) | |
86 self.assertEqual(('equal', 6, 7, 6, 7), group[2]) | |
87 | |
88 def test_grouped_opcodes_insert_blank_line_at_top(self): | |
89 """ | |
90 Regression test for #2090. Make sure that the equal block following an | |
91 insert at the top of a file is correct. | |
92 """ | |
93 opcodes = diff._get_opcodes(['B', 'C', 'D', 'E', 'F', 'G'], | |
94 ['A', 'B', 'C', 'D', 'E', 'F', 'G']) | |
95 groups = diff._group_opcodes(opcodes, n=3) | |
96 self.assertEqual([('insert', 0, 0, 0, 1), ('equal', 0, 3, 1, 4)], | |
97 groups.next()) | |
98 | |
99 | |
100 def suite(): | |
101 return unittest.makeSuite(DiffTestCase, 'test') | |
102 | |
103 if __name__ == '__main__': | |
104 unittest.main() |