test-lrucachedict.py
77 lines
| 1.9 KiB
| text/x-python
|
PythonLexer
/ tests / test-lrucachedict.py
Pulkit Goyal
|
r28931 | from __future__ import absolute_import, print_function | ||
Pulkit Goyal
|
r28930 | |||
from mercurial import ( | ||||
util, | ||||
) | ||||
Siddharth Agarwal
|
r18603 | |||
Eric Sumner
|
r27576 | def printifpresent(d, xs, name='d'): | ||
Siddharth Agarwal
|
r18603 | for x in xs: | ||
present = x in d | ||||
Pulkit Goyal
|
r28931 | print("'%s' in %s: %s" % (x, name, present)) | ||
Siddharth Agarwal
|
r18603 | if present: | ||
Pulkit Goyal
|
r28931 | print("%s['%s']: %s" % (name, x, d[x])) | ||
Siddharth Agarwal
|
r18603 | |||
def test_lrucachedict(): | ||||
d = util.lrucachedict(4) | ||||
d['a'] = 'va' | ||||
d['b'] = 'vb' | ||||
d['c'] = 'vc' | ||||
d['d'] = 'vd' | ||||
# all of these should be present | ||||
printifpresent(d, ['a', 'b', 'c', 'd']) | ||||
# 'a' should be dropped because it was least recently used | ||||
d['e'] = 've' | ||||
printifpresent(d, ['a', 'b', 'c', 'd', 'e']) | ||||
Gregory Szorc
|
r29828 | assert d.get('a') is None | ||
assert d.get('e') == 've' | ||||
Siddharth Agarwal
|
r18603 | # touch entries in some order (get or set). | ||
d['e'] | ||||
d['c'] = 'vc2' | ||||
d['d'] | ||||
d['b'] = 'vb2' | ||||
# 'e' should be dropped now | ||||
d['f'] = 'vf' | ||||
printifpresent(d, ['b', 'c', 'd', 'e', 'f']) | ||||
Siddharth Agarwal
|
r19710 | d.clear() | ||
printifpresent(d, ['b', 'c', 'd', 'e', 'f']) | ||||
Gregory Szorc
|
r27371 | # Now test dicts that aren't full. | ||
d = util.lrucachedict(4) | ||||
d['a'] = 1 | ||||
d['b'] = 2 | ||||
d['a'] | ||||
d['b'] | ||||
printifpresent(d, ['a', 'b']) | ||||
Eric Sumner
|
r27576 | # test copy method | ||
d = util.lrucachedict(4) | ||||
d['a'] = 'va3' | ||||
d['b'] = 'vb3' | ||||
d['c'] = 'vc3' | ||||
d['d'] = 'vd3' | ||||
dc = d.copy() | ||||
# all of these should be present | ||||
Pulkit Goyal
|
r28931 | print("\nAll of these should be present:") | ||
Eric Sumner
|
r27576 | printifpresent(dc, ['a', 'b', 'c', 'd'], 'dc') | ||
# 'a' should be dropped because it was least recently used | ||||
Pulkit Goyal
|
r28931 | print("\nAll of these except 'a' should be present:") | ||
Eric Sumner
|
r27576 | dc['e'] = 've3' | ||
printifpresent(dc, ['a', 'b', 'c', 'd', 'e'], 'dc') | ||||
# contents and order of original dict should remain unchanged | ||||
Pulkit Goyal
|
r28931 | print("\nThese should be in reverse alphabetical order and read 'v?3':") | ||
Eric Sumner
|
r27576 | dc['b'] = 'vb3_new' | ||
for k in list(iter(d)): | ||||
Pulkit Goyal
|
r28931 | print("d['%s']: %s" % (k, d[k])) | ||
Eric Sumner
|
r27576 | |||
Siddharth Agarwal
|
r18603 | if __name__ == '__main__': | ||
test_lrucachedict() | ||||