Skip to content

Commit 555b6af

Browse files
committed
Add tests for WMM 2025.
1 parent 8025554 commit 555b6af

File tree

1 file changed

+19
-6
lines changed

1 file changed

+19
-6
lines changed

tests/test_wmm.py

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
100113
if __name__ == '__main__':
101114
unittest.main()

0 commit comments

Comments
 (0)