defmodule Microwaveprop.Rover.ElevationTest do use ExUnit.Case, async: false alias Microwaveprop.Rover.Elevation setup do tmp = Path.join(System.tmp_dir!(), "rover_elev_#{System.unique_integer([:positive])}") File.mkdir_p!(tmp) prev = Application.get_env(:microwaveprop, :srtm_tiles_dir) Application.put_env(:microwaveprop, :srtm_tiles_dir, tmp) on_exit(fn -> File.rm_rf!(tmp) if prev do Application.put_env(:microwaveprop, :srtm_tiles_dir, prev) else Application.delete_env(:microwaveprop, :srtm_tiles_dir) end end) :ok end describe "lookup_many/1" do test "returns map keyed by {lat, lon}, nil values when no tiles available" do points = [{33.0, -96.0}, {30.0, -97.0}] result = Elevation.lookup_many(points) assert is_map(result) assert Map.has_key?(result, {33.0, -96.0}) assert Map.has_key?(result, {30.0, -97.0}) assert result[{33.0, -96.0}] == nil assert result[{30.0, -97.0}] == nil end test "empty list returns empty map" do assert Elevation.lookup_many([]) == %{} end end end