Source code for payloadcomputerdroneprojekt.test.mission_computer.test_polygon
import unittest
import os
from payloadcomputerdroneprojekt.mission_computer.scan_planer \
import plan_scan, export_geojson
[docs]
class TestPolygonScanPlan(unittest.TestCase):
[docs]
def setUp(self):
self.polygon = [
[48.767642, 11.337281],
[48.767535, 11.337174],
[48.767722, 11.336517],
[48.768063, 11.336072],
[48.768167, 11.336196]
]
self.start = [48.767642, 11.337281]
# self.end = (48.767722, 11.336799)
self.end = self.start
self.altitude = 10
self.fov_deg = 60
self.overlap_ratio = 0.2
[docs]
def test_plan_scan_returns_mission(self):
mission = plan_scan(
polygon_latlon=self.polygon,
start_latlon=self.start,
end_latlon=self.end,
altitude=self.altitude,
fov_deg=self.fov_deg,
overlap_ratio=self.overlap_ratio
)
self.assertIsNotNone(mission)
self.assertTrue(hasattr(mission, "__iter__")
or isinstance(mission, dict))
[docs]
def test_export_geojson_creates_file(self):
mission = plan_scan(
polygon_latlon=self.polygon,
start_latlon=self.start,
end_latlon=self.end,
altitude=self.altitude,
fov_deg=self.fov_deg,
overlap_ratio=self.overlap_ratio
)
filename = "test_scan_mission.geojson"
export_geojson(mission, filename=filename)
self.assertTrue(os.path.exists(filename))
os.remove(filename)
[docs]
def test_invalid_polygon_raises(self):
invalid_polygon = [(48.767642, 11.337281)] # Not enough points
with self.assertRaises(Exception):
plan_scan(
polygon_latlon=invalid_polygon,
start_latlon=self.start,
end_latlon=self.end,
altitude=self.altitude,
fov_deg=self.fov_deg,
overlap_ratio=self.overlap_ratio
)
if __name__ == "__main__":
unittest.main()