"""Tests for Model Manager (F16).""" import numpy as np from gps_denied.core.models import ModelManager def test_load_and_get_model(): manager = ModelManager() # Should auto-load engine = manager.get_inference_engine("SuperPoint") assert engine.model_name == "SuperPoint" # Check fallback/dummy assert manager.fallback_to_onnx("SuperPoint") is True assert manager.optimize_to_tensorrt("SuperPoint", "path.onnx") == "path.onnx.trt" def test_mock_superpoint(): manager = ModelManager() engine = manager.get_inference_engine("SuperPoint") dummy_img = np.zeros((480, 640, 3), dtype=np.uint8) res = engine.infer(dummy_img) assert "keypoints" in res assert "descriptors" in res assert "scores" in res assert len(res["keypoints"]) == 500 assert res["descriptors"].shape == (500, 256) def test_mock_lightglue(): manager = ModelManager() engine = manager.get_inference_engine("LightGlue") # Need mock features class DummyF: def __init__(self, keypoints): self.keypoints = keypoints f1 = DummyF(np.random.rand(120, 2)) f2 = DummyF(np.random.rand(150, 2)) res = engine.infer({"features1": f1, "features2": f2}) assert "matches" in res assert len(res["matches"]) == 100 # min(100, 120, 150) assert res["keypoints1"].shape == (100, 2) assert res["keypoints2"].shape == (100, 2)