cropintel / tests /test_quality_checks.py
Jaithra Polavarapu
CropIntel — HF Space deploy (all-in-one app)
889dd1b
Raw
History Blame Contribute Delete
1.43 kB
"""Image quality validation — message strings are part of the API contract:
app/api/predict/route.ts string-matches them to map errors to HTTP 400."""
from ml.inference.postprocess import validate_image_quality
def test_good_image_passes(green_leaf_image):
ok, message, metrics = validate_image_quality(green_leaf_image)
assert ok
assert message == ""
assert metrics["image_quality_ok"] is True
assert metrics["width"] == 256
assert metrics["green_ratio"] > 0.03
assert metrics["sharpness"] >= 25.0
def test_tiny_image_rejected(tiny_image):
ok, message, metrics = validate_image_quality(tiny_image)
assert not ok
assert message == "Please retake the image with the full leaf clearly visible."
assert metrics["image_quality_ok"] is False
def test_non_plant_image_rejected(gray_image):
ok, message, metrics = validate_image_quality(gray_image)
assert not ok
assert message == "Please retake the image and include a clear plant leaf."
assert metrics["green_ratio"] < 0.03
def test_blurry_image_rejected(blurry_image):
ok, message, metrics = validate_image_quality(blurry_image)
assert not ok
assert message == "Please retake the image. It appears blurry."
assert metrics["sharpness"] < 25.0
def test_rgba_image_handled(green_leaf_image):
rgba = green_leaf_image.convert("RGBA")
ok, _, _ = validate_image_quality(rgba)
assert ok