author | Laurent Charignon <lcharignon@fb.com> |
Fri, 18 Dec 2015 13:45:55 -0800 | |
changeset 27439 | ed003859f1d8 |
parent 27371 | 45d996a566d7 |
child 27576 | 6cd3044985c2 |
permissions | -rw-r--r-- |
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 |
||
19710
887ffa22fd0d
lrucachedict: implement clear()
Siddharth Agarwal <sid0@fb.com>
parents:
18603
diff
changeset
|
34 |
d.clear() |
887ffa22fd0d
lrucachedict: implement clear()
Siddharth Agarwal <sid0@fb.com>
parents:
18603
diff
changeset
|
35 |
printifpresent(d, ['b', 'c', 'd', 'e', 'f']) |
887ffa22fd0d
lrucachedict: implement clear()
Siddharth Agarwal <sid0@fb.com>
parents:
18603
diff
changeset
|
36 |
|
27371
45d996a566d7
util: reimplement lrucachedict
Gregory Szorc <gregory.szorc@gmail.com>
parents:
19710
diff
changeset
|
37 |
# Now test dicts that aren't full. |
45d996a566d7
util: reimplement lrucachedict
Gregory Szorc <gregory.szorc@gmail.com>
parents:
19710
diff
changeset
|
38 |
d = util.lrucachedict(4) |
45d996a566d7
util: reimplement lrucachedict
Gregory Szorc <gregory.szorc@gmail.com>
parents:
19710
diff
changeset
|
39 |
d['a'] = 1 |
45d996a566d7
util: reimplement lrucachedict
Gregory Szorc <gregory.szorc@gmail.com>
parents:
19710
diff
changeset
|
40 |
d['b'] = 2 |
45d996a566d7
util: reimplement lrucachedict
Gregory Szorc <gregory.szorc@gmail.com>
parents:
19710
diff
changeset
|
41 |
d['a'] |
45d996a566d7
util: reimplement lrucachedict
Gregory Szorc <gregory.szorc@gmail.com>
parents:
19710
diff
changeset
|
42 |
d['b'] |
45d996a566d7
util: reimplement lrucachedict
Gregory Szorc <gregory.szorc@gmail.com>
parents:
19710
diff
changeset
|
43 |
printifpresent(d, ['a', 'b']) |
45d996a566d7
util: reimplement lrucachedict
Gregory Szorc <gregory.szorc@gmail.com>
parents:
19710
diff
changeset
|
44 |
|
18603 | 45 |
if __name__ == '__main__': |
46 |
test_lrucachedict() |