##// END OF EJS Templates
tests: fix builtin module test on pypy...
tests: fix builtin module test on pypy On pypy datetime and cProfile are modules written in Python, not in C. For the purpose of this test, just list them explicitely as builtins, which silences warnings about them being imported before stdlib modules.

File last commit:

r27576:6cd30449 default
r28713:806d260c default
Show More
test-lrucachedict.py
70 lines | 1.7 KiB | text/x-python | PythonLexer
/ tests / test-lrucachedict.py
from mercurial import util
def printifpresent(d, xs, name='d'):
for x in xs:
present = x in d
print "'%s' in %s: %s" % (x, name, present)
if present:
print "%s['%s']: %s" % (name, x, d[x])
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'])
d.clear()
printifpresent(d, ['b', 'c', 'd', 'e', 'f'])
# 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'])
# 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])
if __name__ == '__main__':
test_lrucachedict()