コード例 #1
0
 def test_decode_dewpoint_single_digit_degree_gets_leading_zero_stripped(self):
   val = "09"
   decoder = MetarDecoderNZ()
   decoder.decode_dewpoint(val)
   res = decoder.decoded_metar["dewpoint"][self.DECODED_KEY]
   degree_sign = u'\N{DEGREE SIGN}'
   assert_equals(res, "9%sC" % degree_sign)
コード例 #2
0
 def test_decode_dewpoint_negative(self):
   val = "M04"
   decoder = MetarDecoderNZ()
   decoder.decode_dewpoint(val)
   res = decoder.decoded_metar["dewpoint"][self.DECODED_KEY]
   degree_sign = u'\N{DEGREE SIGN}'
   assert_equals(res, "minus 4%sC" % degree_sign)
コード例 #3
0
 def test_decode_nzch_metar(self):
     # Basic smoke test to make sure the code gets run through and parser
     # works, without asserting any results.
     with open('metars/workers/tests/data/nzch-encoded.json') as data:
         nzch = json.load(data)
     decoder = MetarDecoderNZ()
     decoder.decode_metar(nzch["metar"])
コード例 #4
0
 def test_decode_nzch_metar(self):
   # Basic smoke test to make sure the code gets run through and parser
   # works, without asserting any results.
   with open('metars/workers/tests/data/nzch-encoded.json') as data:
     nzch = json.load(data)
   decoder = MetarDecoderNZ()
   decoder.decode_metar(nzch["metar"])
コード例 #5
0
 def test_decode_temp(self):
     val = "10"
     decoder = MetarDecoderNZ()
     decoder.decode_temp(val)
     res = decoder.decoded_metar["temp"][self.DECODED_KEY]
     degree_sign = u'\N{DEGREE SIGN}'
     assert_equals(res, "10%sC" % degree_sign)
コード例 #6
0
 def test_decode_sky_condition_vertical_visibility(self):
     val = ["VV048"]
     decoder = MetarDecoderNZ()
     decoder.decode_sky_condition(val)
     res = decoder.decoded_metar["sky_condition"][self.DECODED_KEY]
     assert_equals(
         res, ["vertical visibility (indefinite ceiling) at 4,800 feet"])
コード例 #7
0
 def test_decode_temp_single_digit_degree_gets_leading_zero_stripped(self):
     val = "09"
     decoder = MetarDecoderNZ()
     decoder.decode_temp(val)
     res = decoder.decoded_metar["temp"][self.DECODED_KEY]
     degree_sign = u'\N{DEGREE SIGN}'
     assert_equals(res, "9%sC" % degree_sign)
コード例 #8
0
 def test_decode_dewpoint_negative(self):
     val = "M04"
     decoder = MetarDecoderNZ()
     decoder.decode_dewpoint(val)
     res = decoder.decoded_metar["dewpoint"][self.DECODED_KEY]
     degree_sign = u'\N{DEGREE SIGN}'
     assert_equals(res, "minus 4%sC" % degree_sign)
コード例 #9
0
 def test_decode_temp(self):
   val = "10"
   decoder = MetarDecoderNZ()
   decoder.decode_temp(val)
   res = decoder.decoded_metar["temp"][self.DECODED_KEY]
   degree_sign = u'\N{DEGREE SIGN}'
   assert_equals(res, "10%sC" % degree_sign)
コード例 #10
0
 def test_decode_wx_phenomena_tornado_waterspout_special_case(self):
   # +FC is a special case for tornadoes and waterspouts - the
   # modifier '+' should be ignored.
   val = ["+FC"]
   decoder = MetarDecoderNZ()
   decoder.decode_wx_phenomena(val)
   res = decoder.decoded_metar["wx_phenomena"][self.DECODED_KEY]
   assert_equals(res, ["funnel cloud (tornado or waterspout)"])
