~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_fifo_cache.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2008-12-19 17:14:59 UTC
  • mfrom: (3882.6.23 xml_cache)
  • Revision ID: pqm@pqm.ubuntu.com-20081219171459-521qbou7ho7g297f
(jam) Add a cache for deserializing inventory entries from XML.

Show diffs side-by-side

added added

removed removed

Lines of Context:
41
41
        self.assertEqual([2], list(c.itervalues()))
42
42
        self.assertEqual({1: 2}, c)
43
43
 
 
44
    def test_cache_size(self):
 
45
        c = fifo_cache.FIFOCache()
 
46
        self.assertEqual(100, c.cache_size())
 
47
        c.resize(20, 5)
 
48
        self.assertEqual(20, c.cache_size())
 
49
 
44
50
    def test_missing(self):
45
51
        c = fifo_cache.FIFOCache()
46
52
        self.assertRaises(KeyError, c.__getitem__, 1)
114
120
        c = fifo_cache.FIFOCache()
115
121
        self.assertRaises(NotImplementedError, c.popitem)
116
122
 
 
123
    def test_resize_smaller(self):
 
124
        c = fifo_cache.FIFOCache()
 
125
        c[1] = 2
 
126
        c[2] = 3
 
127
        c[3] = 4
 
128
        c[4] = 5
 
129
        c[5] = 6
 
130
        # No cleanup, because it is the exact size
 
131
        c.resize(5)
 
132
        self.assertEqual({1: 2, 2: 3, 3: 4, 4: 5, 5: 6}, c)
 
133
        self.assertEqual(5, c.cache_size())
 
134
        # Adding one more will trigger a cleanup, though
 
135
        c[6] = 7
 
136
        self.assertEqual({3: 4, 4: 5, 5: 6, 6: 7}, c)
 
137
        c.resize(3, 2)
 
138
        self.assertEqual({5: 6, 6: 7}, c)
 
139
 
 
140
    def test_resize_larger(self):
 
141
        c = fifo_cache.FIFOCache(5, 4)
 
142
        c[1] = 2
 
143
        c[2] = 3
 
144
        c[3] = 4
 
145
        c[4] = 5
 
146
        c[5] = 6
 
147
        # No cleanup, because it is the exact size
 
148
        c.resize(10)
 
149
        self.assertEqual({1: 2, 2: 3, 3: 4, 4: 5, 5: 6}, c)
 
150
        self.assertEqual(10, c.cache_size())
 
151
        c[6] = 7
 
152
        c[7] = 8
 
153
        c[8] = 9
 
154
        c[9] = 10
 
155
        c[10] = 11
 
156
        self.assertEqual({1: 2, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9,
 
157
                          9: 10, 10: 11}, c)
 
158
        c[11] = 12
 
159
        self.assertEqual({4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10, 10: 11,
 
160
                          11: 12}, c)
 
161
 
117
162
    def test_setdefault(self):
118
163
        c = fifo_cache.FIFOCache(5, 4)
119
164
        c['one'] = 1
208
253
        self.assertEqual(['2'], c.values())
209
254
        self.assertEqual(['2'], list(c.itervalues()))
210
255
        self.assertEqual({1: '2'}, c)
 
256
        self.assertEqual(1024*1024, c.cache_size())
211
257
 
212
258
    def test_missing(self):
213
259
        c = fifo_cache.FIFOSizeCache()
248
294
        c[1] = 'abcdefgh'
249
295
        self.assertEqual({}, c)
250
296
        self.assertEqual(0, c._value_size)
 
297
 
 
298
    def test_resize_smaller(self):
 
299
        c = fifo_cache.FIFOSizeCache(20, 16)
 
300
        c[1] = 'a'
 
301
        c[2] = 'bc'
 
302
        c[3] = 'def'
 
303
        c[4] = 'ghij'
 
304
        # No cleanup, because it is the exact size
 
305
        c.resize(10, 8)
 
306
        self.assertEqual({1: 'a', 2: 'bc', 3: 'def', 4: 'ghij'}, c)
 
307
        self.assertEqual(10, c.cache_size())
 
308
        # Adding one more will trigger a cleanup, though
 
309
        c[5] = 'k'
 
310
        self.assertEqual({3: 'def', 4: 'ghij', 5: 'k'}, c)
 
311
        c.resize(5, 4)
 
312
        self.assertEqual({5: 'k'}, c)
 
313
 
 
314
    def test_resize_larger(self):
 
315
        c = fifo_cache.FIFOSizeCache(10, 8)
 
316
        c[1] = 'a'
 
317
        c[2] = 'bc'
 
318
        c[3] = 'def'
 
319
        c[4] = 'ghij'
 
320
        c.resize(12, 10)
 
321
        self.assertEqual({1: 'a', 2: 'bc', 3: 'def', 4: 'ghij'}, c)
 
322
        c[5] = 'kl'
 
323
        self.assertEqual({1: 'a', 2: 'bc', 3: 'def', 4: 'ghij', 5: 'kl'}, c)
 
324
        c[6] = 'mn'
 
325
        self.assertEqual({4: 'ghij', 5: 'kl', 6: 'mn'}, c)