def test_delta_as_data(self): delta = Delta(ops=[ Insert('abc', None), Retain(1, {'color': 'red'}), Delete(4), Insert('def', {'bold': True}), Retain(6, None) ]) expected = [{ 'insert': 'abc' }, { 'retain': 1, 'attributes': { 'color': 'red' } }, { 'delete': 4 }, { 'insert': 'def', 'attributes': { 'bold': True } }, { 'retain': 6 }] self.assertListEqual(delta.as_data(), expected)
def test_insert_in_middle_of_text(self): a = Delta().insert('Hello') b = Delta().retain(3).insert('X') assert a.ops == [Insert('Hello', None)] assert b.ops == [Retain(3, None), Insert('X', None)] expected = Delta().insert('HelXlo') compose = a.compose(b) assert compose.ops == expected.ops, f'{expected} not {compose}'
def test_expected(self): delta = (Delta().insert('Hello\n\n').insert('World', { 'bold': True }).insert({ 'image': 'octocat.png' }).insert('\n', { 'align': 'right' }).insert('!')) predicate = mock.Mock() delta.each_line(predicate) assert predicate.call_count == 4 call_args = predicate.call_args_list assert call_args[0] == (Delta().insert('Hello'), {}, 0)
def test_empty_delta(self): delta = Delta().insert('Test') concat = Delta() expected = Delta().insert('Test') assert delta.concat(concat).ops == expected.ops assert concat.concat(delta).ops == expected.ops
def test_delta_as_string(self): delta = Delta(ops=[ Insert('abc', None), Retain(1, {'color': 'red'}), Delete(3), ]) assert str(delta) == ('[{"insert": "abc"}, ' '{"retain": 1, "attributes": {"color": "red"}}, ' '{"delete": 3}]')
def test_unmergeable(self): delta = Delta().insert('Test') original = Delta().insert('Test') concat = Delta().insert('!', {'bold': True}) expected = Delta().insert('Test').insert('!', {'bold': True}) assert delta.concat(concat).ops == expected.ops assert delta.ops == original.ops
def test_mergeable(self): delta = Delta().insert('Test', {'bold': True}) original = Delta().insert('Test', {'bold': True}) concat = Delta().insert('!', {'bold': True}).insert('\n') expected = Delta().insert('Test!', {'bold': True}).insert('\n') assert delta.concat(concat) == expected assert delta.ops == original.ops
def test_retain_delete(self): a = Delta().retain(1, {'bold': True}) b = Delta().delete(1) expected = Delta().delete(1) delta = a.compose(b) assert delta == expected, [delta.ops, expected.ops]
def test_retain_retain(self): a = Delta().retain(1, {'bold': True}) b = Delta().retain(1, {'color': 'blue'}) expected = Delta().retain(1, {'bold': True, 'color': 'blue'}) delta = a.compose(b) assert delta == expected, [delta.ops, expected.ops]
def test_retain_insert(self): a = Delta().retain(1, {'bold': True}) b = Delta().insert('B') expected = Delta().insert('B').retain(1, {'bold': True}) delta = a.compose(b) assert delta == expected, [delta.ops, expected.ops]
def test_insert_insert(self): a = Delta().insert('A') b = Delta().insert('B') expected = Delta().insert('B').insert('A') delta = a.compose(b) assert delta == expected, [delta.ops, expected.ops]
def test_delete_delete(self): a = Delta().delete(1) b = Delta().delete(1) expected = Delta().delete(2) delta = a.compose(b) assert delta == expected, [delta.ops, expected.ops]
def setUpClass(cls): cls.delta = (Delta().insert('Hello').insert({ 'image': True }).insert('World !'))
def test_chop_formatted_retain(self): delta = Delta().insert('Test').retain(4, {'bold': True}) expected = Delta().insert('Test').retain(4, {'bold': True}) assert delta.chop().ops == expected.ops
def test_chop_insert(self): delta = Delta().insert('Test') expected = Delta().insert('Test') assert delta.chop().ops == expected.ops
def test_chop_retain(self): delta = Delta().insert('Test').retain(4) expected = Delta().insert('Test') assert delta.chop().ops == expected.ops