def test_changes(self): c = Changes() c.add_created(CellName("resource1"), "resource1") c.add_created(CellName("resource2"), "resource2") c.add_deleted(CellName("resource3"), "resource3") c.add_modified(CellName("resource4"), Modification("resource3", "resource4")) c.add_rename(CellName("resource5"), CellName("resource6")) c.sim_limit = 23 s = c.serialize() deserializer = ChangesDeserializer(CellName, str) c2 = deserializer.deserialize(s) self.assertEqual(c.created, c2.created) self.assertEqual(c.deleted, c2.deleted) self.assertEqual(c.modified, c2.modified) self.assertEqual(c.renames, c2.renames)
def compute_diff(changes, diff_function): diff = Changes() diff.renames = changes.renames for name, item in changes.created.iteritems(): if name not in changes.renames.values(): diff.created[name] = diff_function(None, item) for name, item in changes.deleted.iteritems(): if name not in changes.renames: diff.deleted[name] = diff_function(item, None) else: new_name = changes.renames[name] new_item = changes.created[new_name] diff.modified[name] = diff_function(item, new_item) for name, item in changes.modified.iteritems(): mod = changes.modified[name] diff.modified[name] = diff_function(mod[0], mod[1]) return diff