Skip to content

Commit 441e24a

Browse files
committed
more test
1 parent 2d9ce2a commit 441e24a

File tree

1 file changed

+53
-6
lines changed

1 file changed

+53
-6
lines changed

tests.py

Lines changed: 53 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
import unittest
22
import random
33
import string
4+
import uuid
5+
import sys
6+
import gc
47
from datetime import datetime, timedelta
58

69
import ctools
@@ -46,23 +49,67 @@ def test_strhash(self):
4649
for i in range(1024):
4750
self.assertEqual(ctools.strhash(s), a)
4851

49-
def test_lfu(self):
52+
53+
class LFUTest(unittest.TestCase):
54+
def test_get_set(self):
5055
d = ctools.LFUCache(2)
5156
d['a'] = 1
5257
d['c'] = 2
5358
d['e'] = 3
5459
self.assertEqual(len(d), 2)
5560

56-
for i in range(1024):
61+
for i in range(10):
5762
self.assertEqual(d['c'], 2)
5863

5964
self.assertEqual(d.lfu(), "e")
6065

61-
d.set_capacity(1024)
62-
for i in range(2048):
63-
d[random.random()] = random.random()
66+
def test_len(self):
67+
for m in range(254, 1024):
68+
d = ctools.LFUCache(m)
69+
for i in range(m+1):
70+
d[str(i)] = str(i)
71+
72+
self.assertEqual(len(d), m)
73+
74+
def assert_ref_equal(self, lfu_cache, lkey, d, dkey):
75+
ltmp = lfu_cache[lkey]
76+
dtmp = d[dkey]
77+
self.assertEqual(sys.getrefcount(ltmp), sys.getrefcount(dtmp))
78+
79+
del lfu_cache[lkey]
80+
del d[dkey]
81+
self.assertEqual(sys.getrefcount(ltmp), sys.getrefcount(dtmp))
82+
83+
del d
84+
del lfu_cache
85+
self.assertEqual(sys.getrefcount(ltmp), sys.getrefcount(dtmp))
86+
87+
def set_random(self, dlike):
88+
key = str(uuid.uuid1())
89+
val = str(uuid.uuid1())
90+
dlike[key] = val
91+
return key
92+
93+
def test_one_ref_eq(self):
94+
lfu_cache = ctools.LFUCache(10)
95+
d = {}
96+
97+
lkey = self.set_random(lfu_cache)
98+
dkey = self.set_random(d)
99+
100+
self.assert_ref_equal(lfu_cache, lkey, d, dkey)
101+
102+
def test_many_ref_eq(self):
103+
lfu_cache = ctools.LFUCache(257)
104+
d = {}
105+
for i in range(1024):
106+
self.set_random(lfu_cache)
107+
self.set_random(d)
64108

65-
self.assertEqual(len(d), 1024)
109+
for i in range(len(lfu_cache)):
110+
lkey = list(lfu_cache.keys())[i]
111+
dkey = list(d.keys())[i]
112+
self.assert_ref_equal(lfu_cache, lkey, d, dkey)
66113

67114

68115
if __name__ == '__main__':

0 commit comments

Comments
 (0)