def test_140_parseWind(self): """Check parsing of wind groups.""" report = metar.Metar(sta_time + "09010KT") self.assertEqual(report.wind_dir.value(), 90) self.assertEqual(report.wind_speed.value(), 10) self.assertEqual(report.wind_gust, None) self.assertEqual(report.wind_dir_from, None) self.assertEqual(report.wind_dir_from, None) self.assertEqual(report.wind(), "E at 10 knots") report = metar.Metar(sta_time + "09010MPS") self.assertEqual(report.wind_speed.value(), 10) self.assertEqual(report.wind_speed.value("KMH"), 36) self.assertEqual(report.wind(), "E at 19 knots") self.assertEqual(report.wind("MPS"), "E at 10 mps") self.assertEqual(report.wind("KMH"), "E at 36 km/h") report = metar.Metar(sta_time + "09010KMH") self.assertEqual(report.wind_speed.value(), 10) self.assertEqual(report.wind(), "E at 5 knots") self.assertEqual(report.wind('KMH'), "E at 10 km/h") report = metar.Metar(sta_time + "090010KT") self.assertEqual(report.wind_dir.value(), 90) self.assertEqual(report.wind_speed.value(), 10) report = metar.Metar(sta_time + "000000KT") self.assertEqual(report.wind_dir.value(), 0) self.assertEqual(report.wind_speed.value(), 0) self.assertEqual(report.wind(), "calm") report = metar.Metar(sta_time + "VRB03KT") self.assertEqual(report.wind_dir, None) self.assertEqual(report.wind_speed.value(), 3) self.assertEqual(report.wind(), "variable at 3 knots") report = metar.Metar(sta_time + "VRB00KT") self.assertEqual(report.wind(), "calm") report = metar.Metar(sta_time + "VRB03G40KT") self.assertEqual(report.wind_dir, None) self.assertEqual(report.wind_speed.value(), 3) self.assertEqual(report.wind_gust.value(), 40) self.assertEqual(report.wind_dir_from, None) self.assertEqual(report.wind_dir_to, None) self.assertEqual(report.wind(), "variable at 3 knots, gusting to 40 knots") report = metar.Metar(sta_time + "21010G30KT") self.assertEqual(report.wind(), "SSW at 10 knots, gusting to 30 knots") report = metar.Metar(sta_time + "21010KT 180V240") self.assertEqual(report.wind_dir.value(), 210) self.assertEqual(report.wind_speed.value(), 10) self.assertEqual(report.wind_gust, None) self.assertEqual(report.wind_dir_from.value(), 180) self.assertEqual(report.wind_dir_to.value(), 240) self.assertEqual(report.wind(), "S to WSW at 10 knots")
def test_032_parseTime_specify_month(self): """Check that the month can be specified.""" last_month = ((today.month - 2) % 12) + 1 last_year = today.year - 1 report = metar.Metar("KEWR 101651Z", month=last_month) self.assertEqual(report.time.month, last_month)
def test_snowdepth(self): """Check parsing of 4/ group snowdepth""" sample_metar = ("KDOV 040558Z 23004KT 1 1/2SM R01/2800FT -SN BR " "OVC006 M01/M01 A3015 RMK AO2A SLP213 P0000 4/001 " "60010 T10071007 10017 " "21009 55016 VISNO RWY19 CHINO RWY19 $") m = metar.Metar(sample_metar) self.assertEquals(m.snowdepth.value(), 1)
def report(trend_group, remarks=""): """(Macro) Return Metar object for a report containing the given trend forecast and remarks. """ sample_metar = sta_time + "09010KT 10SM -SN OVC020 23/05 Q1001" return metar.Metar(sample_metar + ' ' + trend_group + ' ' + remarks)
def test_030_parseTime_legal(self): """Check parsing of the time stamp.""" report = metar.Metar("KEWR 101651Z") self.assertEqual(report.time.day, 10) self.assertEqual(report.time.hour, 16) self.assertEqual(report.time.minute, 51) if today.day > 10 or (today.hour > 16 and today.day == 10): self.assertEqual(report.time.month, today.month) if today.month > 1 or today.day > 10: self.assertEqual(report.time.year, today.year)
def test_034_parseTime_auto_year(self): """Check that year is adjusted correctly if specified month is in the future.""" next_month = (today.month % 12) + 1 last_year = today.year - 1 report = metar.Metar("KEWR 101651Z", month=next_month) self.assertEqual(report.time.month, next_month) if next_month > 1: self.assertEqual(report.time.year, last_year) else: self.assertEqual(report.time.year, today.year)
def test_033_parseTime_auto_month(self): """Check that we assign report to previous month if it can't be in this month.""" next_day = tomorrow.day if next_day > today.day: last_month = ((today.month - 2) % 12) + 1 last_year = today.year - 1 timestr = "%02d1651Z" % (next_day) report = metar.Metar("KEWR " + timestr) self.assertEqual(report.time.day, next_day) self.assertEqual(report.time.month, last_month) if today.month > 1: self.assertEqual(report.time.year, today.year) else: self.assertEqual(report.time.year, last_year)
def test_035_parseTime_suppress_auto_month(self): """Check that explicit month suppresses automatic month rollback.""" next_day = tomorrow.day if next_day > today.day: last_month = ((today.month - 2) % 12) + 1 last_year = today.year - 1 timestr = "%02d1651Z" % (next_day) report = metar.Metar("KEWR " + timestr, month=1) self.assertEqual(report.time.day, next_day) self.assertEqual(report.time.month, 1) if today.month > 1: self.assertEqual(report.time.year, today.year) else: self.assertEqual(report.time.year, last_year)
def test_040_parseModifier_default(self): """Check default 'modifier' value.""" self.assertEqual(metar.Metar("KEWR").mod, "AUTO")
def test_011_parseType_legal(self): """Check parsing of the report type.""" self.assertEqual(metar.Metar("METAR").type, "METAR") self.assertEqual(metar.Metar("SPECI").type, "SPECI") self.raisesParserError("TAF")
def test_041_parseModifier(self): """Check parsing of 'modifier' groups.""" self.assertEqual(metar.Metar(sta_time + "AUTO").mod, "AUTO") self.assertEqual(metar.Metar(sta_time + "COR").mod, "COR")
def test_031_parseTime_specify_year(self): """Check that the year can be specified.""" other_year = 2003 report = metar.Metar("KEWR 101651Z", year=other_year) self.assertEqual(report.time.year, other_year)
def report(mod_group): """(Macro) Return Metar object from parsing the given modifier group.""" return metar.Metar(sta_time + mod_group)
def report(runway_state): """(Macro) Return Metar object for a report containing the given runway state group""" sample_metar = 'EGNX 191250Z VRB03KT 9999 -RASN FEW008 SCT024 BKN046 M01/M03 Q0989 ' return metar.Metar(sample_metar + ' ' + runway_state)
def report(vis_group): """(Macro) Return Metar object for a report containing the given visibility group.""" return metar.Metar(sta_time + "09010KT " + vis_group)
def test_010_parseType_default(self): """Check default value of the report type.""" self.assertEqual(metar.Metar("KEWR").type, "METAR")
def report(wind_group): """(Macro) Return Metar object from parsing the given wind group.""" return metar.Metar(sta_time + wind_group)
def test_020_parseStation_legal(self): """Check parsing of the station code.""" self.assertEqual(metar.Metar("KEWR").station_id, "KEWR") self.assertEqual(metar.Metar("METAR KEWR").station_id, "KEWR") self.assertEqual(metar.Metar("BIX1").station_id, "BIX1") self.assertEqual(metar.Metar("K256").station_id, "K256")
def test_process_sky_cover(self): teststring = 'METAR KPDX 010855Z 00000KT 10SM FEW010 OVC200 04/03 A3031 RMK AO2 SLP262 T00390028 53010 $' obs = metar.Metar(teststring) testval = station._process_sky_cover(obs) ntools.assert_equal(testval, 1.0000)