File: test_heatindex.py

package info (click to toggle)
meteocalc 1.1.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 144 kB
  • sloc: python: 513; makefile: 6; sh: 5
file content (61 lines) | stat: -rw-r--r-- 1,431 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import unittest

from tests.context import heat_index, Temp


# format:
# (F, Relative_Humidity): F
heat_index_noaa_table = {
    (80, 40): 80,
    (88, 40): 88,
    (90, 40): 91,
    (96, 40): 101,
    (98, 40): 105,
    (106, 40): 124,
    (108, 40): 130,
    (110, 40): 136,
    (80, 65): 82,
    (84, 65): 89,
    (86, 65): 93,
    (96, 65): 121,
    (100, 65): 136,
    (80, 100): 87,
    (82, 100): 95,
    (86, 100): 112,
    (90, 100): 132,
}

heat_index_below_80 = {
    (42, 80): 39.66,
    (50, 30): 46.11,
    (50, 90): 48.93,
    (60, 80): 59.46,
    (70, 100): 71.4,
}


class HeatIndexTest(unittest.TestCase):

    def test_heat_index_by_noaa_table(self):
        for t_rh, hi in heat_index_noaa_table.items():
            temp, rel_humidity = t_rh
            self.assertEqual(round(heat_index(temp, rel_humidity)), hi)

    def test_return_type(self):
        self.assertIsInstance(heat_index(80, 40), Temp)
        self.assertIsInstance(heat_index(52, 56), Temp)

    def test_input_temp_class(self):
        hi = heat_index(Temp(30, unit='c'), 70)
        self.assertIsInstance(hi, Temp)
        self.assertEqual(round(hi.c), 35)
        self.assertEqual(round(hi, 1), 95.1)

    def test_heat_index_values_below_80(self):
        for t_rh, hi in heat_index_below_80.items():
            t, rh = t_rh
            self.assertEqual(round(heat_index(t, rh), 2), hi)


if __name__ == '__main__':
    unittest.main()