コード例 #11
0
 def test_decoded_wind_variation_missing(self):
     val = ""
     decoder = MetarDecoderNZ()
     decoder.decode_wind_dir_variation(val)
     # The decoder should handle an empty wind variation, and the keys
     # should exist in the decoded metar with empty values.
     res = decoder.decoded_metar["wind_dir_variation"][self.DECODED_KEY]
     assert_equals(res, "")
コード例 #12
0
 def test_decoded_wind_variation_missing(self):
   val = ""
   decoder = MetarDecoderNZ()
   decoder.decode_wind_dir_variation(val)
   # The decoder should handle an empty wind variation, and the keys
   # should exist in the decoded metar with empty values.
   res = decoder.decoded_metar["wind_dir_variation"][self.DECODED_KEY]
   assert_equals(res, "")
コード例 #13
0
 def test_decode_sky_condition_multiple_layers(self):
   val = ["SCT016///", "BKN085///", "OVC100TCU"]
   decoder = MetarDecoderNZ()
   decoder.decode_sky_condition(val)
   res = decoder.decoded_metar["sky_condition"][self.DECODED_KEY]
   assert_equals(res, ["scattered clouds at 1,600 feet (no cloud type)",
                       "broken clouds at 8,500 feet (no cloud type)",
                       "overcast at 10,000 feet (towering cumulus)"])
コード例 #14
0
 def test_decode_obs_datetime(self):
   val = "301900Z"
   decoder = MetarDecoderNZ()
   decoder.decode_obs_datetime(val)
   res_date = decoder.decoded_metar["obs_datetime"][self.DECODED_KEY]["date"]
   res_time = decoder.decoded_metar["obs_datetime"][self.DECODED_KEY]["time"]
   assert_equals(res_date, "30")
   assert_equals(res_time, "1900")
コード例 #15
0
 def test_decode_wx_phenomena_tornado_waterspout_special_case(self):
     # +FC is a special case for tornadoes and waterspouts - the
     # modifier '+' should be ignored.
     val = ["+FC"]
     decoder = MetarDecoderNZ()
     decoder.decode_wx_phenomena(val)
     res = decoder.decoded_metar["wx_phenomena"][self.DECODED_KEY]
     assert_equals(res, ["funnel cloud (tornado or waterspout)"])
コード例 #16
0
 def test_decode_obs_datetime(self):
     val = "301900Z"
     decoder = MetarDecoderNZ()
     decoder.decode_obs_datetime(val)
     res_date = decoder.decoded_metar["obs_datetime"][
         self.DECODED_KEY]["date"]
     res_time = decoder.decoded_metar["obs_datetime"][
         self.DECODED_KEY]["time"]
     assert_equals(res_date, "30")
     assert_equals(res_time, "1900")
コード例 #17
0
 def test_decode_sky_condition_multiple_layers(self):
     val = ["SCT016///", "BKN085///", "OVC100TCU"]
     decoder = MetarDecoderNZ()
     decoder.decode_sky_condition(val)
     res = decoder.decoded_metar["sky_condition"][self.DECODED_KEY]
     assert_equals(res, [
         "scattered clouds at 1,600 feet (no cloud type)",
         "broken clouds at 8,500 feet (no cloud type)",
         "overcast at 10,000 feet (towering cumulus)"
     ])
コード例 #18
0
 def test_decode_wx_phenomena_modifiers(self):
     decoder = MetarDecoderNZ()
     # Light
     val = ["-PY"]
     decoder.decode_wx_phenomena(val)
     res = decoder.decoded_metar["wx_phenomena"][self.DECODED_KEY]
     assert_equals(res, ["light spray"])
     # Moderate
     val = ["PY"]
     decoder.decode_wx_phenomena(val)
     res = decoder.decoded_metar["wx_phenomena"][self.DECODED_KEY]
     assert_equals(res, ["moderate spray"])
     # Heavy
     val = ["+PY"]
     decoder.decode_wx_phenomena(val)
     res = decoder.decoded_metar["wx_phenomena"][self.DECODED_KEY]
     assert_equals(res, ["heavy spray"])
