| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | from dill import __diff as diff |
| |
|
| | import sys |
| | IS_PYPY = not hasattr(sys, 'getrefcount') |
| |
|
| | class A: |
| | pass |
| |
|
| | def test_diff(): |
| | a = A() |
| | b = A() |
| | c = A() |
| | a.a = b |
| | b.a = c |
| | diff.memorise(a) |
| | assert not diff.has_changed(a) |
| | c.a = 1 |
| | assert diff.has_changed(a) |
| | diff.memorise(c, force=True) |
| | assert not diff.has_changed(a) |
| | c.a = 2 |
| | assert diff.has_changed(a) |
| | changed = diff.whats_changed(a) |
| | assert list(changed[0].keys()) == ["a"] |
| | assert not changed[1] |
| |
|
| | a2 = [] |
| | b2 = [a2] |
| | c2 = [b2] |
| | diff.memorise(c2) |
| | assert not diff.has_changed(c2) |
| | a2.append(1) |
| | assert diff.has_changed(c2) |
| | changed = diff.whats_changed(c2) |
| | assert changed[0] == {} |
| | assert changed[1] |
| |
|
| | a3 = {} |
| | b3 = {1: a3} |
| | c3 = {1: b3} |
| | diff.memorise(c3) |
| | assert not diff.has_changed(c3) |
| | a3[1] = 1 |
| | assert diff.has_changed(c3) |
| | changed = diff.whats_changed(c3) |
| | assert changed[0] == {} |
| | assert changed[1] |
| |
|
| | if not IS_PYPY: |
| | import abc |
| | |
| | diff.memorise(abc.ABCMeta, force=True) |
| | assert not diff.has_changed(abc) |
| | abc.ABCMeta.zzz = 1 |
| | assert diff.has_changed(abc) |
| | changed = diff.whats_changed(abc) |
| | assert list(changed[0].keys()) == ["ABCMeta"] |
| | assert not changed[1] |
| |
|
| | ''' |
| | import Queue |
| | diff.memorise(Queue, force=True) |
| | assert not diff.has_changed(Queue) |
| | Queue.Queue.zzz = 1 |
| | assert diff.has_changed(Queue) |
| | changed = diff.whats_changed(Queue) |
| | assert list(changed[0].keys()) == ["Queue"] |
| | assert not changed[1] |
| | |
| | import math |
| | diff.memorise(math, force=True) |
| | assert not diff.has_changed(math) |
| | math.zzz = 1 |
| | assert diff.has_changed(math) |
| | changed = diff.whats_changed(math) |
| | assert list(changed[0].keys()) == ["zzz"] |
| | assert not changed[1] |
| | ''' |
| |
|
| | a = A() |
| | b = A() |
| | c = A() |
| | a.a = b |
| | b.a = c |
| | diff.memorise(a) |
| | assert not diff.has_changed(a) |
| | c.a = 1 |
| | assert diff.has_changed(a) |
| | diff.memorise(c, force=True) |
| | assert not diff.has_changed(a) |
| | del c.a |
| | assert diff.has_changed(a) |
| | changed = diff.whats_changed(a) |
| | assert list(changed[0].keys()) == ["a"] |
| | assert not changed[1] |
| |
|
| |
|
| | if __name__ == '__main__': |
| | test_diff() |
| |
|