test-lrucachedict.py
70 lines
| 1.7 KiB
| text/x-python
|
PythonLexer
/ tests / test-lrucachedict.py
Siddharth Agarwal
|
r18603 | from mercurial import util | ||
Eric Sumner
|
r27576 | def printifpresent(d, xs, name='d'): | ||
Siddharth Agarwal
|
r18603 | for x in xs: | ||
present = x in d | ||||
Eric Sumner
|
r27576 | print "'%s' in %s: %s" % (x, name, present) | ||
Siddharth Agarwal
|
r18603 | if present: | ||
Eric Sumner
|
r27576 | 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']) | ||||
# 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 | ||||
print "\nAll of these should be present:" | ||||
printifpresent(dc, ['a', 'b', 'c', 'd'], 'dc') | ||||
# 'a' should be dropped because it was least recently used | ||||
print "\nAll of these except 'a' should be present:" | ||||
dc['e'] = 've3' | ||||
printifpresent(dc, ['a', 'b', 'c', 'd', 'e'], 'dc') | ||||
# contents and order of original dict should remain unchanged | ||||
print "\nThese should be in reverse alphabetical order and read 'v?3':" | ||||
dc['b'] = 'vb3_new' | ||||
for k in list(iter(d)): | ||||
print "d['%s']: %s" % (k, d[k]) | ||||
Siddharth Agarwal
|
r18603 | if __name__ == '__main__': | ||
test_lrucachedict() | ||||