tests/test-lrucachedict.py
changeset 18603 2251b3184e6e
child 19710 887ffa22fd0d
equal deleted inserted replaced
18600:8ba520003ae0 18603:2251b3184e6e
       
     1 from mercurial import util
       
     2 
       
     3 def printifpresent(d, xs):
       
     4     for x in xs:
       
     5         present = x in d
       
     6         print "'%s' in d: %s" % (x, present)
       
     7         if present:
       
     8             print "d['%s']: %s" % (x, d[x])
       
     9 
       
    10 def test_lrucachedict():
       
    11     d = util.lrucachedict(4)
       
    12     d['a'] = 'va'
       
    13     d['b'] = 'vb'
       
    14     d['c'] = 'vc'
       
    15     d['d'] = 'vd'
       
    16 
       
    17     # all of these should be present
       
    18     printifpresent(d, ['a', 'b', 'c', 'd'])
       
    19 
       
    20     # 'a' should be dropped because it was least recently used
       
    21     d['e'] = 've'
       
    22     printifpresent(d, ['a', 'b', 'c', 'd', 'e'])
       
    23 
       
    24     # touch entries in some order (get or set).
       
    25     d['e']
       
    26     d['c'] = 'vc2'
       
    27     d['d']
       
    28     d['b'] = 'vb2'
       
    29 
       
    30     # 'e' should be dropped now
       
    31     d['f'] = 'vf'
       
    32     printifpresent(d, ['b', 'c', 'd', 'e', 'f'])
       
    33 
       
    34 if __name__ == '__main__':
       
    35     test_lrucachedict()