import pytest from navigator.utils.matcher import SP3Matcher, LegacySP3Matcher @pytest.fixture def sp3_matcher(): return SP3Matcher() @pytest.fixture def legacy_sp3_matcher(): return LegacySP3Matcher() def test_sp3_matcher_extract_metadata(sp3_matcher): filename = "IGS0OPSFIN_20233090000_01D_15M_ORB.SP3.gz" metadata = sp3_matcher.extract_metadata(filename) assert metadata == { "analysis_center": "IGS", "campaign": "OPS", "solution_type": "FIN", "year": "2023", "day": "309", "hour": "00", "minute": "00", "length": "01D", "sampling": "15M", "content": "ORB", "format": "SP3", } def test_legacy_sp3_matcher_extract_metadata(legacy_sp3_matcher): filename = "igr00100.05i.Z" metadata = legacy_sp3_matcher.extract_metadata(filename) assert metadata == { "analysis_center": "igr", "gps_week": "0010", "day": "0", "format": "05i", } def test_sp3_matcher_invert(sp3_matcher): inverted_filename = sp3_matcher.invert(2023, 309) assert inverted_filename == "IGS0OPSFIN_20233090000_01D_15M_ORB.SP3.gz" def test_legacy_sp3_matcher_invert(legacy_sp3_matcher): inverted_filename = legacy_sp3_matcher.invert(2022, 1) assert inverted_filename == "igs20221.sp3.Z" def test_sp3_matcher_invert_with_hour_minute(sp3_matcher): inverted_filename = sp3_matcher.invert(2023, 309, hour=12, minute=30) assert inverted_filename == "IGS0OPSFIN_20233091230_01D_15M_ORB.SP3.gz" def test_metadata_errors(sp3_matcher): with pytest.raises(AssertionError): sp3_matcher.invert(20232, 302) with pytest.raises(AssertionError): sp3_matcher.invert(2023, 3092) with pytest.raises(AssertionError): sp3_matcher.invert(2023, 309, hour=242)