import pytest import pandas as pd from navigator.utils.igs_network import IGSNetwork import numpy as np # Fixture to create an instance of IGSNetwork for testing @pytest.fixture def igs_network(): return IGSNetwork() # Test to check if the IGSNetwork object is initialized properly def test_igs_network_initialization(igs_network): assert isinstance(igs_network.stations, pd.DataFrame) assert len(igs_network) > 0 # Test to check if a specific station is present in the IGS network def test_station_presence(igs_network): assert "ABMF00GLP" in igs_network assert "INVALID_STATION" not in igs_network # Test to get the XYZ coordinates of a station def test_get_xyz(igs_network): xyz_coords = igs_network.get_xyz("ABMF00GLP") assert isinstance(xyz_coords, np.ndarray) assert xyz_coords.shape == (3,) assert all(isinstance(coord, np.float64) for coord in xyz_coords) # Test to get the ellipsoid details of a station def test_get_ellipsoid(igs_network): ellipsoid_details = igs_network.get_ellipsoid("ABMF00GLP") assert isinstance(ellipsoid_details, np.ndarray) assert ellipsoid_details.shape == (3,) # Check if the ellipsoid details are floats assert all(isinstance(coord, np.float64) for coord in ellipsoid_details) # Test to retrieve detailed information for a specific station def test_get_igs_station(igs_network): station_info = igs_network.get_igs_station("ABMF00GLP") assert isinstance(station_info, pd.Series) assert "Latitude" in station_info.index assert "Longitude" in station_info.index assert "Height" in station_info.index # Test error calculation for a specific station and measurement def test_error_calculation(igs_network): error = igs_network.error("ABMF00GLP", 1000.0, 2000.0, 3000.0) assert isinstance(error, float) # Test string representation of the IGSNetwork object def test_string_representation(igs_network): assert str(igs_network) == "IGSNetwork(stations=514)" # Test iteration through IGS station names def test_iteration_through_stations(igs_network): for station in igs_network: assert isinstance(station, str) # Test accessing a specific station's information using indexing def test_access_station_info_with_indexing(igs_network): station_info = igs_network["ABMF00GLP"] assert isinstance(station_info, pd.Series) assert "Latitude" in station_info.index assert "Longitude" in station_info.index assert "Height" in station_info.index