site-intelligence-studio / tests /test_topography.py
Eishaan's picture
Add KML terrain and soil analysis layers
2f91d7e
Raw
History Blame Contribute Delete
1.52 kB
import unittest
from unittest.mock import patch
from src.geometry import selection_from_lat_lon
from src.topography import fetch_topography
class TopographyTests(unittest.TestCase):
def test_fetch_topography_summarizes_elevation_samples(self):
selection = selection_from_lat_lon(21.002, 70.245, radius_m=250)
fake_response = {
"results": [
{"elevation": 12.0},
{"elevation": 14.5},
{"elevation": 13.0},
{"elevation": 16.0},
]
}
with patch("src.topography.get_json", return_value=fake_response):
topo, evidence = fetch_topography(selection)
self.assertEqual(topo["sample_count"], 4)
self.assertEqual(topo["min_elevation_m"], 12.0)
self.assertEqual(topo["max_elevation_m"], 16.0)
self.assertGreaterEqual(topo["relief_m"], 4.0)
self.assertEqual(evidence[0].category, "Topography")
self.assertIn("not a site survey", evidence[0].limitation)
def test_fetch_topography_failure_returns_safe_evidence(self):
selection = selection_from_lat_lon(21.002, 70.245, radius_m=250)
with patch("src.topography.get_json", side_effect=TimeoutError("slow")):
topo, evidence = fetch_topography(selection)
self.assertEqual(topo, {})
self.assertEqual(evidence[0].confidence, "low")
self.assertIn("Do not infer slope", evidence[0].design_implication)
if __name__ == "__main__":
unittest.main()