import unittest from datetime import datetime class ParserV0Tests(unittest.TestCase): line = ("TIME 0 ACCURAIN 0.000000 TEMP107_4 8.139600 " "LI200X 0.066020 TEMP107_1 9.307800 RH41372 92.064000 " "TEMP107_5 -99999.000000 CS105 970.100000 PAROSCI 971.428000 " "WSPD05305 8.663000 TEMP107_3 8.368400 CS10162 65.653000 " "RAIN380M 0.000000 TEMP107_2 8.287800 TEMP41372 8.202300 " "WDIR05305 143.380000\n") def _cut(self): from aosstower.l00.parser import ParserV0 return ParserV0() def test_maybe_mine(self): parser = self._cut() self.assertTrue(parser.maybe_mine(self.line)) bad_line = 'xx' + self.line self.assertFalse(parser.maybe_mine(bad_line)) def test_record_format(self): parser = self._cut() record = parser.parse(self.line) self.assertIn('stamp', record) self.assertEqual(record['stamp'], datetime(1970, 1, 1)) class ParserV1V2Tests(unittest.TestCase): line = ("1,1970,1,0000,0,976.59,5.8564,30.085,25.893,977.36,58732," "47.375,24.234,23.865,22.615,37.219,6.9222,67.398,145.2,45.581," "22.669,10.417,145.2,22.665,163.94,0,0,30.015,29.89\n") def _cut(self): from aosstower.l00.parser import ParserV1V2 return ParserV1V2() def test_maybe_mine(self): parser = self._cut() self.assertTrue(parser.maybe_mine(self.line)) bad_line = 'xx,' + self.line.strip() self.assertFalse(parser.maybe_mine(bad_line)) def test_record_format(self): parser = self._cut() record = parser.parse(self.line) self.assertIn('stamp', record) self.assertEqual(record['stamp'], datetime(1970, 1, 1)) def test_record_supports_v1_and_v2(self): parser = self._cut() parser.parse(self.line) parser.parse(self.line.strip() + ',999\n')