~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test__static_tuple_interned.py

Implement resizing.

It can resize up or down, but right now we never shrink.

Show diffs side-by-side

added added

removed removed

Lines of Context:
233
233
        self.assertRefcount(2, k3)
234
234
        del obj[k3]
235
235
        self.assertRefcount(1, k3)
 
236
 
 
237
    def test__resize(self):
 
238
        obj = _module.StaticTupleInterner()
 
239
        k1 = StaticTuple('foo')
 
240
        k2 = StaticTuple('bar')
 
241
        k3 = StaticTuple('baz')
 
242
        obj.add(k1)
 
243
        obj.add(k2)
 
244
        obj.add(k3)
 
245
        del obj[k2]
 
246
        self.assertFillState(2, 3, 0x3ff, obj)
 
247
        self.assertEqual(1024, obj._resize(500))
 
248
        self.assertFillState(2, 3, 0x3ff, obj)
 
249
        self.assertEqual(4096, obj._resize(4095))
 
250
        self.assertFillState(2, 2, 0xfff, obj)
 
251
        self.assertIn(k1, obj)
 
252
        self.assertNotIn(k2, obj)
 
253
        self.assertIn(k3, obj)
 
254
        obj.add(k2)
 
255
        self.assertIn(k2, obj)
 
256
        del obj[k2]
 
257
        self.assertEqual((591, '<dummy>'), obj._test_lookup(k2))
 
258
        self.assertFillState(2, 3, 0xfff, obj)
 
259
        self.assertEqual(2048, obj._resize(1024))
 
260
        self.assertFillState(2, 2, 0x7ff, obj)
 
261
        self.assertEqual((591, '<null>'), obj._test_lookup(k2))
 
262
 
 
263
    def test_add_lots_of_items(self):
 
264
        obj = _module.StaticTupleInterner()
 
265
        chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890'
 
266
        for i in chars:
 
267
            for j in chars:
 
268
                k = StaticTuple(i, j)
 
269
                obj.add(k)
 
270
        num = len(chars)*len(chars)
 
271
        self.assertFillState(num, num, 0x1fff, obj)