コード例 #19
0
 def test_decode_sky_condition_no_cloud_detected_nzaa_nzwn_nzch(self):
     val = ["NCD"]
     decoder = MetarDecoderNZ()
     # NZAA
     decoder.decoded_metar["icao_id"][self.DECODED_KEY] = "NZAA"
     decoder.decode_sky_condition(val)
     res = decoder.decoded_metar["sky_condition"][self.DECODED_KEY]
     assert_equals(res, ["no cloud detected below 10,000 feet"])
     # NZAA
     decoder.decoded_metar["icao_id"][self.DECODED_KEY] = "NZWN"
     decoder.decode_sky_condition(val)
     res = decoder.decoded_metar["sky_condition"][self.DECODED_KEY]
     assert_equals(res, ["no cloud detected below 10,000 feet"])
     # NZAA
     decoder.decoded_metar["icao_id"][self.DECODED_KEY] = "NZCH"
     decoder.decode_sky_condition(val)
     res = decoder.decoded_metar["sky_condition"][self.DECODED_KEY]
     assert_equals(res, ["no cloud detected below 10,000 feet"])
コード例 #20
0
 def test_decode_wx_phenomena_modifiers(self):
   decoder = MetarDecoderNZ()
   # Light
   val = ["-PY"]
   decoder.decode_wx_phenomena(val)
   res = decoder.decoded_metar["wx_phenomena"][self.DECODED_KEY]
   assert_equals(res, ["light spray"])
   # Moderate
   val = ["PY"]
   decoder.decode_wx_phenomena(val)
   res = decoder.decoded_metar["wx_phenomena"][self.DECODED_KEY]
   assert_equals(res, ["moderate spray"])
   # Heavy
   val = ["+PY"]
   decoder.decode_wx_phenomena(val)
   res = decoder.decoded_metar["wx_phenomena"][self.DECODED_KEY]
   assert_equals(res, ["heavy spray"])
コード例 #21
0
 def test_decode_sky_condition_no_cloud_detected_nzaa_nzwn_nzch(self):
   val = ["NCD"]
   decoder = MetarDecoderNZ()
   # NZAA
   decoder.decoded_metar["icao_id"][self.DECODED_KEY] = "NZAA"
   decoder.decode_sky_condition(val)
   res = decoder.decoded_metar["sky_condition"][self.DECODED_KEY]
   assert_equals(res, ["no cloud detected below 10,000 feet"])
   # NZAA
   decoder.decoded_metar["icao_id"][self.DECODED_KEY] = "NZWN"
   decoder.decode_sky_condition(val)
   res = decoder.decoded_metar["sky_condition"][self.DECODED_KEY]
   assert_equals(res, ["no cloud detected below 10,000 feet"])
   # NZAA
   decoder.decoded_metar["icao_id"][self.DECODED_KEY] = "NZCH"
   decoder.decode_sky_condition(val)
   res = decoder.decoded_metar["sky_condition"][self.DECODED_KEY]
   assert_equals(res, ["no cloud detected below 10,000 feet"])
コード例 #22
0
 def test_decode_dewpoint_missing(self):
     val = ""
     decoder = MetarDecoderNZ()
     decoder.decode_dewpoint(val)
     res = decoder.decoded_metar["dewpoint"][self.DECODED_KEY]
     assert_equals(res, "(missing)")
コード例 #23
0
 def test_decode_icao_id(self):
     val = "NZCH"
     decoder = MetarDecoderNZ()
     decoder.decode_icao_id(val)
     res = decoder.decoded_metar["icao_id"][self.DECODED_KEY]
     assert_equals(res, "NZCH")
コード例 #24
0
 def test_decode_icao_id(self):
   val = "NZCH"
   decoder = MetarDecoderNZ()
   decoder.decode_icao_id(val)
   res = decoder.decoded_metar["icao_id"][self.DECODED_KEY]
   assert_equals(res, "NZCH")
コード例 #25
0
 def test_decode_sky_condition_cumulonimbus(self):
     val = ["SCT085CB"]
     decoder = MetarDecoderNZ()
     decoder.decode_sky_condition(val)
     res = decoder.decoded_metar["sky_condition"][self.DECODED_KEY]
     assert_equals(res, ["scattered clouds at 8,500 feet (cumulonimbus)"])
