Esempio n. 1
0
 def test_copy_and_mutate(self):
     schema = mock.Mock()
     chain = FilterChain(schema=schema)
     chain.lookup_descriptions.append(1)
     chain.base_url = 'http://xyz'
     chain['foo'] = 'bar'
     chain['qux'] = 'whee'
     clone = chain.copy()
     # Attributes are copied...
     self.assertEqual(clone.lookup_descriptions, [1])
     self.assertEqual(clone.base_url, chain.base_url)
     self.assertEqual(clone.schema, chain.schema, schema)
     # ... and mutating them doesn't affect the original.
     clone.lookup_descriptions.pop()
     self.assertEqual(chain.lookup_descriptions, [1])
     # Likewise, items are copied, and mutating doesn't affect the copy.
     self.assertEqual(clone['foo'], 'bar')
     del chain['foo']
     self.assertEqual(clone['foo'], 'bar')
     del clone['qux']
     self.assertEqual(chain['qux'], 'whee')
     # Likewise, clearing.
     clone.clear()
     self.assertEqual(clone.items(), [])
     self.assertEqual(chain['qux'], 'whee')
 def test_copy_and_mutate(self):
     schema = mock.Mock()
     chain = FilterChain(schema=schema)
     chain.lookup_descriptions.append(1)
     chain.base_url = 'http://xyz'
     chain['foo'] = 'bar'
     chain['qux'] = 'whee'
     clone = chain.copy()
     # Attributes are copied...
     self.assertEqual(clone.lookup_descriptions, [1])
     self.assertEqual(clone.base_url, chain.base_url)
     self.assertEqual(clone.schema, chain.schema, schema)
     # ... and mutating them doesn't affect the original.
     clone.lookup_descriptions.pop()
     self.assertEqual(chain.lookup_descriptions, [1])
     # Likewise, items are copied, and mutating doesn't affect the copy.
     self.assertEqual(clone['foo'], 'bar')
     del chain['foo']
     self.assertEqual(clone['foo'], 'bar')
     del clone['qux']
     self.assertEqual(chain['qux'], 'whee')
     # Likewise, clearing.
     clone.clear()
     self.assertEqual(clone.items(), [])
     self.assertEqual(chain['qux'], 'whee')