sapling/eden/scm/tests/test-lrucachedict.py
Xavier Deguillard 467f4aef45 tests: mark python3 tests as passing
Summary:
Ran ./run-tests.py --json and used the following script:

  import json
  import subprocess

  with open("report.json", "r") as f:
      tests = json.load(f)
      for name, t in tests.items():
          if t["result"] == "success":
              print("%s successful" % name)
              subprocess.run("sed -i '/#require py2/d' %s" % name, shell=True)
              subprocess.run("sed -i '/require.*py2/d' %s" % name, shell=True)

Reviewed By: singhsrb

Differential Revision: D19664298

fbshipit-source-id: fa67c7c7abd110c9f0df9345daf09f2792aacd44
2020-01-31 10:13:45 -08:00

80 lines
1.9 KiB
Python

from __future__ import absolute_import, print_function
from edenscm.mercurial import util
from hghave import require
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()