コード例 #26
0
 def test_decode_sky_condition_sky_clear_automated(self):
     val = ["CLR"]
     decoder = MetarDecoderNZ()
     decoder.decode_sky_condition(val)
     res = decoder.decoded_metar["sky_condition"][self.DECODED_KEY]
     assert_equals(res, ["no clouds below 12,000 feet"])
コード例 #27
0
 def test_decode_sky_condition_sensor_inop(self):
     val = ["/////////"]
     decoder = MetarDecoderNZ()
     decoder.decode_sky_condition(val)
     res = decoder.decoded_metar["sky_condition"][self.DECODED_KEY]
     assert_equals(res, ["not reported (possibly due to a faulty sensor)"])
コード例 #28
0
 def test_decode_wind_speed_calm(self):
   val = "00000KT"
   decoder = MetarDecoderNZ()
   decoder.decode_wind_dir_speed(val)
   res = decoder.decoded_metar["wind_dir_speed"][self.DECODED_KEY]
   assert_equals(res, "calm winds")
コード例 #29
0
 def test_decode_wind_single_knot_speed_isnt_pluralized(self):
   val = "02001KT"
   decoder = MetarDecoderNZ()
   decoder.decode_wind_dir_speed(val)
   res = decoder.decoded_metar["wind_dir_speed"][self.DECODED_KEY]
   assert_equals(res, "from 020 degrees, at 1 knot")
コード例 #30
0
 def test_decode_wind_dir_speed_basic(self):
   val = "04003KT"
   decoder = MetarDecoderNZ()
   decoder.decode_wind_dir_speed(val)
   res = decoder.decoded_metar["wind_dir_speed"][self.DECODED_KEY]
   assert_equals(res, "from 040 degrees, at 3 knots")
コード例 #31
0
 def test_decode_wind_dir_speed_with_gusts(self):
   val = "03019G29KT"
   decoder = MetarDecoderNZ()
   decoder.decode_wind_dir_speed(val)
   res = decoder.decoded_metar["wind_dir_speed"][self.DECODED_KEY]
   assert_equals(res, "from 030 degrees, at 19 knots gusting to 29 knots")
コード例 #32
0
 def test_decode_is_not_automated(self):
   val = False
   decoder = MetarDecoderNZ()
   decoder.decode_mod_auto(val)
   res = decoder.decoded_metar["mod_auto"][self.DECODED_KEY]
   assert_equals(res, False)
コード例 #33
0
 def test_decode_sky_condition_cumulonimbus(self):
   val = ["SCT085CB"]
   decoder = MetarDecoderNZ()
   decoder.decode_sky_condition(val)
   res = decoder.decoded_metar["sky_condition"][self.DECODED_KEY]
   assert_equals(res, ["scattered clouds at 8,500 feet (cumulonimbus)"])
コード例 #34
0
 def test_decode_altimeter(self):
   val = "Q1018"
   decoder = MetarDecoderNZ()
   decoder.decode_altimeter(val)
   res = decoder.decoded_metar["altimeter"][self.DECODED_KEY]
   assert_equals(res, "1,018 hPa")
コード例 #35
0
 def test_decode_sky_condition_sky_clear_automated(self):
   val = ["CLR"]
   decoder = MetarDecoderNZ()
   decoder.decode_sky_condition(val)
   res = decoder.decoded_metar["sky_condition"][self.DECODED_KEY]
   assert_equals(res, ["no clouds below 12,000 feet"])
コード例 #36
0
 def test_decode_wind_light_variable(self):
   val = "VRB002KT"
   decoder = MetarDecoderNZ()
   decoder.decode_wind_dir_speed(val)
   res = decoder.decoded_metar["wind_dir_speed"][self.DECODED_KEY]
   assert_equals(res, "variable, at 2 knots")
