more tests
This commit is contained in:
parent
58454923ab
commit
fc94ec45a8
3 changed files with 30 additions and 11 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue