From 070c478c0c768a1cf94a0964c594a03a4e520f8d Mon Sep 17 00:00:00 2001 From: ?ukasz Langa Date: Fri, 31 May 2013 12:48:16 +0200 Subject: update to the ref implementation as of 31-May-2013 * calls to `dispatch()` also cached * dispatching algorithm now now a module-level routine called `_find_impl()` with a simplified implementation and proper documentation * `dispatch()` now handles all caching-related activities * terminology more consisntent: "overload" -> "implementation" --- test_singledispatch.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'test_singledispatch.py') diff --git a/test_singledispatch.py b/test_singledispatch.py index 0234de3..3f243a9 100644 --- a/test_singledispatch.py +++ b/test_singledispatch.py @@ -307,12 +307,14 @@ class TestSingleDispatch(unittest.TestCase): self.assertEqual(len(td), 1) self.assertEqual(td.get_ops, [list, dict]) self.assertEqual(td.set_ops, [dict, list, dict]) - self.assertEqual(td.data[dict], g.dispatch(dict)) + self.assertEqual(td.data[dict], + functools._find_impl(dict, g.registry)) self.assertEqual(g(l), "list") self.assertEqual(len(td), 2) self.assertEqual(td.get_ops, [list, dict]) self.assertEqual(td.set_ops, [dict, list, dict, list]) - self.assertEqual(td.data[list], g.dispatch(list)) + self.assertEqual(td.data[list], + functools._find_impl(list, g.registry)) class X: pass c.MutableMapping.register(X) # Will not invalidate the cache, @@ -335,6 +337,11 @@ class TestSingleDispatch(unittest.TestCase): self.assertEqual(g(d), "sized") self.assertEqual(td.get_ops, [list, dict, dict, list, list, dict]) self.assertEqual(td.set_ops, [dict, list, dict, list, dict, list]) + g.dispatch(list) + g.dispatch(dict) + self.assertEqual(td.get_ops, [list, dict, dict, list, list, dict, + list, dict]) + self.assertEqual(td.set_ops, [dict, list, dict, list, dict, list]) c.MutableSet.register(X) # Will invalidate the cache. self.assertEqual(len(td), 2) # Stale cache. self.assertEqual(g(l), "list") @@ -348,6 +355,8 @@ class TestSingleDispatch(unittest.TestCase): g.register(dict, lambda arg: "dict") self.assertEqual(g(d), "dict") self.assertEqual(g(l), "list") + g._clear_cache() + self.assertEqual(len(td), 0) functools.WeakKeyDictionary = _orig_wkd -- cgit v1.2.1