Spaces:
Sleeping
Sleeping
File size: 2,137 Bytes
b510add | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | import unittest
from app import rules
VALID_QUALITY = {"image_quality": "valid", "quality_score": 0.95}
class TestRulesGate(unittest.TestCase):
def test_consistent_reading_succeeds(self):
parsed = {
"detected_liters": 14.28, "detected_amount": 10000.0, "fuel_price": 700.0,
"is_consistent": True, "ocr_confidence": 0.95, "raw_numbers": [("10000", 10000.0)],
}
gate = rules.evaluate(parsed, VALID_QUALITY, fuel_price=700.0)
self.assertTrue(gate["success"])
def test_blurry_image_blocks(self):
parsed = {"raw_numbers": [("1", 1.0)], "ocr_confidence": 0.9}
gate = rules.evaluate(parsed, {"image_quality": "blurry", "quality_score": 0.35})
self.assertFalse(gate["success"])
self.assertIn("floue", gate["message"])
def test_inconsistent_data_blocks(self):
parsed = {
"detected_liters": 20.0, "detected_amount": 10000.0, "fuel_price": 875.0,
"is_consistent": False, "ocr_confidence": 0.95, "raw_numbers": [("20", 20.0)],
}
gate = rules.evaluate(parsed, VALID_QUALITY, fuel_price=875.0)
self.assertFalse(gate["success"])
self.assertIn("Incohérence", gate["message"])
def test_missing_price_blocks(self):
parsed = {
"detected_liters": 20.0, "detected_amount": None, "fuel_price": None,
"is_consistent": None, "ocr_confidence": 0.9, "raw_numbers": [("20", 20.0)],
}
gate = rules.evaluate(parsed, VALID_QUALITY)
self.assertFalse(gate["success"])
self.assertIn("Prix du litre manquant", gate["message"])
def test_low_confidence_blocks(self):
parsed = {
"detected_liters": 14.28, "detected_amount": 10000.0, "fuel_price": 700.0,
"is_consistent": True, "ocr_confidence": 0.05, "raw_numbers": [("10000", 10000.0)],
}
gate = rules.evaluate(parsed, {"image_quality": "valid", "quality_score": 0.2}, fuel_price=700.0)
self.assertFalse(gate["success"])
self.assertIn("Confiance", gate["message"])
if __name__ == "__main__":
unittest.main()
|