コード例 #1
0
 def test_iteration_and_repr(self):
     d = ProxyDict({1: 'a', 3: 'c'})
     e = ProxyDict({'a': 'b', 'c': 'd'})
     self.assertEqual(set(d), {1, 3})
     self.assertEqual(set(e), {'a', 'c'})
     self.assertEqual(
         str(d),
         "ProxyDict({1: 'a', 3: 'c'})",
     )
     self.assertEqual(
         str(e),
         "ProxyDict({'a': 'b', 'c': 'd'})",
     )
コード例 #2
0
 def test_accepts_multiple_mappings(self):
     m1 = {1: 'a', 3: 'c'}
     m2 = {2: 'b', 5: 'z'}
     m3 = {4: 'd', 5: 'e'}
     d = ProxyDict(m1, m2, m3)
     self.assertEqual(d, {1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'})
     self.assertEqual(d[5], 'e')
コード例 #3
0
 def test_can_access_keys(self):
     d = ProxyDict({'a': 'b', 'c': 'd'})
     self.assertEqual(d['a'], 'b')
     self.assertEqual(d['c'], 'd')
     with self.assertRaises(KeyError):
         d['b']
         d[0]
コード例 #4
0
 def test_cannot_write_to_keys(self):
     d = ProxyDict({0: 'b', 1: 'd'})
     self.assertEqual(d[0], 'b')
     with self.assertRaises(Exception):
         d[0] = 'e'
     with self.assertRaises(Exception):
         d[3] = 'z'
コード例 #5
0
 def test_items_len_values_items_and_get(self):
     d = ProxyDict({'a': 'b', 'c': 'd'})
     self.assertEqual(set(d.items()), {('a', 'b'), ('c', 'd')})
     self.assertEqual(set(d.values()), {'b', 'd'})
     self.assertEqual(len(d), 2)
     self.assertEqual(d.get('a'), 'b')
     self.assertEqual(d.get('a', 'z'), 'b')
     self.assertEqual(d.get('d'), None)
     self.assertEqual(d.get('d', 'z'), 'z')
コード例 #6
0
 def test_maps_attribute_and_repr(self):
     m1 = {1: 'a', 3: 'c'}
     m2 = {2: 'b', 5: 'z'}
     m3 = {4: 'd', 5: 'e'}
     d = ProxyDict(m1, m2, m3)
     self.assertEqual(d.maps, [m1, m2, m3])
     self.assertEqual(
         str(d),
         "ProxyDict({1: 'a', 3: 'c'}, {2: 'b', 5: 'z'}, {4: 'd', 5: 'e'})",
     )
コード例 #7
0
 def test_supports_equality(self):
     mapping1 = {'a': 1, 'b': 2}
     mapping2 = {'a': 1}
     a = ProxyDict(mapping1)
     b = ProxyDict(mapping2)
     c = ProxyDict(mapping1)
     self.assertEqual(a, mapping1)
     self.assertEqual(b, mapping2)
     self.assertEqual(a, c)
     self.assertNotEqual(a, b)
     self.assertIs(a != mapping1, False)
     self.assertIs(a == b, False)
     mapping2['b'] = 2
     self.assertEqual(b, mapping2)
     self.assertEqual(a, mapping1)
     self.assertEqual(a, b)
     self.assertNotEqual(a, ['a', 'b'])
     self.assertEqual(a, defaultdict(int, {'a': 1, 'b': 2}))
     self.assertEqual(a, Counter('abb'))
コード例 #8
0
 def test_has_keys(self):
     d = ProxyDict({'a': 'b', 'c': 'd'})
     self.assertEqual(set(d.keys()), {'a', 'c'})
コード例 #9
0
 def test_changes_when_underlying_mapping_changes(self):
     mapping = {'a': 'b', 'c': 'd'}
     d = ProxyDict(mapping)
     self.assertEqual(d['a'], 'b')
     mapping['a'] = 'z'
     self.assertEqual(d['a'], 'z')
コード例 #10
0
 def test_cannot_pop_key(self):
     d = ProxyDict({0: 'b', 1: 'd'})
     with self.assertRaises(Exception):
         d.pop(0)
     self.assertEqual(d[0], 'b')
コード例 #11
0
 def test_cannot_set_default_values(self):
     d = ProxyDict({0: 'b', 1: 'd'})
     with self.assertRaises(Exception):
         d.setdefault(2, 'e')
コード例 #12
0
 def test_cannot_update(self):
     d = ProxyDict({0: 'b', 1: 'd'})
     with self.assertRaises(Exception):
         d.update({3: 'z'})