view tests/test-lrucachedict.py @ 27985:79139c7a88bd

revert: makes interactive mode ask to forget added files (issue4936) Before this patch revert interactive mode unconditionally forgets added files. This patch fixes this by asking user if he wants to forget added file. If user doesn't want to forget given file, it is added to matcher_opts exclude list, to not reviewing it later with other modified files.
author liscju <piotr.listkiewicz@gmail.com>
date Fri, 05 Feb 2016 15:18:40 +0100
parents 6cd3044985c2
children e3f01188d439
line wrap: on
line source

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()