@@ -51,20 +51,22 @@ def _load_test_values(self, filename: str) -> np.ndarray:
5151 data : dict
5252 Dictionary with the test values.
5353 """
54+ keys = ["date" , "height" , "latitude" , "longitude" , "X" , "Y" , "Z" , "H" ,
55+ "F" , "I" , "D" , "GV" , "dX" , "dY" , "dZ" , "dH" , "dF" , "dI" , "dD" ]
56+ if not filename .endswith (('.csv' , '.txt' )):
57+ raise TypeError ("File type is not supported. Try a csv or txt File." )
5458 if filename .endswith ('.csv' ):
5559 data = np .genfromtxt (filename , delimiter = ';' , skip_header = 1 )
5660 if data .shape [1 ] < 19 :
5761 raise ValueError (f"File '{ filename } ' has incomplete data." )
58- keys = ["date" , "height" , "latitude" , "longitude" , "X" , "Y" , "Z" , "H" , "F" , "I" , "D" , "GV" ,
59- "dX" , "dY" , "dZ" , "dH" , "dF" , "dI" , "dD" ]
6062 elif filename .endswith ('.txt' ):
6163 data = np .genfromtxt (filename , skip_header = 1 , comments = '#' )
6264 if data .shape [1 ] < 18 :
6365 raise ValueError (f"File '{ filename } ' has incomplete data." )
64- keys = [ "date" , "height" , "latitude" , "longitude" , "D" , "I" , "H" , "X" , "Y" , "Z" , "F" ,
65- "dD" , "dI " , "dH " , "dX " , "dY " , "dZ " , "dF" ]
66- else :
67- raise TypeError ( "File type is not supported. Try a csv or txt File." )
66+ if '2020' in filename :
67+ keys = [ "date " , "height " , "latitude " , "longitude " , "D " , "I" ,
68+ "H" , "X" , "Y" , "Z" , "F" , "dD" , "dI" , "dH" , "dX" , "dY" ,
69+ "dZ" , "dF" ]
6870 return dict (zip (keys , data .T ))
6971
7072 def setUp (self ):
@@ -97,5 +99,16 @@ def test_wmm2020(self):
9799 self .assertAlmostEqual (test_values ['I' ][i ], self .wmm .I , 2 , 'Expected {:.2f}, result {:.2f}' .format (test_values ['I' ][i ], self .wmm .I ))
98100 self .assertAlmostEqual (test_values ['D' ][i ], self .wmm .D , 2 , 'Expected {:.2f}, result {:.2f}' .format (test_values ['D' ][i ], self .wmm .D ))
99101
102+ def test_wmm2025 (self ):
103+ test_values = self ._load_test_values (os .path .join (self .base_path , "../ahrs/utils/WMM2025/WMM2025_TEST_VALUES.txt" ))
104+ num_tests = len (test_values ['date' ])
105+ for i in range (num_tests ):
106+ self .wmm .magnetic_field (test_values ['latitude' ][i ], test_values ['longitude' ][i ], test_values ['height' ][i ], date = test_values ['date' ][i ])
107+ self .assertAlmostEqual (test_values ['X' ][i ], self .wmm .X , 1 , 'Expected {:.1f}, result {:.1f}' .format (test_values ['X' ][i ], self .wmm .X ))
108+ self .assertAlmostEqual (test_values ['Y' ][i ], self .wmm .Y , 1 , 'Expected {:.1f}, result {:.1f}' .format (test_values ['Y' ][i ], self .wmm .Y ))
109+ self .assertAlmostEqual (test_values ['Z' ][i ], self .wmm .Z , 1 , 'Expected {:.1f}, result {:.1f}' .format (test_values ['Z' ][i ], self .wmm .Z ))
110+ self .assertAlmostEqual (test_values ['I' ][i ], self .wmm .I , 2 , 'Expected {:.2f}, result {:.2f}' .format (test_values ['I' ][i ], self .wmm .I ))
111+ self .assertAlmostEqual (test_values ['D' ][i ], self .wmm .D , 2 , 'Expected {:.2f}, result {:.2f}' .format (test_values ['D' ][i ], self .wmm .D ))
112+
100113if __name__ == '__main__' :
101114 unittest .main ()
0 commit comments