Mercurial > hg
annotate tests/test-lrucachedict.py @ 30632:1d0e4832e616
convert: parse perforce data on-demand
We are using read-only attributes that parse the perforce data on
demand. We are reading the data only once whenever an attribute is
requested and use it throughout the import process. This is equivalent
to the previous behavior, but we are avoiding reading from perforce when
we initialize the object, but instead run it during the actual import
process, when the first attribute is requested (usually getheads(), see
`convertcmd.convert`).
author | David Soria Parra <davidsp@fb.com> |
---|---|
date | Tue, 20 Dec 2016 09:23:50 -0800 |
parents | 79add5a4e857 |
children | 067f7d2c7d60 |
rev | line source |
---|---|
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() |