def runTest(self): k = Weave() k._parents = [frozenset(), frozenset([0]), ] k._weave = [('{', 0), 'first line', ('[', 1), 'line to be deleted', (']', 1), ('{', 1), 'replacement line', ('}', 1), 'last line', ('}', 0), ] k._sha1s = [sha_string('first lineline to be deletedlast line') , sha_string('first linereplacement linelast line')] self.assertEqual(k.get_lines(0), ['first line', 'line to be deleted', 'last line', ]) self.assertEqual(k.get_lines(1), ['first line', 'replacement line', 'last line', ])
def runTest(self): k = Weave() texts = [['header'], ['header', '', 'line from 1'], ['header', '', 'line from 2', 'more from 2'], ['header', '', 'line from 1', 'fixup line', 'line from 2'], ] k.add_lines('text0', [], texts[0]) k.add_lines('text1', ['text0'], texts[1]) k.add_lines('text2', ['text0'], texts[2]) k.add_lines('merge', ['text0', 'text1', 'text2'], texts[3]) for i, t in enumerate(texts): self.assertEqual(k.get_lines(i), t) self.assertEqual(k.annotate('merge'), [('text0', 'header'), ('text1', ''), ('text1', 'line from 1'), ('merge', 'fixup line'), ('text2', 'line from 2'), ]) self.assertEqual(list(k.get_ancestry(['merge'])), ['text0', 'text1', 'text2', 'merge']) self.log('k._weave=' + pformat(k._weave)) self.check_read_write(k)
def runTest(self): k = Weave() base_text = ['one', 'two', 'three', 'four'] k.add_lines('text0', [], base_text) texts = [['one', 'two', 'three'], ['two', 'three', 'four'], ['one', 'four'], ['one', 'two', 'three', 'four'], ] i = 1 for t in texts: ver = k.add_lines('text%d' % i, ['text0'], t) i += 1 self.log('final weave:') self.log('k._weave=' + pformat(k._weave)) for i in range(len(texts)): self.assertEqual(k.get_lines(i+1), texts[i])
def runTest(self): k = Weave() k._parents = [frozenset(), frozenset([0]), frozenset([0]), frozenset([0,1,2]), ] k._weave = [('{', 0), 'foo {', ('{', 1), ' added in version 1', ('{', 2), ' added in v2', ('}', 2), ' also from v1', ('}', 1), '}', ('}', 0)] k._sha1s = [sha_string('foo {}') , sha_string('foo { added in version 1 also from v1}') , sha_string('foo { added in v2}') , sha_string('foo { added in version 1 added in v2 also from v1}') ] self.assertEqual(k.get_lines(0), ['foo {', '}']) self.assertEqual(k.get_lines(1), ['foo {', ' added in version 1', ' also from v1', '}']) self.assertEqual(k.get_lines(2), ['foo {', ' added in v2', '}']) self.assertEqual(k.get_lines(3), ['foo {', ' added in version 1', ' added in v2', ' also from v1', '}'])
def runTest(self): k = Weave() k._parents = [frozenset(), frozenset([0])] k._weave = [('{', 0), "first line", ('}', 0), ('{', 1), "second line", ('}', 1)] k._sha1s = [sha_string('first line') , sha_string('first linesecond line')] self.assertEqual(k.get_lines(1), ["first line", "second line"]) self.assertEqual(k.get_lines(0), ["first line"])
def runTest(self): k = Weave() k.add_lines('text0', [], ["line the first", "line 2", "line 3", "fine"]) self.assertEqual(len(k.get_lines(0)), 4) k.add_lines('text1', ['text0'], ["line the first", "fine"]) self.assertEqual(k.get_lines(1), ["line the first", "fine"]) self.assertEqual(k.annotate('text1'), [('text0', "line the first"), ('text0', "fine")])
def runTest(self): k = Weave() text0 = ['cheddar', 'stilton', 'gruyere'] text1 = ['cheddar', 'blue vein', 'neufchatel', 'chevre'] k.add_lines('text0', [], text0) k.add_lines('text1', ['text0'], text1) self.log('k._weave=' + pformat(k._weave)) self.assertEqual(k.get_lines(0), text0) self.assertEqual(k.get_lines(1), text1)
def runTest(self): # FIXME make the weave, dont poke at it. k = Weave() k._names = ['0', '1', '2'] k._name_map = {'0':0, '1':1, '2':2} k._parents = [frozenset(), frozenset([0]), frozenset([0]), ] k._weave = [('{', 0), "first line", ('}', 0), ('{', 1), "second line", ('}', 1), ('{', 2), "alternative second line", ('}', 2), ] k._sha1s = [sha_string('first line') , sha_string('first linesecond line') , sha_string('first linealternative second line')] self.assertEqual(k.get_lines(0), ["first line"]) self.assertEqual(k.get_lines(1), ["first line", "second line"]) self.assertEqual(k.get_lines('2'), ["first line", "alternative second line"]) self.assertEqual(list(k.get_ancestry(['2'])), ['0', '2'])
def runTest(self): k = Weave() k.add_lines('text0', [], ['line 1']) k.add_lines('text1', ['text0'], ['line 1', 'line 2']) self.assertEqual(k.annotate('text0'), [('text0', 'line 1')]) self.assertEqual(k.get_lines(1), ['line 1', 'line 2']) self.assertEqual(k.annotate('text1'), [('text0', 'line 1'), ('text1', 'line 2')]) k.add_lines('text2', ['text0'], ['line 1', 'diverged line']) self.assertEqual(k.annotate('text2'), [('text0', 'line 1'), ('text2', 'diverged line')]) text3 = ['line 1', 'middle line', 'line 2'] k.add_lines('text3', ['text0', 'text1'], text3) # self.log("changes to text3: " + pformat(list(k._delta(set([0, 1]), text3)))) self.log("k._weave=" + pformat(k._weave)) self.assertEqual(k.annotate('text3'), [('text0', 'line 1'), ('text3', 'middle line'), ('text1', 'line 2')]) # now multiple insertions at different places k.add_lines('text4', ['text0', 'text1', 'text3'], ['line 1', 'aaa', 'middle line', 'bbb', 'line 2', 'ccc']) self.assertEqual(k.annotate('text4'), [('text0', 'line 1'), ('text4', 'aaa'), ('text3', 'middle line'), ('text4', 'bbb'), ('text1', 'line 2'), ('text4', 'ccc')])
def test_multi_line_merge(self): rawtexts = [ """A Book of Verses underneath the Bough, A Jug of Wine, a Loaf of Bread, -- and Thou Beside me singing in the Wilderness -- Oh, Wilderness were Paradise enow!""", """A Book of Verses underneath the Bough, A Jug of Wine, a Loaf of Bread, -- and Thou Beside me singing in the Wilderness -- Oh, Wilderness were Paradise now!""", """A Book of poems underneath the tree, A Jug of Wine, a Loaf of Bread, and Thou Beside me singing in the Wilderness -- Oh, Wilderness were Paradise now! -- O. Khayyam""", """A Book of Verses underneath the Bough, A Jug of Wine, a Loaf of Bread, and Thou Beside me singing in the Wilderness -- Oh, Wilderness were Paradise now!""", ] texts = [[l.strip() for l in t.split('\n')] for t in rawtexts] k = Weave() parents = set() i = 0 for t in texts: ver = k.add_lines('text%d' % i, list(parents), t) parents.add('text%d' % i) i += 1 self.log("k._weave=" + pformat(k._weave)) for i, t in enumerate(texts): self.assertEqual(k.get_lines(i), t) self.check_read_write(k)
def test_allow_reserved_true(self): w = Weave('name', allow_reserved=True) w.add_lines('name:', [], TEXT_1) self.assertEqual(TEXT_1, w.get_lines('name:'))