blob: c1e850100bdff9de700c99d9b7eaae169e88728e [file] [log] [blame]
martin f. krafftf37f0682013-06-14 16:36:20 +02001#
2# -*- coding: utf-8 -*-
3#
4# This file is part of reclass (http://github.com/madduck/reclass)
5#
6# Copyright © 2007–13 martin f. krafft <madduck@madduck.net>
7# Released under the terms of the Artistic Licence 2.0
8#
9from test_update import TestDictUpdate
10from mergers.dict import DictRecursiveUpdate
11
12class TestDictRecursiveUpdate(TestDictUpdate):
13
14 def setUp(self):
15 self.merger = DictRecursiveUpdate()
16
17 def test_simple_recursive_dict_update(self):
18 first = {'one':{1:1,2:3,3:2}}
19 second = {'one':{2:2,3:3,4:4}}
20 ret = self.merger.merge(first, second)
21 assert len(ret) == 1
22 for k,v in ret['one'].iteritems():
23 assert k == v
24
25 def test_complex_recursive_dict_update(self):
26 first = {'one': 1,
27 'two': {'a':92,'b':94},
28 'three': {'third':0.33,'two thirds':0.67},
29 'four': {1:{1:1},2:{2:2},3:{3:4}}
30 }
31 second = {'five': 5,
32 'one': 1,
33 'two': {'b':93,'c':94},
34 'four': {4:{4:4}, 3:{3:3}},
35 }
36 ret = self.merger.merge(first, second)
37 assert ret['one'] == 1
38 assert len(ret['two']) == 3
39 assert ret['two']['b'] == 93
40 assert len(ret['three']) == 2
41 assert len(ret['four']) == 4
42 for i in range(1,4):
43 assert len(ret['four'][i]) == 1
44 for k,v in ret['four'][i].iteritems():
45 assert k == v