Mercurial > hg
view tests/test-lrucachedict.py @ 23396:6a254a2dd37c
merge: separate out "both created" cases
When 'f' is not in 'ma', 'a' will be 'nullid' and all the if/elif
conditions that check whether some one nodeid is equal to 'a' will
fail, and the else-clause will instead apply. We can make that more
explicit by creating a separate 'm' action for the case where 'a' is
'nullid'. While it does mean copying some code, perhaps it makes it a
little clearer which codepaths are possible, and which cases the
"Note:" in the code refers to. It also lets us make the debug action
messages a little more specific.
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Mon, 24 Nov 2014 16:16:34 -0800 |
parents | 887ffa22fd0d |
children | 45d996a566d7 |
line wrap: on
line source
from mercurial import util def printifpresent(d, xs): for x in xs: present = x in d print "'%s' in d: %s" % (x, present) if present: print "d['%s']: %s" % (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']) if __name__ == '__main__': test_lrucachedict()