def test_merge_different_undo_item_type(self): example_1 = SimpleExample() example_2 = SimpleExample() undo_item = UndoItem( object=example_1, name='any_value', ) next_undo_item = ListUndoItem( object=example_2, name='any_value', ) result = undo_item.merge(next_undo_item) self.assertFalse(result)
def test_merge_unhandled_type(self): example = SimpleExample() undo_item = UndoItem( object=example, name='any_value', old_value={'foo', 'bar', 'baz'}, new_value={'foo', 'wombat', 'baz'}, ) next_undo_item = UndoItem( object=example, name='any_value', old_value={'foo', 'wombat', 'baz'}, new_value={'foo', 'fizz', 'baz'}, ) result = undo_item.merge(next_undo_item) self.assertFalse(result)
def test_merge_sequence_change_length(self): example = SimpleExample() undo_item = UndoItem( object=example, name='tuple_value', old_value=('foo', 'bar', 'baz'), new_value=('foo', 'wombat', 'baz'), ) next_undo_item = UndoItem( object=example, name='tuple_value', old_value=('foo', 'wombat', 'baz'), new_value=('foo', 'wombat', 'baz', 'fizz'), ) result = undo_item.merge(next_undo_item) self.assertFalse(result)
def test_merge_str_different(self): example = SimpleExample() undo_item = UndoItem( object=example, name='str_value', old_value='foo', new_value='bar', ) next_undo_item = UndoItem( object=example, name='str_value', old_value='bar', new_value='wombat', ) result = undo_item.merge(next_undo_item) self.assertFalse(result)
def test_merge_different_value_types(self): example = SimpleExample() undo_item = UndoItem( object=example, name='any_value', old_value=10, new_value=11, ) next_undo_item = UndoItem( object=example, name='any_value', old_value=11, new_value='foo', ) result = undo_item.merge(next_undo_item) self.assertFalse(result)
def test_merge_sequence_change_multiple_not_simple_types(self): example = SimpleExample() undo_item = UndoItem( object=example, name='tuple_value', old_value=(['foo'], 'bar', 'baz'), new_value=(['foo'], 'wombat', 'baz'), ) next_undo_item = UndoItem( object=example, name='tuple_value', old_value=(['foo'], 'wombat', 'baz'), new_value=(['foo'], 'fizz', 'baz'), ) result = undo_item.merge(next_undo_item) # XXX This is perhaps unexpected. See GitHub issue #1507. self.assertFalse(result)
def test_merge_different_objects(self): example_1 = SimpleExample() example_2 = SimpleExample() undo_item = UndoItem( object=example_1, name='value', old_value=10, new_value=11, ) next_undo_item = UndoItem( object=example_2, name='value', old_value=10, new_value=11, ) result = undo_item.merge(next_undo_item) self.assertFalse(result)
def test_merge_sequence_change_not_simple_types(self): example = SimpleExample() undo_item = UndoItem( object=example, name='tuple_value', old_value=('foo', ['bar'], 'baz'), new_value=('foo', ['wombat'], 'baz'), ) next_undo_item = UndoItem( object=example, name='tuple_value', old_value=('foo', ['wombat'], 'baz'), new_value=('foo', ['fizz'], 'baz'), ) result = undo_item.merge(next_undo_item) self.assertTrue(result) self.assertEqual(undo_item.old_value, ('foo', ['bar'], 'baz')) self.assertEqual(undo_item.new_value, ('foo', ['fizz'], 'baz'))
def test_merge_str_same(self): example = SimpleExample() undo_item = UndoItem( object=example, name='str_value', old_value='foo', new_value='bar', ) next_undo_item = UndoItem( object=example, name='str_value', old_value='bar', new_value='bar', ) result = undo_item.merge(next_undo_item) self.assertTrue(result) self.assertEqual(undo_item.old_value, 'foo') self.assertEqual(undo_item.new_value, 'bar')
def test_merge_numbers(self): example = SimpleExample() undo_item = UndoItem( object=example, name='value', old_value=10, new_value=11, ) next_undo_item = UndoItem( object=example, name='value', old_value=11, new_value=12, ) result = undo_item.merge(next_undo_item) self.assertTrue(result) self.assertEqual(undo_item.old_value, 10) self.assertEqual(undo_item.new_value, 12)