"""Test direction processing.""" import numpy as np from map_machine.feature.direction import DirectionSet, parse_vector, Sector __author__ = "Sergey Vartanov" __email__ = "me@enzet.ru" def test_compass_points_1() -> None: """Test north direction.""" assert np.allclose(parse_vector("N"), np.array([0, -1])) def test_compass_points_2() -> None: """Test north-west direction.""" root: np.float64 = -np.sqrt(2) / 2 assert np.allclose(parse_vector("NW"), np.array([root, root])) def test_compass_points_3() -> None: """Test south-south-west direction.""" assert np.allclose(parse_vector("SSW"), np.array([-0.38268343, 0.92387953])) def test_invalid() -> None: """Test invalid direction representation string.""" assert not parse_vector("O") def test_degree() -> None: """Test east direction.""" assert np.allclose(parse_vector("90"), np.array([1, 0])) def test_main_direction() -> None: """Test main direction computing.""" assert DirectionSet("0").is_right() is None assert DirectionSet("70").is_right() is True assert DirectionSet("270").is_right() is False assert DirectionSet("180").is_right() is None def test_sector_parsing() -> None: """Test constructing sector from the string representation.""" Sector("0", angle=0) Sector("90", angle=0) Sector("-90", angle=0) sector: Sector = Sector("0-180") assert np.allclose(sector.start, [0, -1]) assert np.allclose(sector.end, [0, 1])