prop/test/microwaveprop/rover/prominence_test.exs
Graham McIntire fd976b0cd5
fix: resolve 391 Credo issues across codebase
- Add jump_credo_checks ~> 0.4 with all 20 checks enabled
- Fix all standard Credo issues: 139 @spec (113 done, 26 remain),
  4 refactoring, 3 alias usage, 9 System.cmd env, 5 unsafe_to_atom,
  2 max line length, 9 assert_receive timeout
- Fix 170+ jump_credo_checks warnings:
  - 117 TopLevelAliasImportRequire: move nested alias/import to module top
  - 32 UseObanProWorker: switch to Oban.Pro.Worker
  - 4 DoctestIExExamples: add doctests / create test file
  - ~20 WeakAssertion: strengthen type-check assertions
  - Various ConditionalAssertion, AssertReceiveTimeout fixes
- Exclude vendor/ from Credo analysis
- Remaining: 175 warnings (mostly opinionated WeakAssertion,
  AvoidSocketAssignsInTest), 26 @spec annotations
2026-06-12 13:51:32 -05:00

64 lines
2 KiB
Elixir

defmodule Microwaveprop.Rover.ProminenceTest do
use ExUnit.Case, async: true
alias Microwaveprop.Rover.Prominence
describe "prominence_map/2" do
test "returns map keyed by {lat, lon}" do
cells = [%{lat: 33.0, lon: -97.0}, %{lat: 33.1, lon: -97.1}]
elev_lookup = fn points ->
Map.new(points, fn p -> {p, 200} end)
end
result = Prominence.prominence_map(cells, elev_lookup: elev_lookup)
assert map_size(result) == 2
assert Map.has_key?(result, {33.0, -97.0})
assert Map.has_key?(result, {33.1, -97.1})
end
test "cell sitting above neighbours has positive prominence" do
elev_lookup = fn points ->
Map.new(points, fn
{33.0, -97.0} -> {{33.0, -97.0}, 300}
p -> {p, 100}
end)
end
result = Prominence.prominence_map([%{lat: 33.0, lon: -97.0}], elev_lookup: elev_lookup)
assert result[{33.0, -97.0}] > 0
end
test "cell at same elevation as neighbours has zero prominence" do
elev_lookup = fn points ->
Map.new(points, fn p -> {p, 150} end)
end
result = Prominence.prominence_map([%{lat: 33.0, lon: -97.0}], elev_lookup: elev_lookup)
assert result[{33.0, -97.0}] == 0
end
test "neighbours with nil elevations are excluded from ring average" do
elev_lookup = fn points ->
Map.new(points, fn
{33.0, -97.0} -> {{33.0, -97.0}, 200}
p -> {p, nil}
end)
end
result = Prominence.prominence_map([%{lat: 33.0, lon: -97.0}], elev_lookup: elev_lookup)
assert result[{33.0, -97.0}] == nil
end
test "single cell returns nil prominence (no neighbours to compare)" do
elev_lookup = fn _points -> %{{45.0, -120.0} => 500} end
result = Prominence.prominence_map([%{lat: 45.0, lon: -120.0}], elev_lookup: elev_lookup)
assert result[{45.0, -120.0}] == nil
end
test "empty cells list returns empty map" do
assert Prominence.prominence_map([]) == %{}
end
end
end