Skip to content
Snippets Groups Projects
test_parser.py 1.89 KiB
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')