defmodule Microwaveprop.FormatTest do use ExUnit.Case, async: true alias Microwaveprop.Format describe "distance_km/1" do test "returns em-dash for nil" do assert Format.distance_km(nil) == "—" end test "formats large distances as whole numbers, miles first" do assert Format.distance_km(235) == "146 mi (235 km)" assert Format.distance_km(100.0) == "62 mi (100 km)" end test "formats short distances with one decimal" do assert Format.distance_km(1.5) == "0.9 mi (1.5 km)" assert Format.distance_km(9.6) == "6.0 mi (9.6 km)" end test "accepts Decimal input" do assert Format.distance_km(Decimal.new("235")) == "146 mi (235 km)" end end describe "propagation_tier_label/1" do test "maps scores to tier labels" do assert Format.propagation_tier_label(100) == "EXCELLENT" assert Format.propagation_tier_label(80) == "EXCELLENT" assert Format.propagation_tier_label(79) == "GOOD" assert Format.propagation_tier_label(65) == "GOOD" assert Format.propagation_tier_label(64) == "MARGINAL" assert Format.propagation_tier_label(50) == "MARGINAL" assert Format.propagation_tier_label(49) == "POOR" assert Format.propagation_tier_label(33) == "POOR" assert Format.propagation_tier_label(32) == "NEGLIGIBLE" assert Format.propagation_tier_label(0) == "NEGLIGIBLE" end end describe "propagation_tier_badge_class/1" do test "maps scores to badge CSS classes" do assert Format.propagation_tier_badge_class(100) =~ "badge-success" assert Format.propagation_tier_badge_class(80) =~ "badge-success" assert Format.propagation_tier_badge_class(79) =~ "badge-info" assert Format.propagation_tier_badge_class(50) =~ "badge-warning" assert Format.propagation_tier_badge_class(33) =~ "badge-error" assert Format.propagation_tier_badge_class(0) =~ "badge-ghost" end end describe "propagation_tier_color/1" do test "maps scores to hex colors" do assert Format.propagation_tier_color(100) == "#059669" assert Format.propagation_tier_color(80) == "#059669" assert Format.propagation_tier_color(79) == "#0d9488" assert Format.propagation_tier_color(50) == "#ca8a04" assert Format.propagation_tier_color(33) == "#ea580c" assert Format.propagation_tier_color(10) == "#dc2626" end end describe "terrain_verdict_class/1" do test "maps known verdicts to badge color classes" do assert Format.terrain_verdict_class("CLEAR") == "badge-success" assert Format.terrain_verdict_class("FRESNEL_MINOR") == "badge-warning" assert Format.terrain_verdict_class("FRESNEL_PARTIAL") == "badge-warning" assert Format.terrain_verdict_class("BLOCKED") == "badge-error" end test "returns ghost for unknown verdicts" do assert Format.terrain_verdict_class("UNKNOWN") == "badge-ghost" assert Format.terrain_verdict_class(nil) == "badge-ghost" end end end