def test_smart_items(self): d = SmartDict() d['foo'] = {'a': 'world', 'b': 'hello'} d['a'] = [{'b': 1}, {'b': 2}, {'b': 3}] d['c.d'] = [{'e': 4}, {'f': 5}] self.assertTrue(d.items(), [('a', [{'b': 1}, {'b': 2}, {'b': 3}]), ('c', {'d': [{'e': 4}, {'f': 5}]}), ('foo', {'a': 'world', 'b': 'hello'})])
def test_smart_itervalues(self): d = SmartDict() d['foo'] = {'a': 'world', 'b': 'hello'} d['c.d'] = [{'e': 4}, {'f': 5}] d['a'] = [{'b': 1}, {'b': 2}, {'b': 3}] iterator = d.itervalues() self.assertEqual(iterator.next(), [{'b': 1}, {'b': 2}, {'b': 3}]) self.assertEqual(iterator.next(), {'d': [{'e': 4}, {'f': 5}]}) self.assertEqual(iterator.next(), {'a': 'world', 'b': 'hello'}) self.assertRaises(StopIteration, iterator.next)
def test_smart_update(self): d = SmartDict() d2 = SmartDict() d['foo'] = {'a': 'world', 'b': 'hello'} d['c.d'] = [{'e': 4}, {'f': 5}] d['a'] = [{'b': 1}, {'b': 2}, {'b': 3}] d2['qwerty'] = {'t': 'u', 'i': 'o'} d2['qwe.rty'] = [{'n': 34}, {'x': 3}] d.update(d2) d3 = SmartDict({'a': [{'b': 1}, {'b': 2}, {'b': 3}], 'c': {'d': [{'e': 4}, {'f': 5}]}, 'foo': {'a': 'world', 'b': 'hello'}, 'qwe': {'rty': [{'n': 34}, {'x': 3}]}, 'qwerty': {'i': 'o', 't': 'u'}}) self.assertTrue(d == d3)
def test_smart_dict(self): d = SmartDict() d['foo'] = {'a': 'world', 'b': 'hello'} d['a'] = [{'b': 1}, {'b': 2}, {'b': 3}] self.assertEqual(d.keys(), ['a', 'foo']) self.assertTrue('foo.a' in d) del d['foo'] self.assertEqual(d.keys(), ['a']) self.assertEqual(d['a'], [{'b': 1}, {'b': 2}, {'b': 3}]) self.assertEqual(d['a[0]'], {'b': 1}) self.assertEqual(d['a.b'], [1, 2, 3]) self.assertEqual(d['a[1:]'], [{'b': 2}, {'b': 3}]) d.set('a', {'b': 4}, extend=True) self.assertEqual(d['a'], [{'b': 1}, {'b': 2}, {'b': 3}, {'b': 4}]) d.set('a', [{'b': 1}, {'b': 2}, {'b': 3}], extend=False) self.assertEqual(d['a'], [{'b': 1}, {'b': 2}, {'b': 3}]) self.assertEqual(d.get('does not exists'), None) d = SmartDict() d.set('a.b.c[n]', 'foo', True) self.assertEqual(d['a.b.c'], ['foo']) d.set('a.b.c[n]', 'bar', True) self.assertEqual(d['a.b.c'], ['foo', 'bar']) d.set('a.b.c', ['foo'], False) self.assertEqual(d['a.b.c'], ['foo'])