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)
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)
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)
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])
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"))
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)
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")
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
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")
def test_fileno_encoding(self): with open(self.pathname, "rb") as fd: with dballe.File(fd, "BUFR") as f: self.assertContents(f)
def test_fileno(self): with open(self.pathname, "rb") as fd: with dballe.File(fd) as f: self.assertContents(f)
def test_named_encoding(self): with dballe.File(self.pathname, "bufr") as f: self.assertContents(f)
def test_named(self): with dballe.File(self.pathname) as f: self.assertContents(f) self.assertEqual(f.encoding, "BUFR")