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