author | Kyle Lippincott <spectral@google.com> |
Sat, 20 Jan 2018 15:33:48 -0800 | |
changeset 35908 | a9802c9ecfb5 |
parent 29828 | 79add5a4e857 |
child 39562 | 067f7d2c7d60 |
permissions | -rw-r--r-- |
28931
ba0e4789bd2e
tests: make test-lrucachedict use print_function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28930
diff
changeset
|
1 |
from __future__ import absolute_import, print_function |
28930
e3f01188d439
tests: make test-lrucachedict use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
27576
diff
changeset
|
2 |
|
e3f01188d439
tests: make test-lrucachedict use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
27576
diff
changeset
|
3 |
from mercurial import ( |
e3f01188d439
tests: make test-lrucachedict use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
27576
diff
changeset
|
4 |
util, |
e3f01188d439
tests: make test-lrucachedict use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
27576
diff
changeset
|
5 |
) |
18603 | 6 |
|
27576
6cd3044985c2
lrucachedict: add copy method
Eric Sumner <ericsumner@fb.com>
parents:
27371
diff
changeset
|
7 |
def printifpresent(d, xs, name='d'): |
18603 | 8 |
for x in xs: |
9 |
present = x in d |
|
28931
ba0e4789bd2e
tests: make test-lrucachedict use print_function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28930
diff
changeset
|
10 |
print("'%s' in %s: %s" % (x, name, present)) |
18603 | 11 |
if present: |
28931
ba0e4789bd2e
tests: make test-lrucachedict use print_function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28930
diff
changeset
|
12 |
print("%s['%s']: %s" % (name, x, d[x])) |
18603 | 13 |
|
14 |
def test_lrucachedict(): |
|
15 |
d = util.lrucachedict(4) |
|
16 |
d['a'] = 'va' |
|
17 |
d['b'] = 'vb' |
|
18 |
d['c'] = 'vc' |
|
19 |
d['d'] = 'vd' |
|
20 |
||
21 |
# all of these should be present |
|
22 |
printifpresent(d, ['a', 'b', 'c', 'd']) |
|
23 |
||
24 |
# 'a' should be dropped because it was least recently used |
|
25 |
d['e'] = 've' |
|
26 |
printifpresent(d, ['a', 'b', 'c', 'd', 'e']) |
|
27 |
||
29828
79add5a4e857
util: properly implement lrucachedict.get()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28931
diff
changeset
|
28 |
assert d.get('a') is None |
79add5a4e857
util: properly implement lrucachedict.get()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28931
diff
changeset
|
29 |
assert d.get('e') == 've' |
79add5a4e857
util: properly implement lrucachedict.get()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28931
diff
changeset
|
30 |
|
18603 | 31 |
# touch entries in some order (get or set). |
32 |
d['e'] |
|
33 |
d['c'] = 'vc2' |
|
34 |
d['d'] |
|
35 |
d['b'] = 'vb2' |
|
36 |
||
37 |
# 'e' should be dropped now |
|
38 |
d['f'] = 'vf' |
|
39 |
printifpresent(d, ['b', 'c', 'd', 'e', 'f']) |
|
40 |
||
19710
887ffa22fd0d
lrucachedict: implement clear()
Siddharth Agarwal <sid0@fb.com>
parents:
18603
diff
changeset
|
41 |
d.clear() |
887ffa22fd0d
lrucachedict: implement clear()
Siddharth Agarwal <sid0@fb.com>
parents:
18603
diff
changeset
|
42 |
printifpresent(d, ['b', 'c', 'd', 'e', 'f']) |
887ffa22fd0d
lrucachedict: implement clear()
Siddharth Agarwal <sid0@fb.com>
parents:
18603
diff
changeset
|
43 |
|
27371
45d996a566d7
util: reimplement lrucachedict
Gregory Szorc <gregory.szorc@gmail.com>
parents:
19710
diff
changeset
|
44 |
# Now test dicts that aren't full. |
45d996a566d7
util: reimplement lrucachedict
Gregory Szorc <gregory.szorc@gmail.com>
parents:
19710
diff
changeset
|
45 |
d = util.lrucachedict(4) |
45d996a566d7
util: reimplement lrucachedict
Gregory Szorc <gregory.szorc@gmail.com>
parents:
19710
diff
changeset
|
46 |
d['a'] = 1 |
45d996a566d7
util: reimplement lrucachedict
Gregory Szorc <gregory.szorc@gmail.com>
parents:
19710
diff
changeset
|
47 |
d['b'] = 2 |
45d996a566d7
util: reimplement lrucachedict
Gregory Szorc <gregory.szorc@gmail.com>
parents:
19710
diff
changeset
|
48 |
d['a'] |
45d996a566d7
util: reimplement lrucachedict
Gregory Szorc <gregory.szorc@gmail.com>
parents:
19710
diff
changeset
|
49 |
d['b'] |
45d996a566d7
util: reimplement lrucachedict
Gregory Szorc <gregory.szorc@gmail.com>
parents:
19710
diff
changeset
|
50 |
printifpresent(d, ['a', 'b']) |
45d996a566d7
util: reimplement lrucachedict
Gregory Szorc <gregory.szorc@gmail.com>
parents:
19710
diff
changeset
|
51 |
|
27576
6cd3044985c2
lrucachedict: add copy method
Eric Sumner <ericsumner@fb.com>
parents:
27371
diff
changeset
|
52 |
# test copy method |
6cd3044985c2
lrucachedict: add copy method
Eric Sumner <ericsumner@fb.com>
parents:
27371
diff
changeset
|
53 |
d = util.lrucachedict(4) |
6cd3044985c2
lrucachedict: add copy method
Eric Sumner <ericsumner@fb.com>
parents:
27371
diff
changeset
|
54 |
d['a'] = 'va3' |
6cd3044985c2
lrucachedict: add copy method
Eric Sumner <ericsumner@fb.com>
parents:
27371
diff
changeset
|
55 |
d['b'] = 'vb3' |
6cd3044985c2
lrucachedict: add copy method
Eric Sumner <ericsumner@fb.com>
parents:
27371
diff
changeset
|
56 |
d['c'] = 'vc3' |
6cd3044985c2
lrucachedict: add copy method
Eric Sumner <ericsumner@fb.com>
parents:
27371
diff
changeset
|
57 |
d['d'] = 'vd3' |
6cd3044985c2
lrucachedict: add copy method
Eric Sumner <ericsumner@fb.com>
parents:
27371
diff
changeset
|
58 |
|
6cd3044985c2
lrucachedict: add copy method
Eric Sumner <ericsumner@fb.com>
parents:
27371
diff
changeset
|
59 |
dc = d.copy() |
6cd3044985c2
lrucachedict: add copy method
Eric Sumner <ericsumner@fb.com>
parents:
27371
diff
changeset
|
60 |
|
6cd3044985c2
lrucachedict: add copy method
Eric Sumner <ericsumner@fb.com>
parents:
27371
diff
changeset
|
61 |
# all of these should be present |
28931
ba0e4789bd2e
tests: make test-lrucachedict use print_function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28930
diff
changeset
|
62 |
print("\nAll of these should be present:") |
27576
6cd3044985c2
lrucachedict: add copy method
Eric Sumner <ericsumner@fb.com>
parents:
27371
diff
changeset
|
63 |
printifpresent(dc, ['a', 'b', 'c', 'd'], 'dc') |
6cd3044985c2
lrucachedict: add copy method
Eric Sumner <ericsumner@fb.com>
parents:
27371
diff
changeset
|
64 |
|
6cd3044985c2
lrucachedict: add copy method
Eric Sumner <ericsumner@fb.com>
parents:
27371
diff
changeset
|
65 |
# 'a' should be dropped because it was least recently used |
28931
ba0e4789bd2e
tests: make test-lrucachedict use print_function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28930
diff
changeset
|
66 |
print("\nAll of these except 'a' should be present:") |
27576
6cd3044985c2
lrucachedict: add copy method
Eric Sumner <ericsumner@fb.com>
parents:
27371
diff
changeset
|
67 |
dc['e'] = 've3' |
6cd3044985c2
lrucachedict: add copy method
Eric Sumner <ericsumner@fb.com>
parents:
27371
diff
changeset
|
68 |
printifpresent(dc, ['a', 'b', 'c', 'd', 'e'], 'dc') |
6cd3044985c2
lrucachedict: add copy method
Eric Sumner <ericsumner@fb.com>
parents:
27371
diff
changeset
|
69 |
|
6cd3044985c2
lrucachedict: add copy method
Eric Sumner <ericsumner@fb.com>
parents:
27371
diff
changeset
|
70 |
# contents and order of original dict should remain unchanged |
28931
ba0e4789bd2e
tests: make test-lrucachedict use print_function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28930
diff
changeset
|
71 |
print("\nThese should be in reverse alphabetical order and read 'v?3':") |
27576
6cd3044985c2
lrucachedict: add copy method
Eric Sumner <ericsumner@fb.com>
parents:
27371
diff
changeset
|
72 |
dc['b'] = 'vb3_new' |
6cd3044985c2
lrucachedict: add copy method
Eric Sumner <ericsumner@fb.com>
parents:
27371
diff
changeset
|
73 |
for k in list(iter(d)): |
28931
ba0e4789bd2e
tests: make test-lrucachedict use print_function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28930
diff
changeset
|
74 |
print("d['%s']: %s" % (k, d[k])) |
27576
6cd3044985c2
lrucachedict: add copy method
Eric Sumner <ericsumner@fb.com>
parents:
27371
diff
changeset
|
75 |
|
18603 | 76 |
if __name__ == '__main__': |
77 |
test_lrucachedict() |