@@ -689,6 +689,46 @@ class OcrCacheTests(unittest.TestCase):
|
||||
self.assertEqual(engine.last_cache_hits, 0)
|
||||
self.assertEqual(engine.last_cache_misses, 1)
|
||||
|
||||
def test_antialias_drift_reuses_visual_signature_cache(self):
|
||||
engine = MODULE.OcrEngine.__new__(MODULE.OcrEngine)
|
||||
bubble = MODULE.Bubble(50, 60, 132, 40, 5000)
|
||||
first = MODULE.Image.new("RGB", (300, 180), (238, 238, 240))
|
||||
second = MODULE.Image.new("RGB", (300, 180), (242, 242, 244))
|
||||
first.putpixel((70, 75), (20, 20, 20))
|
||||
second.putpixel((70, 75), (35, 35, 35))
|
||||
|
||||
with mock.patch.object(
|
||||
engine,
|
||||
"_recognize_bubble",
|
||||
return_value=self.message(60),
|
||||
) as recognize:
|
||||
engine.recognize_messages(first, [bubble])
|
||||
messages, _ = engine.recognize_messages(second, [bubble])
|
||||
|
||||
self.assertEqual(recognize.call_count, 1)
|
||||
self.assertEqual(len(messages), 1)
|
||||
self.assertEqual(engine.last_cache_hits, 1)
|
||||
self.assertEqual(engine.last_cache_misses, 0)
|
||||
|
||||
def test_unrecognized_bubble_reuses_negative_cache(self):
|
||||
engine = MODULE.OcrEngine.__new__(MODULE.OcrEngine)
|
||||
image = MODULE.Image.new("RGB", (300, 180), "white")
|
||||
bubble = MODULE.Bubble(50, 60, 132, 40, 5000)
|
||||
|
||||
with mock.patch.object(
|
||||
engine,
|
||||
"_recognize_bubble",
|
||||
return_value=None,
|
||||
) as recognize:
|
||||
first_messages, _ = engine.recognize_messages(image, [bubble])
|
||||
second_messages, _ = engine.recognize_messages(image, [bubble])
|
||||
|
||||
self.assertEqual(first_messages, [])
|
||||
self.assertEqual(second_messages, [])
|
||||
self.assertEqual(recognize.call_count, 1)
|
||||
self.assertEqual(engine.last_cache_hits, 1)
|
||||
self.assertEqual(engine.last_cache_misses, 0)
|
||||
|
||||
def test_periodic_refresh_revalidates_cached_bubbles(self):
|
||||
engine = MODULE.OcrEngine.__new__(MODULE.OcrEngine)
|
||||
image = MODULE.Image.new("RGB", (300, 180), "white")
|
||||
|
||||
Reference in New Issue
Block a user