| |
| |
| |
| |
| |
| |
| |
|
|
| 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() |
|
|