def test_insert_almost_end(self): runs = runlist.RunList(5, 'a') runs.set_run(0, 3, 'b') runs.set_run(4, 5, 'c') self.check_value(runs, 'bbbac') runs.insert(4, 3) self.check_value(runs, 'bbbaaaac')
def _set_style(self, start, end, attributes): for attribute, value in attributes.items(): try: runs = self._style_runs[attribute] except KeyError: runs = self._style_runs[attribute] = runlist.RunList(0, None) runs.insert(0, len(self._text)) runs.set_run(start, end, value)
def _get_lines(self): len_text = len(self._document.text) glyphs = self._get_glyphs() owner_runs = runlist.RunList(len_text, None) self._get_owner_runs(owner_runs, glyphs, 0, len_text) lines = [ line for line in self._flow_glyphs(glyphs, owner_runs, 0, len_text) ] self.content_width = 0 self._flow_lines(lines, 0, len(lines)) return lines
def test_zero(self): runs = runlist.RunList(0, 'x') it = iter(runs) start, end, s = next(it) self.assertTrue(start == 0) self.assertTrue(end == 0) self.assertTrue(s == 'x') self.assertRaises(StopIteration, it.__next__) self.check_optimal(runs)
def test_insert_beginning_2(self): runs = runlist.RunList(5, 'a') self.check_value(runs, 'aaaaa') runs.insert(0, 1) runs.set_run(0, 1, 'b') self.check_value(runs, 'baaaaa') runs.insert(0, 1) runs.set_run(0, 1, 'c') self.check_value(runs, 'cbaaaaa') runs.insert(0, 1) runs.set_run(0, 1, 'c') self.check_value(runs, 'ccbaaaaa')
def test_initial(self): runs = runlist.RunList(10, 'x') it = iter(runs) start, end, s = next(it) self.assertTrue(start == 0) self.assertTrue(end == 10) self.assertTrue(s == 'x') self.assertRaises(StopIteration, it.__next__) self.check_value(runs, 'x' * 10)
def create_runs1(self): runs = runlist.RunList(10, 'a') runs.set_run(1, 10, 'b') runs.set_run(2, 10, 'c') runs.set_run(3, 10, 'd') runs.set_run(4, 10, 'e') runs.set_run(5, 10, 'f') runs.set_run(6, 10, 'g') runs.set_run(7, 10, 'h') runs.set_run(8, 10, 'i') runs.set_run(9, 10, 'j') self.check_value(runs, 'abcdefghij') return runs
def _insert_text(self, start, text, attributes): super(FormattedDocument, self)._insert_text(start, text, attributes) len_text = len(text) for runs in self._style_runs.values(): runs.insert(start, len_text) if attributes is not None: for attribute, value in attributes.items(): try: runs = self._style_runs[attribute] except KeyError: runs = self._style_runs[attribute] = runlist.RunList(0, None) runs.insert(0, len(self.text)) runs.set_run(start, start + len_text, value)
def test_set_overlapped(self): runs = runlist.RunList(10, 'a') runs.set_run(0, 5, 'b') self.check_value(runs, 'bbbbbaaaaa') runs.set_run(5, 10, 'c') self.check_value(runs, 'bbbbbccccc') runs.set_run(3, 7, 'd') self.check_value(runs, 'bbbddddccc') runs.set_run(4, 6, 'e') self.check_value(runs, 'bbbdeedccc') runs.set_run(5, 9, 'f') self.check_value(runs, 'bbbdeffffc') runs.set_run(2, 3, 'g') self.check_value(runs, 'bbgdeffffc') runs.set_run(1, 3, 'h') self.check_value(runs, 'bhhdeffffc') runs.set_run(1, 9, 'i') self.check_value(runs, 'biiiiiiiic') runs.set_run(0, 10, 'j') self.check_value(runs, 'jjjjjjjjjj')
def test_delete_1_all(self): runs = runlist.RunList(5, 'a') self.check_value(runs, 'aaaaa') runs.delete(0, 5) self.check_value(runs, '') self.check_empty(runs, 'a')
def test_set1_all(self): runs = runlist.RunList(10, 'a') runs.set_run(0, 10, 'b') self.check_value(runs, 'bbbbbbbbbb')
def test_set1_1(self): runs = runlist.RunList(10, 'a') runs.set_run(1, 2, 'b') self.check_value(runs, 'abaaaaaaaa')
def test_set1_start(self): runs = runlist.RunList(10, 'a') runs.set_run(0, 5, 'b') self.check_value(runs, 'bbbbbaaaaa')
def test_set1_end(self): runs = runlist.RunList(10, 'a') runs.set_run(5, 10, 'b') self.check_value(runs, 'aaaaabbbbb')
def test_insert_empty(self): runs = runlist.RunList(0, 'a') runs.insert(0, 10) self.check_value(runs, 'aaaaaaaaaa')
def test_set1(self): runs = runlist.RunList(10, 'a') runs.set_run(2, 8, 'b') self.check_value(runs, 'aabbbbbbaa')
def create_runs2(self): runs = runlist.RunList(10, 'a') runs.set_run(4, 7, 'b') runs.set_run(7, 10, 'c') self.check_value(runs, 'aaaabbbccc') return runs
def test_insert_1(self): runs = runlist.RunList(5, 'a') runs.set_run(1, 4, 'b') self.check_value(runs, 'abbba') runs.insert(1, 3) self.check_value(runs, 'aaaabbba')
def test_insert_2(self): runs = runlist.RunList(5, 'a') runs.set_run(1, 2, 'b') self.check_value(runs, 'abaaa') runs.insert(2, 3) self.check_value(runs, 'abbbbaaa')
def test_insert_end(self): runs = runlist.RunList(5, 'a') runs.set_run(4, 5, 'b') self.check_value(runs, 'aaaab') runs.insert(5, 3) self.check_value(runs, 'aaaabbbb')
def test_delete_1_end(self): runs = runlist.RunList(5, 'a') self.check_value(runs, 'aaaaa') runs.delete(2, 5) self.check_value(runs, 'aa')
def test_delete_1_middle(self): runs = runlist.RunList(5, 'a') self.check_value(runs, 'aaaaa') runs.delete(1, 4) self.check_value(runs, 'aa')
def test_delete_1_beginning(self): runs = runlist.RunList(5, 'a') self.check_value(runs, 'aaaaa') runs.delete(0, 3) self.check_value(runs, 'aa')