コード例 #37
0
 def test_decode_sky_condition_no_cloud_detected_other_aerodromes(self):
     val = ["NCD"]
     decoder = MetarDecoderNZ()
     decoder.decode_sky_condition(val)
     res = decoder.decoded_metar["sky_condition"][self.DECODED_KEY]
     assert_equals(res, ["no cloud detected"])
コード例 #38
0
 def test_decode_is_not_special_report(self):
   val = False
   decoder = MetarDecoderNZ()
   decoder.decode_is_special_report(val)
   res = decoder.decoded_metar["is_special_report"][self.DECODED_KEY]
   assert_equals(res, False)
コード例 #39
0
 def test_decode_is_not_special_report(self):
     val = False
     decoder = MetarDecoderNZ()
     decoder.decode_is_special_report(val)
     res = decoder.decoded_metar["is_special_report"][self.DECODED_KEY]
     assert_equals(res, False)
コード例 #40
0
 def test_decode_sky_condition_no_cloud_detected_other_aerodromes(self):
   val = ["NCD"]
   decoder = MetarDecoderNZ()
   decoder.decode_sky_condition(val)
   res = decoder.decoded_metar["sky_condition"][self.DECODED_KEY]
   assert_equals(res, ["no cloud detected"])
コード例 #41
0
 def test_decode_sky_condition_sensor_inop(self):
     val = ["VV///"]
     decoder = MetarDecoderNZ()
     decoder.decode_sky_condition(val)
     res = decoder.decoded_metar["sky_condition"][self.DECODED_KEY]
     assert_equals(res, ["vertical visibility unavailable"])
コード例 #42
0
 def test_decode_dewpoint_missing(self):
   val = ""
   decoder = MetarDecoderNZ()
   decoder.decode_dewpoint(val)
   res = decoder.decoded_metar["dewpoint"][self.DECODED_KEY]
   assert_equals(res, "(missing)")
コード例 #43
0
 def test_decode_sky_condition_vertical_visibility(self):
     val = ["OVC048///"]
     decoder = MetarDecoderNZ()
     decoder.decode_sky_condition(val)
     res = decoder.decoded_metar["sky_condition"][self.DECODED_KEY]
     assert_equals(res, ["overcast at 4,800 feet (no cloud type)"])
コード例 #44
0
 def test_decode_is_not_automated(self):
     val = False
     decoder = MetarDecoderNZ()
     decoder.decode_mod_auto(val)
     res = decoder.decoded_metar["mod_auto"][self.DECODED_KEY]
     assert_equals(res, False)
コード例 #45
0
 def test_decode_sky_condition_towering_cumulus(self):
     val = ["OVC030TCU"]
     decoder = MetarDecoderNZ()
     decoder.decode_sky_condition(val)
     res = decoder.decoded_metar["sky_condition"][self.DECODED_KEY]
     assert_equals(res, ["overcast at 3,000 feet (towering cumulus)"])
コード例 #46
0
 def test_decode_altimeter(self):
     val = "Q1018"
     decoder = MetarDecoderNZ()
     decoder.decode_altimeter(val)
     res = decoder.decoded_metar["altimeter"][self.DECODED_KEY]
     assert_equals(res, "1,018 hPa")
コード例 #47
0
 def test_decode_sky_condition_sky_clear(self):
   val = ["SKC"]
   decoder = MetarDecoderNZ()
   decoder.decode_sky_condition(val)
   res = decoder.decoded_metar["sky_condition"][self.DECODED_KEY]
   assert_equals(res, ["sky clear"])
コード例 #48
0
 def test_decode_sky_condition_sensor_inop(self):
   val = ["VV///"]
   decoder = MetarDecoderNZ()
   decoder.decode_sky_condition(val)
   res = decoder.decoded_metar["sky_condition"][self.DECODED_KEY]
   assert_equals(res, ["vertical visibility unavailable"])
コード例 #49
0
 def test_decode_sky_condition_basic(self):
   val = ["FEW020"]
   decoder = MetarDecoderNZ()
   decoder.decode_sky_condition(val)
   res = decoder.decoded_metar["sky_condition"][self.DECODED_KEY]
   assert_equals(res, ["few clouds at 2,000 feet"])
