Spaces:
Sleeping
Sleeping
| 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() | |