more tests

This commit is contained in:
Graham McIntire 2025-06-23 11:01:32 -05:00
parent 58454923ab
commit fc94ec45a8
No known key found for this signature in database
3 changed files with 30 additions and 11 deletions

View file

@ -20,6 +20,24 @@ defmodule Parser.PositionTest do
assert result == nil or match?(%PositionStruct{latitude: nil, longitude: nil}, result)
end
end
test "parses position with DAO extension in comment" do
result = Position.parse("4903.50N/07201.75W>Test!ABZ! position")
assert %PositionStruct{} = result
assert result.dao == %{lat_dao: "A", lon_dao: "B", datum: "WGS84"}
end
test "parses ambiguous position (spaces in lat/lon)" do
result = Position.parse("49 3.50N/07201.7 W>Ambiguous")
assert %PositionStruct{} = result
assert result.position_ambiguity == 1
end
test "returns struct with nil lat/lon for structurally valid but invalid lat/lon" do
# Valid length but not matching regex
result = Position.parse("abcdefgh/ijklmnopq>Invalid")
assert %PositionStruct{latitude: nil, longitude: nil} = result
end
end
property "returns nil or struct with nil lat/lon for random invalid strings" do
@ -45,6 +63,17 @@ defmodule Parser.PositionTest do
test "returns nils for invalid strings" do
assert %{latitude: nil, longitude: nil} = Position.parse_aprs_position("bad", "data")
end
test "parses southern and eastern hemispheres" do
result = Position.parse_aprs_position("1234.56S", "04540.70E")
assert Decimal.compare(result.latitude, Decimal.new(0)) == :lt
assert Decimal.compare(result.longitude, Decimal.new(0)) == :gt
end
test "returns nil for malformed but structurally valid input" do
result = Position.parse_aprs_position("12345678", "123456789")
assert %{latitude: nil, longitude: nil} = result
end
end
describe "calculate_position_ambiguity/2" do

View file

@ -3,14 +3,7 @@ defmodule Aprs.MockHelpers do
Provides mocks and stubs for tests.
"""
alias Aprs.BadPacket
def stub_packets_mock do
# Only define the mock if it doesn't already exist
if !Code.ensure_loaded?(PacketsMock) do
Mox.defmock(PacketsMock, for: Aprs.PacketsBehaviour)
end
Mox.stub(PacketsMock, :get_historical_packet_count, fn _opts -> 0 end)
Mox.stub(PacketsMock, :stream_packets_for_replay, fn _opts -> [] end)
Mox.stub(PacketsMock, :get_packets_for_replay, fn _opts -> [] end)
@ -20,10 +13,6 @@ defmodule Aprs.MockHelpers do
end
def stub_badpackets_mock do
if !Code.ensure_loaded?(BadPacketsMock) do
Mox.defmock(BadPacketsMock, for: BadPacket)
end
Mox.stub_with(BadPacketsMock, BadPacketsStub)
end
end

View file

@ -4,6 +4,7 @@ Ecto.Adapters.SQL.Sandbox.mode(Aprs.Repo, :manual)
# Configure Mox
Mox.defmock(Aprs.PacketsMock, for: Aprs.PacketsBehaviour)
Mox.defmock(Aprs.PacketReplayMock, for: Aprs.PacketReplayBehaviour)
Mox.defmock(PacketsMock, for: Aprs.PacketsBehaviour)
# Ensure no external APRS connections during tests
Application.put_env(:aprs, :disable_aprs_connection, true)