"""Tests for the unit-aware formatter.""" from physcom.units import format_quantity class TestFormatQuantity: def test_speed_km_h(self): """33.33 m/s should display as ~120 km/h.""" result = format_quantity(33.33, "m/s") assert "km/h" in result assert "120" in result def test_speed_km_s(self): """10000 m/s should display as 10 km/s.""" result = format_quantity(10000, "m/s") assert "km/s" in result def test_distance_km(self): """5000 m should display as 5 km.""" result = format_quantity(5000, "m") assert "km" in result assert "5" in result def test_distance_ly(self): """9.461e15 m should display as ~1 ly.""" result = format_quantity(9.461e15, "m") assert "ly" in result def test_distance_au(self): """1.496e11 m should display as ~1 AU.""" result = format_quantity(1.496e11, "m") assert "AU" in result def test_mass_tons(self): """5000 kg should display as 5 t.""" result = format_quantity(5000, "kg") assert "t" in result def test_mass_kg(self): """50 kg should display as 50 kg.""" result = format_quantity(50, "kg") assert "kg" in result def test_energy_density_wh_kg(self): """720000 J/kg should display as 200 Wh/kg.""" result = format_quantity(720000, "J/kg") assert "Wh/kg" in result assert "200" in result def test_time_days(self): """86400 s should display as 1 d.""" result = format_quantity(86400, "s") assert "d" in result def test_time_years(self): """3.156e7 s should display as ~1 yr.""" result = format_quantity(3.156e7, "s") assert "yr" in result def test_cost_per_km(self): """$/m always displays as $/km.""" result = format_quantity(0.001, "$/m") assert "$/km" in result def test_cost_per_ton_km(self): """$/(kg·m) always displays as $/t·km.""" result = format_quantity(1e-6, "$/(kg\u00b7m)") assert "$/t\u00b7km" in result def test_emissions_g_per_km(self): """kg/m always displays as g/km.""" result = format_quantity(1e-4, "kg/m") assert "g/km" in result def test_none_returns_dash(self): assert format_quantity(None, "m/s") == "\u2014" def test_dimensionless(self): """0-1 unit should just return the number.""" result = format_quantity(0.75, "0-1") assert result == "0.75" def test_string_input(self): """String values should be converted to float.""" result = format_quantity("5000", "m") assert "km" in result def test_non_numeric_string(self): """Non-numeric string values returned as-is.""" assert format_quantity("true", "m") == "true" def test_zero(self): result = format_quantity(0, "m/s") assert "m/s" in result def test_area_m2(self): result = format_quantity(50, "m\u00b2") assert "m\u00b2" in result def test_power_density(self): result = format_quantity(5000, "W/kg") assert "kW/kg" in result