18603
|
1 from mercurial import util
|
|
2
|
|
3 def printifpresent(d, xs):
|
|
4 for x in xs:
|
|
5 present = x in d
|
|
6 print "'%s' in d: %s" % (x, present)
|
|
7 if present:
|
|
8 print "d['%s']: %s" % (x, d[x])
|
|
9
|
|
10 def test_lrucachedict():
|
|
11 d = util.lrucachedict(4)
|
|
12 d['a'] = 'va'
|
|
13 d['b'] = 'vb'
|
|
14 d['c'] = 'vc'
|
|
15 d['d'] = 'vd'
|
|
16
|
|
17 # all of these should be present
|
|
18 printifpresent(d, ['a', 'b', 'c', 'd'])
|
|
19
|
|
20 # 'a' should be dropped because it was least recently used
|
|
21 d['e'] = 've'
|
|
22 printifpresent(d, ['a', 'b', 'c', 'd', 'e'])
|
|
23
|
|
24 # touch entries in some order (get or set).
|
|
25 d['e']
|
|
26 d['c'] = 'vc2'
|
|
27 d['d']
|
|
28 d['b'] = 'vb2'
|
|
29
|
|
30 # 'e' should be dropped now
|
|
31 d['f'] = 'vf'
|
|
32 printifpresent(d, ['b', 'c', 'd', 'e', 'f'])
|
|
33
|
|
34 if __name__ == '__main__':
|
|
35 test_lrucachedict()
|