diff options
author | Jay Hutchinson <jlhutch@gmail.com> | 2010-08-27 00:13:59 -0500 |
---|---|---|
committer | Jay Hutchinson <jlhutch@gmail.com> | 2010-08-27 00:13:59 -0500 |
commit | 0a454f67a904ce49c9adf1bb6dfb8b3d25b73b5b (patch) | |
tree | 5e3d9d53e2e5f4f8fd331ef0f57bef090d3ad035 | |
parent | cf4aa9dc197cb15bcd82704b073fecb51ea0d89b (diff) | |
download | pylru-0a454f67a904ce49c9adf1bb6dfb8b3d25b73b5b.tar.gz |
Added context manager to lruwrap.
-rw-r--r-- | lru.py | 6 | ||||
-rw-r--r-- | test.py | 29 |
2 files changed, 34 insertions, 1 deletions
@@ -328,8 +328,12 @@ class lruwrap(object): self.store[key] = value self.dirty.clear() - def __del__(self): + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_val, exc_tb): self.sync() + return False class lrudecorator(object): @@ -150,6 +150,34 @@ def wraptest2(): tmp2 = None assert tmp1 == tmp2 + + +def wraptest3(): + import random + + q = dict() + with lruwrap(q, 32, True) as x: + for i in range(256): + a = random.randint(0, 256) + b = random.randint(0, 256) + + x[a] = b + + for i in range(512): + a = random.randint(0, 256) + tmp1 = None + tmp2 = None + try: + tmp1 = x[a] + except KeyError: + tmp1 = None + + try: + tmp2 = q[a] + except KeyError: + tmp2 = None + + assert tmp1 == tmp2 @lrudecorator(14) @@ -161,6 +189,7 @@ if __name__ == '__main__': wraptest() wraptest2() + wraptest3() for i in range(300): x = random.randint(0, 25) |