2014-10-24 17:13:47 +00:00
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
2014-11-21 19:05:13 +00:00
|
|
|
# Import python libs
|
|
|
|
from __future__ import absolute_import
|
2014-10-24 17:13:47 +00:00
|
|
|
import copy
|
|
|
|
|
|
|
|
# Import Salt Testing libs
|
|
|
|
from salttesting import TestCase
|
|
|
|
from salttesting.helpers import ensure_in_syspath
|
|
|
|
|
|
|
|
ensure_in_syspath('../../')
|
|
|
|
|
|
|
|
# Import Salt libs
|
|
|
|
from salt.utils import dictupdate
|
|
|
|
|
2014-10-24 17:32:12 +00:00
|
|
|
|
2014-10-24 17:13:47 +00:00
|
|
|
class UtilDictupdateTestCase(TestCase):
|
|
|
|
|
|
|
|
dict1 = {'A': 'B', 'C': {'D': 'E', 'F': {'G': 'H', 'I': 'J'}}}
|
|
|
|
|
|
|
|
def test_update(self):
|
|
|
|
|
|
|
|
# level 1 value changes
|
|
|
|
mdict = copy.deepcopy(self.dict1)
|
|
|
|
mdict['A'] = 'Z'
|
|
|
|
res = dictupdate.update(copy.deepcopy(self.dict1), {'A': 'Z'})
|
|
|
|
self.assertEqual(res, mdict)
|
|
|
|
|
|
|
|
# level 2 value changes
|
|
|
|
mdict = copy.deepcopy(self.dict1)
|
|
|
|
mdict['C']['D'] = 'Z'
|
|
|
|
res = dictupdate.update(copy.deepcopy(self.dict1), {'C': {'D': 'Z'}})
|
|
|
|
self.assertEqual(res, mdict)
|
|
|
|
|
|
|
|
# level 3 value changes
|
|
|
|
mdict = copy.deepcopy(self.dict1)
|
|
|
|
mdict['C']['F']['G'] = 'Z'
|
|
|
|
res = dictupdate.update(
|
|
|
|
copy.deepcopy(self.dict1),
|
|
|
|
{'C': {'F': {'G': 'Z'}}}
|
|
|
|
)
|
|
|
|
self.assertEqual(res, mdict)
|
|
|
|
|
|
|
|
# replace a sub-dictionary
|
|
|
|
mdict = copy.deepcopy(self.dict1)
|
|
|
|
mdict['C'] = 'Z'
|
|
|
|
res = dictupdate.update(copy.deepcopy(self.dict1), {'C': 'Z'})
|
|
|
|
self.assertEqual(res, mdict)
|
|
|
|
|
|
|
|
# add a new scalar value
|
|
|
|
mdict = copy.deepcopy(self.dict1)
|
|
|
|
mdict['Z'] = 'Y'
|
|
|
|
res = dictupdate.update(copy.deepcopy(self.dict1), {'Z': 'Y'})
|
|
|
|
self.assertEqual(res, mdict)
|
|
|
|
|
|
|
|
# add a dictionary
|
|
|
|
mdict = copy.deepcopy(self.dict1)
|
|
|
|
mdict['Z'] = {'Y': 'X'}
|
|
|
|
res = dictupdate.update(copy.deepcopy(self.dict1), {'Z': {'Y': 'X'}})
|
|
|
|
self.assertEqual(res, mdict)
|
|
|
|
|
|
|
|
# add a nested dictionary
|
|
|
|
mdict = copy.deepcopy(self.dict1)
|
|
|
|
mdict['Z'] = {'Y': {'X': 'W'}}
|
|
|
|
res = dictupdate.update(
|
|
|
|
copy.deepcopy(self.dict1),
|
|
|
|
{'Z': {'Y': {'X': 'W'}}}
|
|
|
|
)
|
|
|
|
self.assertEqual(res, mdict)
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
from integration import run_tests
|
|
|
|
run_tests(UtilDictupdateTestCase, needs_daemon=False)
|