mirror of
https://github.com/projectatomic/atomic.git
synced 2026-02-05 18:45:01 +01:00
169 lines
5.4 KiB
Python
169 lines
5.4 KiB
Python
|
|
import unittest
|
||
|
|
from Atomic import diff
|
||
|
|
import copy
|
||
|
|
|
||
|
|
|
||
|
|
class FakeObj(object):
|
||
|
|
def __init__(self):
|
||
|
|
self.name = None
|
||
|
|
self.inspect_data = None
|
||
|
|
self.metadata_results = None
|
||
|
|
|
||
|
|
|
||
|
|
class TestMetaDiff(unittest.TestCase):
|
||
|
|
|
||
|
|
ORANGE1 = ['navel', 'caracara']
|
||
|
|
ORANGE2 = ORANGE1 + ['valencia']
|
||
|
|
|
||
|
|
APPLES1 = {
|
||
|
|
'red': ['fuji', 'gala', 'delicious'],
|
||
|
|
'green': ['granny', 'golden']
|
||
|
|
}
|
||
|
|
|
||
|
|
APPLES2 = copy.deepcopy(APPLES1)
|
||
|
|
APPLES2['red'] = APPLES1['red'] + ['jazz']
|
||
|
|
APPLES2['green'] = []
|
||
|
|
|
||
|
|
MARKET = {
|
||
|
|
'apples': {
|
||
|
|
'gala': 1965,
|
||
|
|
'fuji': 1962,
|
||
|
|
'delicious': 1914
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
MARKET2 = {
|
||
|
|
'apples': {
|
||
|
|
'gala': 1965,
|
||
|
|
'honeycrisp': 1991,
|
||
|
|
'fuji': 1962
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
FRUIT1= {
|
||
|
|
"a": "apple",
|
||
|
|
"b": "banana",
|
||
|
|
"c": "carrot",
|
||
|
|
"d": ["dragonfruit", "dates", "dill"],
|
||
|
|
"e": {"egg": "EGG",
|
||
|
|
"endive": 'ENDIVE'},
|
||
|
|
"f": "figs"
|
||
|
|
}
|
||
|
|
|
||
|
|
FRUIT2 = copy.deepcopy(FRUIT1)
|
||
|
|
FRUIT2['g'] = 'grapes'
|
||
|
|
|
||
|
|
FRUIT3 = copy.deepcopy(FRUIT1)
|
||
|
|
FRUIT3['o'] = ORANGE1
|
||
|
|
FRUIT4 = copy.deepcopy(FRUIT1)
|
||
|
|
FRUIT4['o'] = ORANGE2
|
||
|
|
|
||
|
|
FRUIT5 = copy.deepcopy(FRUIT1)
|
||
|
|
FRUIT5['o'] = APPLES1
|
||
|
|
FRUIT6 = copy.deepcopy(FRUIT1)
|
||
|
|
FRUIT6['o'] = APPLES2
|
||
|
|
|
||
|
|
FRUIT7 = copy.deepcopy(FRUIT1)
|
||
|
|
FRUIT7['r'] = MARKET
|
||
|
|
FRUIT8 = copy.deepcopy(FRUIT1)
|
||
|
|
FRUIT8['r'] = MARKET2
|
||
|
|
|
||
|
|
EMPTY1 = {'foo': None}
|
||
|
|
EMPTY2 = {}
|
||
|
|
|
||
|
|
NEST_NONE1 = {'foo': {'bar': {'baz': 1}}}
|
||
|
|
NEST_NONE2 = {'foo': {'bar': None}}
|
||
|
|
|
||
|
|
def _create_image_list(self, *images):
|
||
|
|
image_list = []
|
||
|
|
for i in images:
|
||
|
|
_image = FakeObj()
|
||
|
|
_image.name = i
|
||
|
|
_image.inspect_data = getattr(self, i)
|
||
|
|
image_list.append(_image)
|
||
|
|
return image_list
|
||
|
|
|
||
|
|
@staticmethod
|
||
|
|
def _get_results_metadata(images):
|
||
|
|
return images[0].metadata_results, images[1].metadata_results
|
||
|
|
|
||
|
|
def test_same(self):
|
||
|
|
images = self._create_image_list('FRUIT1', 'FRUIT1')
|
||
|
|
compare = diff.CompareMetaData(images)
|
||
|
|
compare.compare()
|
||
|
|
self.assertEqual(compare.img_obj1.metadata_results,
|
||
|
|
compare.img_obj2.metadata_results)
|
||
|
|
|
||
|
|
def test_different_single(self):
|
||
|
|
images = self._create_image_list('FRUIT1', 'FRUIT2')
|
||
|
|
compare = diff.CompareMetaData(images)
|
||
|
|
compare.compare()
|
||
|
|
results1, results2 = self._get_results_metadata(images)
|
||
|
|
self.assertEqual(results1, {})
|
||
|
|
self.assertEqual(results2, {'g': 'grapes'})
|
||
|
|
|
||
|
|
def test_list_same(self):
|
||
|
|
images = self._create_image_list('FRUIT3', 'FRUIT3')
|
||
|
|
compare = diff.CompareMetaData(images)
|
||
|
|
compare.compare()
|
||
|
|
results1, results2 = self._get_results_metadata(images)
|
||
|
|
self.assertEqual(results1, results2)
|
||
|
|
self.assertEqual(results1, {})
|
||
|
|
|
||
|
|
def test_list_different(self):
|
||
|
|
images = self._create_image_list('FRUIT3', 'FRUIT4')
|
||
|
|
compare = diff.CompareMetaData(images)
|
||
|
|
compare.compare()
|
||
|
|
results1, results2 = self._get_results_metadata(images)
|
||
|
|
self.assertEqual(results1, {'o': ['navel', 'caracara']} )
|
||
|
|
self.assertEqual(results2, {'o': ['navel', 'caracara', 'valencia']})
|
||
|
|
|
||
|
|
def test_nested_dict_same(self):
|
||
|
|
images = self._create_image_list('FRUIT5', 'FRUIT5')
|
||
|
|
compare = diff.CompareMetaData(images)
|
||
|
|
compare.compare()
|
||
|
|
results1, results2 = self._get_results_metadata(images)
|
||
|
|
self.assertEqual(results1, results2)
|
||
|
|
self.assertEqual(results1, {})
|
||
|
|
|
||
|
|
def test_nested_dict_diff(self):
|
||
|
|
images = self._create_image_list('FRUIT5', 'FRUIT6')
|
||
|
|
compare = diff.CompareMetaData(images)
|
||
|
|
compare.compare()
|
||
|
|
results1, results2 = self._get_results_metadata(images)
|
||
|
|
self.assertEqual(results1, {'o': {'green': ['granny', 'golden'], 'red': ['fuji', 'gala', 'delicious']}} )
|
||
|
|
self.assertEqual(results2, {'o': {'green': [], 'red': ['fuji', 'gala', 'delicious', 'jazz']}})
|
||
|
|
|
||
|
|
def test_nested2_dict_same(self):
|
||
|
|
images = self._create_image_list('FRUIT7', 'FRUIT7')
|
||
|
|
compare = diff.CompareMetaData(images)
|
||
|
|
compare.compare()
|
||
|
|
results1, results2 = self._get_results_metadata(images)
|
||
|
|
self.assertEqual(results1, results2)
|
||
|
|
self.assertEqual(results1, {})
|
||
|
|
|
||
|
|
def test_nested2_dict_diff(self):
|
||
|
|
images = self._create_image_list('FRUIT7', 'FRUIT8')
|
||
|
|
compare = diff.CompareMetaData(images)
|
||
|
|
compare.compare()
|
||
|
|
results1, results2 = self._get_results_metadata(images)
|
||
|
|
self.assertEqual(results1, {'r': {'apples': {'delicious': 1914}}})
|
||
|
|
self.assertEqual(results2, {'r': {'apples': {'honeycrisp': 1991}}})
|
||
|
|
|
||
|
|
def test_none_to_empty(self):
|
||
|
|
images = self._create_image_list('EMPTY1', 'EMPTY2')
|
||
|
|
compare = diff.CompareMetaData(images)
|
||
|
|
compare.compare()
|
||
|
|
results1, results2 = self._get_results_metadata(images)
|
||
|
|
self.assertNotEqual(results1, results2)
|
||
|
|
self.assertEqual(results2, {})
|
||
|
|
self.assertEqual(results1, {'foo': None})
|
||
|
|
|
||
|
|
def test_nested_none(self):
|
||
|
|
images = self._create_image_list('NEST_NONE1', 'NEST_NONE2')
|
||
|
|
compare = diff.CompareMetaData(images)
|
||
|
|
compare.compare()
|
||
|
|
results1, results2 = self._get_results_metadata(images)
|
||
|
|
self.assertEqual(results1, {'foo': {'bar': {'baz': 1}}})
|
||
|
|
self.assertEqual(results2, {'foo': {'bar': None}})
|