Edgewall Software

source: trunk/genshi/tests/util.py

Last change on this file was 1077, checked in by cmlenz, 14 years ago

More work on reducing the size of the diff produced by 2to3.

  • Property svn:eol-style set to native
File size: 3.0 KB
Line 
1# -*- coding: utf-8 -*-
2#
3# Copyright (C) 2006,2009 Edgewall Software
4# All rights reserved.
5#
6# This software is licensed as described in the file COPYING, which
7# you should have received as part of this distribution. The terms
8# are also available at http://genshi.edgewall.org/wiki/License.
9#
10# This software consists of voluntary contributions made by many
11# individuals. For the exact contribution history, see the revision
12# history and logs, available at http://genshi.edgewall.org/log/.
13
14import doctest
15import unittest
16
17from genshi import util
18from genshi.util import LRUCache
19
20
21class LRUCacheTestCase(unittest.TestCase):
22
23    def test_setitem(self):
24        cache = LRUCache(2)
25        cache['A'] = 0
26        self.assertEqual(1, len(cache))
27        self.assertEqual('A', cache.head.key)
28        self.assertEqual('A', cache.tail.key)
29        item_a = cache._dict['A']
30        self.assertEqual('A', item_a.key)
31        self.assertEqual(0, item_a.value)
32        self.assertEqual(None, item_a.prv)
33        self.assertEqual(None, item_a.nxt)
34
35        cache['B'] = 1
36        self.assertEqual(2, len(cache))
37        self.assertEqual('B', cache.head.key)
38        self.assertEqual('A', cache.tail.key)
39        item_a = cache._dict['A']
40        item_b = cache._dict['B']
41        self.assertEqual('A', item_a.key)
42        self.assertEqual(0, item_a.value)
43        self.assertEqual(item_b, item_a.prv)
44        self.assertEqual(None, item_a.nxt)
45        self.assertEqual('B', item_b.key)
46        self.assertEqual(1, item_b.value)
47        self.assertEqual(None, item_b.prv)
48        self.assertEqual(item_a, item_b.nxt)
49
50        cache['C'] = 2
51        self.assertEqual(2, len(cache))
52        self.assertEqual('C', cache.head.key)
53        self.assertEqual('B', cache.tail.key)
54        item_b = cache._dict['B']
55        item_c = cache._dict['C']
56        self.assertEqual('B', item_b.key)
57        self.assertEqual(1, item_b.value)
58        self.assertEqual(item_c, item_b.prv)
59        self.assertEqual(None, item_b.nxt)
60        self.assertEqual('C', item_c.key)
61        self.assertEqual(2, item_c.value)
62        self.assertEqual(None, item_c.prv)
63        self.assertEqual(item_b, item_c.nxt)
64
65    def test_getitem(self):
66        cache = LRUCache(2)
67        cache['A'] = 0
68        cache['B'] = 1
69
70        cache['A']
71
72        self.assertEqual(2, len(cache))
73        self.assertEqual('A', cache.head.key)
74        self.assertEqual('B', cache.tail.key)
75        item_a = cache._dict['A']
76        item_b = cache._dict['B']
77        self.assertEqual('A', item_a.key)
78        self.assertEqual(0, item_a.value)
79        self.assertEqual(None, item_a.prv)
80        self.assertEqual(item_b, item_a.nxt)
81        self.assertEqual('B', item_b.key)
82        self.assertEqual(1, item_b.value)
83        self.assertEqual(item_a, item_b.prv)
84        self.assertEqual(None, item_b.nxt)
85
86
87def suite():
88    suite = unittest.TestSuite()
89    suite.addTest(doctest.DocTestSuite(util))
90    suite.addTest(unittest.makeSuite(LRUCacheTestCase, 'test'))
91    return suite
92
93if __name__ == '__main__':
94    unittest.main(defaultTest='suite')
Note: See TracBrowser for help on using the repository browser.