##// END OF EJS Templates
revset: lookup descendents for negative arguments to ancestor operator...
revset: lookup descendents for negative arguments to ancestor operator Negative offsets to the `~` operator now search for descendents. The search is aborted when a node has more than one child as we do not have a definition for 'nth child'. Optionally we can introduce such a notion and take the nth child ordered by rev number. The current revset language does provides a short operator for ancestor lookup but not for descendents. This gives user a simple revset to move to the previous changeset, e.g. `hg up '.~1'` but not to the 'next' changeset. With this change userse can now use `.~-1` as a shortcut to move to the next changeset. This fits better into allowing users to specify revisions via revsets and avoiding the need for special `hg next` and `hg prev` operations. The alternative to negative offsets is adding a new operator. We do not have many operators in ascii left that do not require bash escaping (',', '_', and '/' come to mind). If we decide that we should add a more convenient short operator such as ('/', e.g. './1') we can later add it and allow ascendents lookup via negative numbers.

File last commit:

r29828:79add5a4 default
r32699:f75d0aa5 default
Show More
test-lrucachedict.py
77 lines | 1.9 KiB | text/x-python | PythonLexer
/ tests / test-lrucachedict.py
Pulkit Goyal
tests: make test-lrucachedict use print_function
r28931 from __future__ import absolute_import, print_function
Pulkit Goyal
tests: make test-lrucachedict use absolute_import
r28930
from mercurial import (
util,
)
Siddharth Agarwal
util: add an LRU cache dict...
r18603
Eric Sumner
lrucachedict: add copy method...
r27576 def printifpresent(d, xs, name='d'):
Siddharth Agarwal
util: add an LRU cache dict...
r18603 for x in xs:
present = x in d
Pulkit Goyal
tests: make test-lrucachedict use print_function
r28931 print("'%s' in %s: %s" % (x, name, present))
Siddharth Agarwal
util: add an LRU cache dict...
r18603 if present:
Pulkit Goyal
tests: make test-lrucachedict use print_function
r28931 print("%s['%s']: %s" % (name, x, d[x]))
Siddharth Agarwal
util: add an LRU cache dict...
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
util: properly implement lrucachedict.get()...
r29828 assert d.get('a') is None
assert d.get('e') == 've'
Siddharth Agarwal
util: add an LRU cache dict...
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
lrucachedict: implement clear()
r19710 d.clear()
printifpresent(d, ['b', 'c', 'd', 'e', 'f'])
Gregory Szorc
util: reimplement lrucachedict...
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
lrucachedict: add copy method...
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
tests: make test-lrucachedict use print_function
r28931 print("\nAll of these should be present:")
Eric Sumner
lrucachedict: add copy method...
r27576 printifpresent(dc, ['a', 'b', 'c', 'd'], 'dc')
# 'a' should be dropped because it was least recently used
Pulkit Goyal
tests: make test-lrucachedict use print_function
r28931 print("\nAll of these except 'a' should be present:")
Eric Sumner
lrucachedict: add copy method...
r27576 dc['e'] = 've3'
printifpresent(dc, ['a', 'b', 'c', 'd', 'e'], 'dc')
# contents and order of original dict should remain unchanged
Pulkit Goyal
tests: make test-lrucachedict use print_function
r28931 print("\nThese should be in reverse alphabetical order and read 'v?3':")
Eric Sumner
lrucachedict: add copy method...
r27576 dc['b'] = 'vb3_new'
for k in list(iter(d)):
Pulkit Goyal
tests: make test-lrucachedict use print_function
r28931 print("d['%s']: %s" % (k, d[k]))
Eric Sumner
lrucachedict: add copy method...
r27576
Siddharth Agarwal
util: add an LRU cache dict...
r18603 if __name__ == '__main__':
test_lrucachedict()