コード例 #50
0
 def test_decode_sky_condition_vertical_visibility(self):
   val = ["OVC048///"]
   decoder = MetarDecoderNZ()
   decoder.decode_sky_condition(val)
   res = decoder.decoded_metar["sky_condition"][self.DECODED_KEY]
   assert_equals(res, ["overcast at 4,800 feet (no cloud type)"])
コード例 #51
0
 def test_decode_wind_dir_speed_with_gusts(self):
     val = "03019G29KT"
     decoder = MetarDecoderNZ()
     decoder.decode_wind_dir_speed(val)
     res = decoder.decoded_metar["wind_dir_speed"][self.DECODED_KEY]
     assert_equals(res, "from 030 degrees, at 19 knots gusting to 29 knots")
コード例 #52
0
 def test_decode_sky_condition_sensor_inop(self):
   val = ["/////////"]
   decoder = MetarDecoderNZ()
   decoder.decode_sky_condition(val)
   res = decoder.decoded_metar["sky_condition"][self.DECODED_KEY]
   assert_equals(res, ["not reported (possibly due to a faulty sensor)"])
コード例 #53
0
 def test_decode_wind_single_knot_speed_isnt_pluralized(self):
     val = "02001KT"
     decoder = MetarDecoderNZ()
     decoder.decode_wind_dir_speed(val)
     res = decoder.decoded_metar["wind_dir_speed"][self.DECODED_KEY]
     assert_equals(res, "from 020 degrees, at 1 knot")
コード例 #54
0
 def test_decode_sky_condition_towering_cumulus(self):
   val = ["OVC030TCU"]
   decoder = MetarDecoderNZ()
   decoder.decode_sky_condition(val)
   res = decoder.decoded_metar["sky_condition"][self.DECODED_KEY]
   assert_equals(res, ["overcast at 3,000 feet (towering cumulus)"])
コード例 #55
0
 def test_decode_wind_dir_speed_basic(self):
     val = "04003KT"
     decoder = MetarDecoderNZ()
     decoder.decode_wind_dir_speed(val)
     res = decoder.decoded_metar["wind_dir_speed"][self.DECODED_KEY]
     assert_equals(res, "from 040 degrees, at 3 knots")
コード例 #56
0
 def test_decode_sky_condition_basic(self):
     val = ["FEW020"]
     decoder = MetarDecoderNZ()
     decoder.decode_sky_condition(val)
     res = decoder.decoded_metar["sky_condition"][self.DECODED_KEY]
     assert_equals(res, ["few clouds at 2,000 feet"])
コード例 #57
0
 def test_decode_wind_speed_calm(self):
     val = "00000KT"
     decoder = MetarDecoderNZ()
     decoder.decode_wind_dir_speed(val)
     res = decoder.decoded_metar["wind_dir_speed"][self.DECODED_KEY]
     assert_equals(res, "calm winds")
コード例 #58
0
 def test_decode_sky_condition_sky_clear(self):
     val = ["SKC"]
     decoder = MetarDecoderNZ()
     decoder.decode_sky_condition(val)
     res = decoder.decoded_metar["sky_condition"][self.DECODED_KEY]
     assert_equals(res, ["sky clear"])
コード例 #59
0
 def test_decode_wind_light_variable(self):
     val = "VRB002KT"
     decoder = MetarDecoderNZ()
     decoder.decode_wind_dir_speed(val)
     res = decoder.decoded_metar["wind_dir_speed"][self.DECODED_KEY]
     assert_equals(res, "variable, at 2 knots")
コード例 #60
0
 def test_decode_sky_condition_vertical_visibility(self):
   val = ["VV048"]
   decoder = MetarDecoderNZ()
   decoder.decode_sky_condition(val)
   res = decoder.decoded_metar["sky_condition"][self.DECODED_KEY]
   assert_equals(res, ["vertical visibility (indefinite ceiling) at 4,800 feet"])