Passed
Pull Request — master (#60)
by Angeline
01:47
created

test_utils_aacgmv2.TestUtilsAACGMV2.setup()   A

Complexity

Conditions 1

Size

Total Lines 4
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 3
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
nop 1
1
# -*- coding: utf-8 -*-
2
from __future__ import division, absolute_import, unicode_literals
3
4
import datetime as dt
5
import numpy as np
6
import pytest
7
8
from aacgmv2 import utils
9
10
11
class TestUtilsAACGMV2:
12
    def setup(self):
13
        """Runs before every method to create a clean testing setup"""
14
        self.rtol = 1.0e-4
15
        self.out = None
16
17
    def teardown(self):
18
        """Runs after every method to clean up previous testing"""
19
        del self.rtol, self.out
20
21
    @pytest.mark.parametrize('year,ref', [(1880, [-179.1494, -23.0801]),
22
                                          (2015, [-179.2004, -23.0431])])
23
    def test_subsol(self, year, ref):
24
        """Test the subsolar calculation"""
25
        self.out = utils.subsol(year, 1, 0.0)
26
        np.testing.assert_allclose(self.out, ref, rtol=self.rtol)
27
28
    @pytest.mark.parametrize('year', [(1500), (2110)])
29
    def test_subsol_raises_time_range(self, year):
30
        """Test the routine failure for out-of-range dates"""
31
        with pytest.raises(ValueError, match="subsol valid between 1601-2100"):
32
            self.out = utils.subsol(year, 1, 0.0)
33
34
    @pytest.mark.parametrize('year,ref',
35
                             [(1500, [0.141408, -0.48357, 0.86381]),
36
                              (2015, [0.050281, -0.16057, 0.98574]),
37
                              (2110, [0.027069, -0.08006, 0.99642])])
38
    def test_igrf_dipole_axis(self, year, ref):
39
        """Test the IGRF dipole axis calculation"""
40
        self.out = utils.igrf_dipole_axis(dt.datetime(year, 1, 1))
41
42
        np.testing.assert_allclose(self.out, ref, rtol=self.rtol)
43
44
    @pytest.mark.parametrize('gc_lat,gd_lat,mult',
45
                             [(45.0, 45.1924, False),
46
                              ([45.0, -45.0], [45.1924, -45.1924], True),
47
                              (np.array([45.0, -45.0]),
48
                               np.array([45.1924, -45.1924]), True)])
49
    def test_gc2gd_lat(self, gc_lat, gd_lat, mult):
50
        """Test the geocentric to geodetic conversion"""
51
        self.out = utils.gc2gd_lat(gc_lat)
52
53
        if mult:
54
            np.testing.assert_allclose(self.out, gd_lat, rtol=self.rtol)
55
        else:
56
            np.testing.assert_almost_equal(self.out, gd_lat, decimal=4)
57