updated tests for jay_diff

This commit is contained in:
2024-10-19 13:07:02 +02:00
parent 076ae8866d
commit b6566e754c
+67 -72
View File
@@ -1,29 +1,33 @@
from copy import deepcopy from copy import deepcopy
def jay_diff_rev(data, temp_data):
new_data = {} def jay_diff_rev(delta, data, temp_data):
for k in data.keys(): for k in data.keys():
if k not in temp_data: if k not in temp_data:
temp_data[k] = data[k] temp_data[k] = data[k]
new_data[k] = data[k] delta[k] = data[k]
else:
if isinstance(temp_data[k], dict): if isinstance(temp_data[k], dict):
new_data, temp_data = jay_diff_rev(data[k], temp_data[k]) if k not in delta:
return new_data, temp_data delta[k] = {}
jay_diff_rev(delta[k], data[k], temp_data[k])
def jay_diff_plus(data, temp_data): def jay_diff_plus(_old, _new):
temp = deepcopy(temp_data) __old = deepcopy(_old)
res, _ = jay_diff_rev(data, temp) delta = {}
return res jay_diff_rev(delta, _new, __old)
return delta
def jay_diff_minus(data, temp_data): def jay_diff_minus(_old, _new):
temp = deepcopy(data) __new = deepcopy(_new)
res, _ = jay_diff_rev(temp_data, temp) delta = {}
return res jay_diff_rev(delta, _old, __new)
return delta
def jay_diff_upd(data, temp_data): def jay_diff_upd(temp_data, data):
new_data = {} new_data = {}
for k in data.keys(): for k in data.keys():
if k in temp_data: if k in temp_data:
@@ -72,85 +76,76 @@ def jay_merge_minus(d, u):
if __name__ == '__main__': if __name__ == '__main__':
a = {'a':'hamburger', 'b':'fries', 'c':'coke'} diffed = jay_diff_plus({}, {'a':'hamburger', 'b':'fries', 'c': {'e': 'coke', 'f': 'coffee'}})
b = {'a':'hamburger', 'b':'fries', 'c':'pepsi'} assert diffed == {'a':'hamburger', 'b':'fries', 'c': {'e': 'coke', 'f': 'coffee'}}
c = {'a':'hamburger', 'b':'fries', 'c':'pepsi', 'd':'icecream'}
d = {'a':'hamburger', 'c':'pepsi', 'd':'icecream'}
e = {'a':'HotDog', 'b':'fries', 'd':'icecream'}
last = {} diffed = jay_diff_plus({'a':'hamburger', 'b':'fries', 'c':'pepsi'}, {'a':'hamburger', 'b':'fries', 'c':'coke'})
diffed = jay_diff_plus(a, {}) assert diffed == {}
print(f"a: Plus: {diffed}")
diffed = jay_diff_plus(b, a) diffed = jay_diff_plus({'a':'hamburger', 'b':'fries', 'c':'pepsi', 'd':'icecream'}, {'a':'hamburger', 'b':'fries', 'c':'pepsi'})
print(f"b: Plus: {diffed}") assert diffed == {}
diffed = jay_diff_plus(c, b) diffed = jay_diff_plus({'a':'hamburger', 'b':'fries', 'c':'pepsi'}, {'a':'hamburger', 'd':'icecream', 'c':'coke'})
print(f"c: Plus: {diffed}") assert diffed == {'d':'icecream'}
diffed = jay_diff_plus(d, c) diffed = jay_diff_plus({'a':'hamburger', 'c':'pepsi', 'd':'icecream'}, {'a':'hamburger', 'b':'fries', 'c':'coke'})
print(f"d: Plus: {diffed}") assert diffed == {'b':'fries'}
diffed = jay_diff_minus(a, {}) diffed = jay_diff_plus({'a':'hamburger', 'b':'fries', 'c': {'e': 'coke'}}, {'c': {'f': 'coffee'}})
print(f"a: Minus: {diffed}") assert diffed == {'c': {'f': 'coffee'}}
diffed = jay_diff_minus(b, a) diffed = jay_diff_minus({'a':'hamburger', 'c':'pepsi', 'd':'icecream'}, {'a':'hamburger', 'b':'fries', 'c':'coke'})
print(f"b: Minus: {diffed}") assert diffed == {'d':'icecream'}
diffed = jay_diff_minus(c, b) diffed = jay_diff_minus({'a':'hamburger', 'b':'fries', 'c':'coke'}, {'a':'hamburger', 'b':'fries', 'c':'coke'})
print(f"a: Minus: {diffed}") assert diffed == {}
diffed = jay_diff_minus(d, c) diffed = jay_diff_minus({'a':'hamburger', 'b':'fries', 'c':'coke'}, {'a':'hamburger', 'b':'fries', 'c':'pepsi'})
print(f"d: Minus: {diffed}") assert diffed == {}
diffed = jay_diff_upd(a, {}) diffed = jay_diff_minus({'a':'hamburger', 'b':'fries', 'c':'pepsi'}, {'a':'hamburger', 'b':'fries'})
print(f"a: Update: {diffed}") assert diffed == {'c':'pepsi'}
diffed = jay_diff_upd(b, a) diffed = jay_diff_minus({'a':'hamburger', 'b':'fries', 'c':'pepsi'}, {'a':'hamburger', 'b':'fries', 'c':'coke'})
print(f"b: Update: {diffed}") assert diffed == {}
diffed = jay_diff_upd(c, b) diffed = jay_diff_minus({'a':'hamburger', 'b':'fries', 'c': {'e': 'coke', 'f': 'coffee'}}, {'a':'hamburger', 'b':'fries'})
print(f"a: Update: {diffed}") assert diffed == {'c': {'e': 'coke', 'f': 'coffee'}}
diffed = jay_diff_upd(d, c) diffed = jay_diff_minus({'a':'hamburger', 'b':'fries', 'c': {'e': 'coke', 'f': 'coffee'}}, {'c': {'e': 'coke'}})
print(f"d: Update: {diffed}") assert diffed == {'a':'hamburger', 'b':'fries', 'c': {'f': 'coffee'}}
diffed = jay_diff_full(a, {}) diffed = jay_diff_upd({'a':'hamburger', 'b':'fries', 'c': {'e': 'coke', 'f': 'coffee'}}, {'a':'hotdog', 'b':'potatoes'})
print(f"a: Full: {diffed}") assert diffed == {'a':'hotdog', 'b':'potatoes'}
diffed = jay_diff_full(b, a) diffed = jay_diff_upd({'a':'hamburger', 'b':'fries', 'c': {'e': 'coke', 'f': 'coffee'}}, {'c': {'e': 'pepsi'}})
print(f"b: Full: {diffed}") assert diffed == {'c': {'e': 'pepsi'}}
diffed = jay_diff_full(c, b) diffed = jay_diff_upd({'a':'hamburger', 'b':'fries', 'c': {'e': 'coke', 'f': 'coffee'}}, {'a':'hotdog', 'b':'fries'})
print(f"c: Full: {diffed}") assert diffed == {'a':'hotdog'}
diffed = jay_diff_full(d, c) diffed = jay_diff_upd({'a':'hamburger', 'b':'fries', 'c': {'e': 'coke', 'f': 'coffee'}}, {'a':'hamburger', 'b':'fries', 'c': {'e': 'pepsi', 'f': 'coffee'}})
print(f"d: Full: {diffed}") assert diffed == {'c': {'e': 'pepsi'}}
diffed = jay_diff_full(e, d) # ToDo: jay_diff_full
print(f"e: Full: {diffed}")
merged = jay_merge_plus({}, {'a':'hamburger', 'b':'fries', 'c': {'e': 'coke', 'f': 'coffee'}})
assert merged == {'a':'hamburger', 'b':'fries', 'c': {'e': 'coke', 'f': 'coffee'}}
a = {'a':'hamburger', 'b':'fries', 'c': {'e': 'coke', 'f': 'coffee'}} merged = jay_merge_plus({'a':'hamburger', 'b':'fries', 'c': {'e': 'coke', 'f': 'coffee'}}, {'d':'icecream'})
b = {'b':'fries', 'c':'pepsi'} assert merged == {'a':'hamburger', 'b':'fries', 'c': {'e': 'coke', 'f': 'coffee'}, 'd':'icecream'}
c = {'d':'icecream'}
d = {'c': {'f': 'coffee'}}
merged = jay_merge_plus({}, a) merged = jay_merge_minus({'a':'hamburger', 'b':'fries', 'c': {'e': 'coke', 'f': 'coffee'}, 'd':'icecream'}, {'d':'icecream'})
print(f"a: Plus: {merged}") assert merged == {'a':'hamburger', 'b':'fries', 'c': {'e': 'coke', 'f': 'coffee'}}
merged = jay_merge_plus(merged, c) merged = jay_merge_minus({'a':'hamburger', 'b':'fries', 'c': {'e': 'coke', 'f': 'coffee'}}, {'c': {'f': 'coffee'}})
print(f"c: Plus: {merged}") assert merged == {'a':'hamburger', 'b':'fries', 'c': {'e': 'coke'}}
merged = jay_merge_minus(merged, c) merged = jay_merge_minus({'a':'hamburger', 'b':'fries', 'c': {'e': 'coke', 'f': 'coffee'}}, {'c': {'e': 'coke'}})
print(f"c: Minus: {merged}") assert merged == {'a':'hamburger', 'b':'fries', 'c': {'f': 'coffee'}}
merged = jay_merge_minus(merged, d) merged = jay_merge_plus({'a':'hamburger', 'b':'fries', 'c': {'f': 'coffee'}}, {'d':'icecream'})
print(f"d: Minus: {merged}") assert merged == {'a':'hamburger', 'b':'fries', 'c': {'f': 'coffee'}, 'd':'icecream'}
merged = jay_merge_plus(merged, d) merged = jay_merge_plus({'a':'hamburger', 'b':'fries', 'c': {'f': 'coffee'}, 'd':'icecream'}, {'d':'icecream'})
print(f"d: Plus: {merged}") assert merged == {'a':'hamburger', 'b':'fries', 'c': {'f': 'coffee'}, 'd':'icecream'}
c = {'a':'hamburger', 'b':'fries', 'c': {'e': 'coke', 'f': 'coffee'}, 'd':'icecream'}
d = {'a':'hamburger', 'c':'pepsi', 'd':'icecream'}
e = {'a':'HotDog', 'b':'fries', 'd':'icecream'}