Beispiel #1
0
    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")
Beispiel #2
0
    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)
Beispiel #3
0
 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)
Beispiel #4
0
   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)
Beispiel #5
0
 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)
Beispiel #6
0
    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)
Beispiel #7
0
    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)
Beispiel #8
0
    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)
Beispiel #9
0
 def test_040_parseModifier_default(self):
     """Check default 'modifier' value."""
     self.assertEqual(metar.Metar("KEWR").mod, "AUTO")
Beispiel #10
0
 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")
Beispiel #11
0
 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")
Beispiel #12
0
    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)
Beispiel #13
0
 def report(mod_group):
     """(Macro) Return Metar object from parsing the given modifier group."""
     return metar.Metar(sta_time + mod_group)
Beispiel #14
0
 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)
Beispiel #15
0
 def report(vis_group):
     """(Macro) Return Metar object for a report containing the given visibility group."""
     return metar.Metar(sta_time + "09010KT " + vis_group)
Beispiel #16
0
 def test_010_parseType_default(self):
     """Check default value of the report type."""
     self.assertEqual(metar.Metar("KEWR").type, "METAR")
Beispiel #17
0
 def report(wind_group):
     """(Macro) Return Metar object from parsing the given wind group."""
     return metar.Metar(sta_time + wind_group)
Beispiel #18
0
 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")
Beispiel #19
0
 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)