Beispiel #1
0
    def test_domain_errors(self):
        pathname = test_pathname("bufr/interpreted-range.bufr")
        with dballe.File(pathname) as f:
            binmsg = next(f)

        with self.assertRaises(ValueError):
            dballe.Importer("BUFR", domain_errors="throw")

        importer = dballe.Importer("BUFR", domain_errors="raise")
        with self.assertRaises(OverflowError):
            importer.from_binary(binmsg)

        importer = dballe.Importer("BUFR", domain_errors="unset")
        msgs = importer.from_binary(binmsg)
        val = msgs[0].get(dballe.Level(1), dballe.Trange(254, 0, 0), "B22043")
        self.assertFalse(val.isset)

        importer = dballe.Importer("BUFR", domain_errors="clamp")
        msgs = importer.from_binary(binmsg)
        val = msgs[0].get(dballe.Level(1), dballe.Trange(254, 0, 0), "B22043")
        self.assertEqual(val.enqd(), 327.66)

        importer = dballe.Importer("BUFR", domain_errors="tag")
        msgs = importer.from_binary(binmsg)
        val = msgs[0].get(dballe.Level(1), dballe.Trange(254, 0, 0), "B22043")
        self.assertEqual(val.enqd(), 327.66)
        a = val.enqa("B33192")
        self.assertTrue(a)
        self.assertEqual(a.enqi(), 0)
Beispiel #2
0
    def test_refcounts(self):
        pathname = test_pathname("bufr/gts-acars-uk1.bufr")
        importer = dballe.Importer("BUFR")
        self.assertEqual(sys.getrefcount(importer), 2)  # importer, getrefcount

        with dballe.File(pathname) as f:
            self.assertEqual(sys.getrefcount(importer),
                             2)  # importer, getrefcount
            self.assertEqual(sys.getrefcount(f),
                             3)  # __enter__ result, f, getrefcount
            fimp = importer.from_file(f)
            self.assertEqual(sys.getrefcount(importer),
                             3)  # importer, fimp, getrefcount
            self.assertEqual(sys.getrefcount(f),
                             4)  # __enter__ result, f, fimp, getrefcount
            decoded = list(fimp)
            self.assertEqual(sys.getrefcount(importer),
                             3)  # importer, fimp, getrefcount
            self.assertEqual(sys.getrefcount(f),
                             4)  # __enter__ result, f, fimp, getrefcount

        self.assertEqual(sys.getrefcount(importer),
                         3)  # importer, fimp, getrefcount
        self.assertEqual(sys.getrefcount(f), 3)  # f, fimp, getrefcount
        self.assertEqual(len(decoded), 1)
Beispiel #3
0
 def test_import_message_sequence(self):
     importer = dballe.Importer("BUFR")
     with dballe.File(test_pathname("bufr/vad.bufr")) as fp:
         for binmsg in fp:
             self.db.import_messages(importer.from_binary(binmsg))
     with self.deprecated_on_db():
         self.assertEqual(self.db.query_data({}).remaining, 371)
Beispiel #4
0
    def test_default(self):
        pathname = test_pathname("bufr/gts-acars-uk1.bufr")
        with dballe.File(pathname) as f:
            binmsg = next(f)

        importer = dballe.Importer("BUFR")
        msg = importer.from_binary(binmsg)
        self.assertEqual(len(msg), 1)
        self.assert_gts_acars_uk1_contents(msg[0])
Beispiel #5
0
 def test_import_varlist(self):
     with self.transaction() as tr:
         tr.remove_all()
         importer = dballe.Importer("BUFR")
         with dballe.File(test_pathname("bufr/vad.bufr")) as fp:
             tr.import_messages(importer.from_file(fp),
                                varlist="B11001,B11002")
         for cur in tr.query_data():
             self.assertIn(cur["var"], ("B11001", "B11002"))
Beispiel #6
0
    def test_fromfile(self):
        pathname = test_pathname("bufr/gts-acars-uk1.bufr")
        importer = dballe.Importer("BUFR")

        with dballe.File(pathname) as f:
            decoded = list(importer.from_file(f))

        self.assertEqual(len(decoded), 1)
        self.assertEqual(len(decoded[0]), 1)
        msg = decoded[0][0]
        self.assert_gts_acars_uk1_contents(msg)
Beispiel #7
0
    def test_issue197(self):
        pathname = test_pathname("bufr/gts-acars-uk1.bufr")

        with dballe.File(pathname) as f:
            binmsg = next(f)

        importer = dballe.Importer("BUFR")
        msgs = importer.from_binary(binmsg)
        with msgs[0].query_data() as m:
            with self.assertRaises(RuntimeError) as e:
                m.data
            self.assertEqual(
                str(e.exception),
                "cannot access values on a cursor before or after iteration")
Beispiel #8
0
 def test_refcounting(self):
     file = dballe.File(self.pathname)
     self.assertEqual(sys.getrefcount(file), 2)  # file, getrefcount
     with file as f:
         self.assertEqual(sys.getrefcount(file),
                          4)  # file, __enter__ result, f, getrefcount
         self.assertEqual(sys.getrefcount(f),
                          4)  # file, __enter__ result, f, getrefcount
         for msg in f:
             self.assertEqual(
                 sys.getrefcount(f), 5
             )  # file, __enter__ result, f, __iter__ result, getrefcount
             self.assertEqual(sys.getrefcount(msg), 2)  # msg, getrefcount
             data = bytes(msg)
             self.assertEqual(sys.getrefcount(msg), 2)  # msg, getrefcount
             self.assertEqual(sys.getrefcount(data), 2)  # data, getrefcount
         self.assertEqual(sys.getrefcount(msg), 2)  # msg, getrefcount
         self.assertEqual(sys.getrefcount(f),
                          4)  # file, __enter__ result, f, getrefcount
     self.assertEqual(sys.getrefcount(file), 3)  # file, f, _getrefcount
     self.assertEqual(sys.getrefcount(f), 3)  # file, f, _getrefcount
Beispiel #9
0
 def test_byteio_encoding(self):
     with open(self.pathname, "rb") as read_fd:
         with io.BytesIO(read_fd.read()) as fd:
             with dballe.File(fd, "BUFR") as f:
                 self.assertContents(f,
                                     pathname=r"^<_io\.BytesIO object at")
Beispiel #10
0
 def test_fileno_encoding(self):
     with open(self.pathname, "rb") as fd:
         with dballe.File(fd, "BUFR") as f:
             self.assertContents(f)
Beispiel #11
0
 def test_fileno(self):
     with open(self.pathname, "rb") as fd:
         with dballe.File(fd) as f:
             self.assertContents(f)
Beispiel #12
0
 def test_named_encoding(self):
     with dballe.File(self.pathname, "bufr") as f:
         self.assertContents(f)
Beispiel #13
0
 def test_named(self):
     with dballe.File(self.pathname) as f:
         self.assertContents(f)
     self.assertEqual(f.encoding, "BUFR")