OLD | NEW |
| (Empty) |
1 # Copyright (C) 2011 Google Inc. All rights reserved. | |
2 # | |
3 # Redistribution and use in source and binary forms, with or without | |
4 # modification, are permitted provided that the following conditions are | |
5 # met: | |
6 # | |
7 # * Redistributions of source code must retain the above copyright | |
8 # notice, this list of conditions and the following disclaimer. | |
9 # * Redistributions in binary form must reproduce the above | |
10 # copyright notice, this list of conditions and the following disclaimer | |
11 # in the documentation and/or other materials provided with the | |
12 # distribution. | |
13 | |
14 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | |
15 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | |
16 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | |
17 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | |
18 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |
19 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |
20 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |
21 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | |
22 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
23 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | |
24 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
25 | |
26 | |
27 import unittest | |
28 | |
29 from webkitpy.common import lru_cache | |
30 | |
31 | |
32 class LRUCacheTest(unittest.TestCase): | |
33 | |
34 def setUp(self): | |
35 self.lru = lru_cache.LRUCache(3) | |
36 self.lru['key_1'] = 'item_1' | |
37 self.lru['key_2'] = 'item_2' | |
38 self.lru['key_3'] = 'item_3' | |
39 | |
40 self.lru2 = lru_cache.LRUCache(1) | |
41 self.lru2['key_1'] = 'item_1' | |
42 | |
43 def test_items(self): | |
44 self.assertEqual(set(self.lru.items()), set([('key_1', 'item_1'), ('key_
3', 'item_3'), ('key_2', 'item_2')])) | |
45 | |
46 def test_put(self): | |
47 self.lru['key_4'] = 'item_4' | |
48 self.assertEqual(set(self.lru.items()), set([('key_4', 'item_4'), ('key_
3', 'item_3'), ('key_2', 'item_2')])) | |
49 | |
50 def test_update(self): | |
51 self.lru['key_1'] | |
52 self.lru['key_5'] = 'item_5' | |
53 self.assertEqual(set(self.lru.items()), set([('key_1', 'item_1'), ('key_
3', 'item_3'), ('key_5', 'item_5')])) | |
54 | |
55 def test_keys(self): | |
56 self.assertEqual(set(self.lru.keys()), set(['key_1', 'key_2', 'key_3'])) | |
57 | |
58 def test_delete(self): | |
59 del self.lru['key_1'] | |
60 self.assertFalse('key_1' in self.lru) | |
61 | |
62 def test_contain(self): | |
63 self.assertTrue('key_1' in self.lru) | |
64 self.assertFalse('key_4' in self.lru) | |
65 | |
66 def test_values(self): | |
67 self.assertEqual(set(self.lru.values()), set(['item_1', 'item_2', 'item_
3'])) | |
68 | |
69 def test_len(self): | |
70 self.assertEqual(len(self.lru), 3) | |
71 | |
72 def test_size_one_pop(self): | |
73 self.lru2['key_2'] = 'item_2' | |
74 self.assertEqual(self.lru2.keys(), ['key_2']) | |
75 | |
76 def test_size_one_delete(self): | |
77 del self.lru2['key_1'] | |
78 self.assertFalse('key_1' in self.lru2) | |
79 | |
80 def test_pop_error(self): | |
81 self.assertRaises(KeyError, self.lru2.__getitem__, 'key_2') | |
82 del self.lru2['key_1'] | |
83 self.assertRaises(KeyError, self.lru2.__getitem__, 'key_2') | |
84 | |
85 def test_get_middle_item(self): | |
86 self.lru['key_2'] | |
87 self.lru['key_4'] = 'item_4' | |
88 self.lru['key_5'] = 'item_5' | |
89 self.assertEqual(set(self.lru.keys()), set(['key_2', 'key_4', 'key_5'])) | |
90 | |
91 def test_set_again(self): | |
92 self.lru['key_1'] = 'item_4' | |
93 self.assertEqual(set(self.lru.items()), set([('key_1', 'item_4'), ('key_
3', 'item_3'), ('key_2', 'item_2')])) | |
OLD | NEW |