annotate tests/test-lrucachedict.py @ 36705:c6901665cd5b

py3: make sure __repr__ returns a str # skip-blame because just r'' prefix Differential Revision: https://phab.mercurial-scm.org/D2652
author Pulkit Goyal <7895pulkit@gmail.com>
date Sun, 04 Mar 2018 22:40:33 +0530
parents 79add5a4e857
children 067f7d2c7d60
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
2251b3184e6e util: add an LRU cache dict
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
6
27576
6cd3044985c2 lrucachedict: add copy method
Eric Sumner <ericsumner@fb.com>
parents: 27371
diff changeset
7 def printifpresent(d, xs, name='d'):
18603
2251b3184e6e util: add an LRU cache dict
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
8 for x in xs:
2251b3184e6e util: add an LRU cache dict
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
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
2251b3184e6e util: add an LRU cache dict
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
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
2251b3184e6e util: add an LRU cache dict
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
13
2251b3184e6e util: add an LRU cache dict
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
14 def test_lrucachedict():
2251b3184e6e util: add an LRU cache dict
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
15 d = util.lrucachedict(4)
2251b3184e6e util: add an LRU cache dict
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
16 d['a'] = 'va'
2251b3184e6e util: add an LRU cache dict
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
17 d['b'] = 'vb'
2251b3184e6e util: add an LRU cache dict
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
18 d['c'] = 'vc'
2251b3184e6e util: add an LRU cache dict
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
19 d['d'] = 'vd'
2251b3184e6e util: add an LRU cache dict
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
20
2251b3184e6e util: add an LRU cache dict
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
21 # all of these should be present
2251b3184e6e util: add an LRU cache dict
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
22 printifpresent(d, ['a', 'b', 'c', 'd'])
2251b3184e6e util: add an LRU cache dict
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
23
2251b3184e6e util: add an LRU cache dict
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
24 # 'a' should be dropped because it was least recently used
2251b3184e6e util: add an LRU cache dict
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
25 d['e'] = 've'
2251b3184e6e util: add an LRU cache dict
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
26 printifpresent(d, ['a', 'b', 'c', 'd', 'e'])
2251b3184e6e util: add an LRU cache dict
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
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
2251b3184e6e util: add an LRU cache dict
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
31 # touch entries in some order (get or set).
2251b3184e6e util: add an LRU cache dict
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
32 d['e']
2251b3184e6e util: add an LRU cache dict
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
33 d['c'] = 'vc2'
2251b3184e6e util: add an LRU cache dict
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
34 d['d']
2251b3184e6e util: add an LRU cache dict
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
35 d['b'] = 'vb2'
2251b3184e6e util: add an LRU cache dict
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
36
2251b3184e6e util: add an LRU cache dict
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
37 # 'e' should be dropped now
2251b3184e6e util: add an LRU cache dict
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
38 d['f'] = 'vf'
2251b3184e6e util: add an LRU cache dict
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
39 printifpresent(d, ['b', 'c', 'd', 'e', 'f'])
2251b3184e6e util: add an LRU cache dict
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
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
2251b3184e6e util: add an LRU cache dict
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
76 if __name__ == '__main__':
2251b3184e6e util: add an LRU cache dict
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
77 test_lrucachedict()