def test_cache_usage(self): """Pattern cache is initialized and used correctly.""" self.dispatcher = OSCDispatcher([], self, 512) ci = self.dispatcher._get_pattern.cache_info self.assertEqual(ci().maxsize, 512) self.assertEqual(ci().currsize, 0) patterns = [(r'/foo$', 'i', 'handler1'), (r'/bar$', 'f', 'handler2')] self.dispatcher.add_patterns(patterns) self.dispatcher('/foo', (), 'i') self.assertEqual(ci().hits, 0) self.dispatcher('/bar', (2, ), 'f') self.assertEqual(ci().hits, 0) self.dispatcher('/foo', (), 'i') self.assertEqual(ci().hits, 1)
def test_cache_store(self): """Matched patterns are store in cache.""" self.dispatcher = OSCDispatcher([], self, 512) ci = self.dispatcher._get_pattern.cache_info self.assertEqual(ci().maxsize, 512) self.assertEqual(ci().currsize, 0) patterns = [(r'/foo$', 'i', 'handler1'), (r'/bar$', 'f', 'handler2')] self.dispatcher.add_patterns(patterns) self.dispatcher('/foo', (), 'i') self.assertEqual(ci().currsize, 1) self.dispatcher('/bar', (2, ), 'f') self.assertEqual(ci().currsize, 2) self.dispatcher('/foo', (), 'i') self.assertEqual(ci().currsize, 2) self.dispatcher('/foo', (), 'f') self.assertEqual(ci().currsize, 2) self.dispatcher('/baz', (), '') self.assertEqual(ci().currsize, 2)
def setUp(self): self.dispatchlog = [] self.dispatcher = OSCDispatcher(patterns=[], search_ns=self)