Mercurial > hg
view tests/test-lrucachedict.py @ 34980:705d0f2bb677 stable
pathutil: add doctests for canonpath()
This is a followup to f445b10dc7fb. Since there's no way to ensure that more
drive letters than C: exist, this seems like the only way to test it. This is
enough to catch the f445b10dc7fb scenario, as well as CWD outside of the repo
when the path isn't prefixed with path/to/repo.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Fri, 03 Nov 2017 22:22:50 -0400 |
parents | 79add5a4e857 |
children | 067f7d2c7d60 |
line wrap: on
line source
from __future__ import absolute_import, print_function 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']) assert d.get('a') is None assert d.get('e') == 've' # 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()