Exemplo n.º 1
0
 def test_serialize(self):
     """Message can be serialized to file."""
     with BufrFile(TESTBUFR) as bufr_file:
         msg = BufrMessage(bufr_file)
         with open(TEST_OUTPUT, "w") as test:
             msg.write(test)
     os.unlink(TEST_OUTPUT)
Exemplo n.º 2
0
 def test_serialize(self):
     """Message can be serialized to file."""
     with BufrFile(TESTBUFR) as bufr_file:
         msg = BufrMessage(bufr_file)
         with open(TEST_OUTPUT, "w") as test:
             msg.write(test)
     os.unlink(TEST_OUTPUT)
Exemplo n.º 3
0
 def test_value_setting(self):
     """Keys can be set properly."""
     with BufrFile(TESTBUFR) as bufr_file:
         msg = BufrMessage(bufr_file)
         key, val = "localLongitude", 5
         msg[key] = val
         self.assertEqual(msg[key], val)
Exemplo n.º 4
0
 def test_memory_management(self):
     """Messages in BufrFile can be opened and closed properly."""
     with BufrFile(TESTBUFR) as bufr_file:
         self.assertEqual(len(bufr_file), 3)
         for i in range(len(bufr_file)):
             msg = BufrMessage(bufr_file)
             self.assertEqual(msg["bufrHeaderCentre"], 98)
             self.assertEqual(msg['count'], i + 1)
         self.assertEqual(len(bufr_file.open_messages), 3)
     self.assertEquals(len(bufr_file.open_messages), 0)
Exemplo n.º 5
0
 def test_copy_data(self):
     """Can copy data section from one message to another"""
     bufr = BufrMessage(sample='BUFR3')
     with BufrFile('../../data/bufr/metar_with_2_bias.bufr') as bufr_file:
         bufrin = BufrMessage(bufr_file)
         ivalues=(
             0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
             0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
             0, 0, 0, 1, 1, 1, 1, 1, 1, 1,
             1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
             1, 1, 1, 1, 1, 0, 1, 1, 1, 1,
             1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
             1, 1, 1, 1, 1, 1, 1, 1, 0)
         bufr['inputDataPresentIndicator'] = ivalues
         bufr['edition'] = 3
         bufr['masterTableNumber'] = 0
         bufr['bufrHeaderSubCentre'] = 0
         bufr['bufrHeaderCentre'] = 98
         bufr['updateSequenceNumber'] = 1
         bufr['dataCategory'] = 0
         bufr['dataSubCategory'] = 140
         bufr['masterTablesVersionNumber'] = 13
         bufr['localTablesVersionNumber'] = 1
         bufr['typicalYearOfCentury'] = 15
         bufr['typicalMonth'] = 5
         bufr['typicalDay'] = 4
         bufr['typicalHour'] = 9
         bufr['typicalMinute'] = 30
         bufr['numberOfSubsets'] = 1
         bufr['observedData'] = 1
         bufr['compressedData'] = 0
         ivalues=(
             307011,7006,10004,222000,101023,31031,1031,1032,101023,33007,
             225000,236000,101023,31031,1031,1032,8024,101001,225255,225000,
             236000,101023,31031,1031,1032,8024,101001,225255,
             1063,2001,4001,4002,4003,4004,4005,5002,
             6002,7001,7006,11001,11016,11017,11002)
         bufr['unexpandedDescriptors'] = ivalues
         bufrin.unpack()
         bufrin.copy_data(bufr)
         with open(TEST_OUTPUT, 'w') as test:
             bufr.write(test)
         os.unlink(TEST_OUTPUT)
Exemplo n.º 6
0
 def test_metadata(self):
     """Metadata is read correctly from BufrMessage."""
     with BufrFile(TESTBUFR) as bufr_file:
         msg = BufrMessage(bufr_file)
         msg.unpack()
         msg_keys = list(msg.keys())
         self.assertEqual(len(msg_keys), 146)
         for key in KNOWN_BUFR_KEYS:
             assert key in msg_keys
         # Size of message in bytes
         self.assertEqual(msg.size(), 220)
         self.assertEqual(len(list(msg.keys())), len(msg))
Exemplo n.º 7
0
 def test_metadata(self):
     """Metadata is read correctly from BufrMessage."""
     with BufrFile(TESTBUFR) as bufr_file:
         msg = BufrMessage(bufr_file)
         msg.unpack()
         msg_keys = msg.keys()
         self.assertEqual(len(msg_keys), 140)
         for key in KNOWN_BUFR_KEYS:
             assert key in msg_keys
         # Size of message in bytes
         self.assertEqual(msg.size(), 220)
         self.assertEqual(len(msg.keys()), len(msg))
Exemplo n.º 8
0
 def test_clone(self):
     """Messages can be used to produce clone Messages."""
     with BufrFile(TESTBUFR) as bufr_file:
         msg = BufrMessage(bufr_file)
         msg2 = BufrMessage(clone=msg)
         self.assertSequenceEqual(list(msg.keys()), list(msg2.keys()))
Exemplo n.º 9
0
 def test_content(self):
     """Data values are read correctly from BufrMessage."""
     with BufrFile(TESTBUFR) as bufr_file:
         msg = BufrMessage(bufr_file)
         msg.unpack()
         self.assertEqual(msg["airTemperatureAt2M"], 274.5)
Exemplo n.º 10
0
 def test_read_invalid_file(self):
     """Trying to open message on nonexistent file raises IOError."""
     with NamedTemporaryFile(mode='r') as f:
         with BufrFile(f.name) as bufr_file:
             self.assertRaises(IOError, lambda: BufrMessage(bufr_file))
Exemplo n.º 11
0
 def test_read_past_last_message(self):
     """Trying to open message on exhausted BUFR file raises IOError."""
     with BufrFile(TESTBUFR) as bufr_file:
         for _ in range(len(bufr_file)):
             BufrMessage(bufr_file)
         self.assertRaises(IOError, lambda: BufrMessage(bufr_file))
Exemplo n.º 12
0
 def test_clone(self):
     """Messages can be used to produce clone Messages."""
     with BufrFile(TESTBUFR) as bufr_file:
         msg = BufrMessage(bufr_file)
         msg2 = BufrMessage(clone=msg)
         self.assertSequenceEqual(msg.keys(), msg2.keys())
Exemplo n.º 13
0
 def test_content(self):
     """Data values are read correctly from BufrMessage."""
     with BufrFile(TESTBUFR) as bufr_file:
         msg = BufrMessage(bufr_file)
         msg.unpack()
         self.assertEqual(msg["airTemperatureAt2M"], 274.5)