def test_override_dict(self): d1 = {'a': {'x': 10}} d2 = {'a': 1} d = UnionDict(d1, d2) self.assertEqual(d['a'], 1) d = UnionDict(d2, d1) self.assertEqual(d['a'], {'x': 10})
def test_override(self): d1 = {'a': 1, 'b': 1} d2 = {'a': 2, 'b': 2} d3 = {'a': 3} d = UnionDict(d1, d2, d3) self.assertEqual(d['a'], 3) self.assertEqual(d['b'], 2) d = UnionDict(d3, d2, d1) self.assertEqual(d['a'], 1) self.assertEqual(d['b'], 1)
def test_merge(self): d1 = {'a': {'x': 10}} d2 = {'a': {'y': 20}} d3 = {'a': {'z': 30}} d = UnionDict(d1, d2, d3) self.assertIsInstance(d['a'], UnionDict) self.assertEqual(d['a']['x'], 10) self.assertEqual(d['a']['y'], 20) self.assertEqual(d['a']['z'], 30)
def test_base(self): d1 = {'a': 1, 'b': 2} d2 = {'c': 3, 'd': 4} d3 = {'e': 5, 'f': 6} d = UnionDict(d1, d2, d3) self.assertEqual(d['a'], 1) self.assertEqual(d['b'], 2) self.assertEqual(d['c'], 3) self.assertEqual(d['d'], 4) self.assertEqual(d['e'], 5) self.assertEqual(d['f'], 6) self.assertRaises(KeyError, lambda: d[0])
def test_repr(self): d = UnionDict(self.D1, self.D2, self.D3) self.assertEquals(eval(repr(d)), self.D)
def test_json_dump(self): d = UnionDict(self.D1, self.D2, self.D3) json_str = jsonutils.dumps(d).strip() self.assertEqual(jsonutils.loads(json_str), jsonutils.loads(self.JSON_STR_EXPECTED))
def test_yaml_dump(self): d = UnionDict(self.D1, self.D2, self.D3) yaml_str = yaml.dump(d, default_flow_style=False).strip() self.assertEqual(yaml_str, self.YAML_STR_EXPECTED)
def test_keys(self): ud = UnionDict({'a': 1, 'b': 2, 'c': 3}, {'b': 2, 'c': 3, 'd': 4}, {'e': 5}) self.assertEquals(ud.keys(), {'a', 'b', 'c', 'd', 'e'})
def get_old_data(self, node_id, task_id): node_info = utils.get_in(self.old, task_id, 'nodes', node_id) if not node_info: return {} return UnionDict(self.old[task_id]['common'], node_info)
def get_new_data(self, node_id): return UnionDict(self.new['common'], self.new['nodes'][node_id])