14
14
# along with this program; if not, write to the Free Software
15
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17
18
from unittest import TestCase
24
24
from ..sixish import int2byte
103
103
def test_to_patch(self):
104
104
self.assertEqual([b'i 1\n', b'a\n', b'\n', b'c 0 1 2 3\n'],
105
list(multiparent.MultiParent([multiparent.NewText([b'a\n']),
106
multiparent.ParentText(0, 1, 2, 3)]).to_patch()))
105
list(multiparent.MultiParent([multiparent.NewText([b'a\n']),
106
multiparent.ParentText(0, 1, 2, 3)]).to_patch()))
108
108
def test_from_patch(self):
109
109
self.assertEqual(multiparent.MultiParent(
110
110
[multiparent.NewText([b'a\n']),
111
111
multiparent.ParentText(0, 1, 2, 3)]),
112
multiparent.MultiParent.from_patch(b'i 1\na\n\nc 0 1 2 3'))
112
multiparent.MultiParent.from_patch(b'i 1\na\n\nc 0 1 2 3'))
113
113
self.assertEqual(multiparent.MultiParent(
114
114
[multiparent.NewText([b'a']),
115
115
multiparent.ParentText(0, 1, 2, 3)]),
116
multiparent.MultiParent.from_patch(b'i 1\na\nc 0 1 2 3\n'))
116
multiparent.MultiParent.from_patch(b'i 1\na\nc 0 1 2 3\n'))
118
118
def test_binary_content(self):
147
147
def test_eq(self):
148
148
self.assertEqual(multiparent.NewText([]), multiparent.NewText([]))
149
self.assertFalse(multiparent.NewText([b'a']) ==
150
multiparent.NewText([b'b']))
149
self.assertFalse(multiparent.NewText([b'a'])
150
== multiparent.NewText([b'b']))
151
151
self.assertFalse(multiparent.NewText([b'a']) == Mock(lines=[b'a']))
153
153
def test_to_patch(self):
164
164
def test_eq(self):
165
165
self.assertEqual(multiparent.ParentText(1, 2, 3, 4),
166
166
multiparent.ParentText(1, 2, 3, 4))
167
self.assertFalse(multiparent.ParentText(1, 2, 3, 4) ==
168
multiparent.ParentText(2, 2, 3, 4))
169
self.assertFalse(multiparent.ParentText(1, 2, 3, 4) ==
170
Mock(parent=1, parent_pos=2, child_pos=3,
167
self.assertFalse(multiparent.ParentText(1, 2, 3, 4)
168
== multiparent.ParentText(2, 2, 3, 4))
169
self.assertFalse(multiparent.ParentText(1, 2, 3, 4)
170
== Mock(parent=1, parent_pos=2, child_pos=3,
173
173
def test_to_patch(self):
174
174
self.assertEqual([b'c 0 1 2 3\n'],
185
185
def add_version(self, vf, text, version_id, parent_ids):
187
[(int2byte(t)+b'\n') for t in bytearray(text)],
188
version_id, parent_ids)
187
[(int2byte(t) + b'\n') for t in bytearray(text)],
188
version_id, parent_ids)
190
190
def make_vf(self):
191
191
vf = multiparent.MultiMemoryVersionedFile()
204
204
vf = self.make_vf()
206
206
self.assertEqual(REV_A, vf.get_line_list([b'rev-a'])[0])
207
self.assertEqual([REV_B, REV_C], vf.get_line_list([b'rev-b', b'rev-c']))
208
[REV_B, REV_C], vf.get_line_list([b'rev-b', b'rev-c']))
209
210
def test_reconstruct_empty(self):
210
211
vf = multiparent.MultiMemoryVersionedFile()
230
231
def test_reconstructor(self):
231
232
vf = self.make_vf()
232
self.assertEqual([b'a\n', b'b\n'], self.reconstruct(vf, b'rev-a', 0, 2))
233
self.assertEqual([b'c\n', b'd\n'], self.reconstruct(vf, b'rev-a', 2, 4))
234
self.assertEqual([b'e\n', b'f\n'], self.reconstruct(vf, b'rev-c', 2, 4))
235
self.assertEqual([b'a\n', b'b\n', b'e\n', b'f\n'],
236
self.reconstruct(vf, b'rev-c', 0, 4))
237
self.assertEqual([b'a\n', b'b\n', b'e\n', b'f\n'],
238
self.reconstruct_version(vf, b'rev-c'))
233
self.assertEqual([b'a\n', b'b\n'],
234
self.reconstruct(vf, b'rev-a', 0, 2))
235
self.assertEqual([b'c\n', b'd\n'],
236
self.reconstruct(vf, b'rev-a', 2, 4))
237
self.assertEqual([b'e\n', b'f\n'],
238
self.reconstruct(vf, b'rev-c', 2, 4))
239
self.assertEqual([b'a\n', b'b\n', b'e\n', b'f\n'],
240
self.reconstruct(vf, b'rev-c', 0, 4))
241
self.assertEqual([b'a\n', b'b\n', b'e\n', b'f\n'],
242
self.reconstruct_version(vf, b'rev-c'))
240
244
def test_reordered(self):
241
245
"""Check for a corner case that requires re-starting the cursor"""
263
267
newvf = multiparent.MultiVersionedFile('foop')
265
self.assertEqual(b'a\nb\nc\nd', b''.join(newvf.get_line_list([b'a'])[0]))
266
self.assertEqual(b'a\ne\nd\n', b''.join(newvf.get_line_list([b'b'])[0]))
269
self.assertEqual(b'a\nb\nc\nd', b''.join(
270
newvf.get_line_list([b'a'])[0]))
271
self.assertEqual(b'a\ne\nd\n', b''.join(
272
newvf.get_line_list([b'b'])[0]))
268
274
def test_filenames(self):
269
275
vf = multiparent.MultiVersionedFile('foop')