forked from dylanrush/categorical-sectional
-
Notifications
You must be signed in to change notification settings - Fork 17
/
classification_tests.py
106 lines (87 loc) · 4.17 KB
/
classification_tests.py
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# Free for personal use. Prohibited from commercial use without consent.
import re
from data_sources import weather
def get_ceiling(metar):
"""Unit tests the ceiling classification from a metar
Arguments:
metar {string} -- A metar report
Returns:
string -- Classification of the weather based on the ceiling.
>>> get_ceiling('KRNT 132053Z 33010KT 10SM SCT034 SCT041 23/14 A3001 RMK AO2 SLP165')
10000
>>> get_ceiling('KRNT 132053Z 33010KT 4SM BKN041 SCT030 23/14 A3001 RMK AO2 SLP165')
4100
>>> get_ceiling('KRNT 132053Z 33010KT 4SM BKN041 OVC030 23/14 A3001 RMK AO2 SLP165')
3000
>>> get_ceiling('KRNT 132053Z 33010KT 4SM SCT041 OVC030 23/14 A3001 RMK AO2 SLP165')
3000
>>> get_ceiling('KRNT 132053Z 33010KT 3SM SCT041 BKN025 23/14 A3001 RMK AO2 SLP165')
2500
>>> get_ceiling('KRNT 132053Z 33010KT 2 1/2SM SCT041 BKN009 23/14 A3001 RMK AO2 SLP165')
900
>>> get_ceiling('KRNT 132053Z 33010KT 2 1/2SM SCT041 OVC009 23/14 A3001 RMK AO2 SLP165')
900
>>> get_ceiling('KRNT 132053Z 33010KT 2SM OVC004 23/14 A3001 RMK AO2 SLP165')
400
>>> get_ceiling('KRNT 132053Z 33010KT 2SM SCT010 OVC004 23/14 A3001 RMK AO2 SLP165')
400
>>> get_ceiling('KGCC 231853Z AUTO 28011KT 20/12 A2991 RMK AO2 LTG DSNT SE RAB41RAEMM SLP085 P0000 T02000117 PWINO $')
10000
>>> get_ceiling('KVOK 251453Z 34004KT 10SM SCT008 OVC019 21/21 A2988 RMK AO2A SCT V BKN SLP119 53012')
1900
"""
return weather.get_ceiling(metar)
def get_ceiling_classification(metar):
"""Unit tests the ceiling classification from a metar
Arguments:
metar {string} -- A metar report
Returns:
string -- Classification of the weather based on the ceiling.
>>> get_ceiling_classification(get_ceiling('KRNT 132053Z 33010KT 10SM SCT034 SCT041 23/14 A3001 RMK AO2 SLP165'))
'VFR'
>>> get_ceiling_classification(get_ceiling('KRNT 132053Z 33010KT 4SM SCT041 OVC030 23/14 A3001 RMK AO2 SLP165'))
'VFR'
>>> get_ceiling_classification(get_ceiling('KRNT 132053Z 33010KT 3SM SCT041 BKN025 23/14 A3001 RMK AO2 SLP165'))
'MVFR'
>>> get_ceiling_classification(get_ceiling('KRNT 132053Z 33010KT 2 1/2SM SCT041 BKN009 23/14 A3001 RMK AO2 SLP165'))
'IFR'
>>> get_ceiling_classification(get_ceiling('KRNT 132053Z 33010KT 2 1/2SM SCT041 OVC009 23/14 A3001 RMK AO2 SLP165'))
'IFR'
>>> get_ceiling_classification(get_ceiling('KRNT 132053Z 33010KT 2SM OVC004 23/14 A3001 RMK AO2 SLP165'))
'LIFR'
>>> get_ceiling_classification(get_ceiling('KRNT 132053Z 33010KT 2SM SCT010 OVC004 23/14 A3001 RMK AO2 SLP165'))
'LIFR'
>>> get_ceiling_classification(get_ceiling('KGCC 231853Z AUTO 28011KT 20/12 A2991 RMK AO2 LTG DSNT SE RAB41RAEMM SLP085 P0000 T02000117 PWINO $'))
'VFR'
>>> get_ceiling_classification(get_ceiling('KVOK 251453Z 34004KT 10SM SCT008 OVC019 21/21 A2988 RMK AO2A SCT V BKN SLP119 53012'))
'MVFR'
"""
return weather.get_ceiling_category(metar)
def get_visibility(metar):
"""
Returns the amount of time in the appropriate unit.
>>> get_visibility('KRNT 132053Z 33010KT 10SM SCT034 SCT041 23/14 A3001 RMK AO2 SLP165')
'VFR'
>>> get_visibility('KRNT 132053Z 33010KT 4SM SCT034 SCT041 23/14 A3001 RMK AO2 SLP165')
'MVFR'
>>> get_visibility('KRNT 132053Z 33010KT 3SM SCT034 SCT041 23/14 A3001 RMK AO2 SLP165')
'MVFR'
>>> get_visibility('KRNT 132053Z 33010KT 2 1/2SM SCT034 SCT041 23/14 A3001 RMK AO2 SLP165')
'IFR'
>>> get_visibility('KRNT 132053Z 33010KT 2SM SCT034 SCT041 23/14 A3001 RMK AO2 SLP165')
'IFR'
>>> get_visibility('KRNT 132053Z 33010KT 1SM SCT034 SCT041 23/14 A3001 RMK AO2 SLP165')
'IFR'
>>> get_visibility('KRNT 132053Z 33010KT 1/2SM SCT034 SCT041 23/14 A3001 RMK AO2 SLP165')
'LIFR'
>>> get_visibility('KGCC 231853Z AUTO 28011KT 20/12 A2991 RMK AO2 LTG DSNT SE RAB41RAEMM SLP085 P0000 T02000117 PWINO $')
'VFR'
>>> get_visibility('KVOK 251453Z 34004KT 10SM SCT008 OVC019 21/21 A2988 RMK AO2A SCT V BKN SLP119 53012')
'VFR'
"""
return weather.get_visibility(metar)
if __name__ == '__main__':
import doctest
print("Starting tests.")
doctest.testmod()
print("Tests finished")