Пример #1
0
 def test_iterator_protocol(self):
     """The GribFile allows pythonic iteration over all messages."""
     step_ranges = []
     with GribFile(TESTGRIB) as grib:
         for msg in grib:
             step_ranges.append(msg["stepRange"])
     self.assertSequenceEqual(step_ranges, ["0", "6", "12", "18", "24"])
Пример #2
0
 def test_serialize(self):
     """Message can be serialized to file."""
     with GribFile(TESTGRIB) as grib:
         msg = GribMessage(grib)
         with open(TEST_OUTPUT, "w") as test:
             msg.write(test)
     os.unlink(TEST_OUTPUT)
Пример #3
0
 def test_metadata(self):
     """Metadata is read correctly from GribMessage."""
     with GribFile(TESTGRIB) as grib:
         msg = GribMessage(grib)
         key_count = 255
         self.assertEqual(len(msg), key_count)
         self.assertEqual(msg.size(), 160219)
         self.assertEqual(len(msg.keys()), key_count)
Пример #4
0
 def test_iteration_works(self):
     """The GribFile allows proper iteration over all messages."""
     step_ranges = []
     with GribFile(TESTGRIB) as grib:
         for _ in range(len(grib)):
             msg = GribMessage(grib)
             step_ranges.append(msg["stepRange"])
     self.assertSequenceEqual(step_ranges, ["0", "6", "12", "18", "24"])
Пример #5
0
 def test_missing_message_behavior(self):
     """Missing messages are detected properly."""
     with GribFile(TESTGRIB) as grib:
         msg = GribMessage(grib)
         self.assertTrue(msg.missing("scaleFactorOfSecondFixedSurface"))
         msg["scaleFactorOfSecondFixedSurface"] = 5
         msg.set_missing("scaleFactorOfSecondFixedSurface")
         with self.assertRaises(KeyError):
             msg["scaleFactorOfSecondFixedSurface"]
Пример #6
0
 def test_memory_management(self):
     """Messages in GribFile can be opened and closed properly."""
     with GribFile(TESTGRIB) as grib:
         self.assertEqual(len(grib), 5)
         for i in range(len(grib)):
             msg = GribMessage(grib)
             self.assertEqual(msg["shortName"], "msl")
         self.assertEqual(len(grib.open_messages), 5)
     self.assertEqual(len(grib.open_messages), 0)
Пример #7
0
 def test_value_setting(self):
     """Keys can be set properly."""
     with GribFile(TESTGRIB) as grib:
         msg = GribMessage(grib)
         msg["scaleFactorOfSecondFixedSurface"] = 5
         msg["values"] = [1, 2, 3]
Пример #8
0
 def test_read_invalid_file(self):
     """Trying to open message on nonexistent GRIB file raises IOError."""
     with NamedTemporaryFile(mode='r') as f:
         with GribFile(f.name) as grib:
             self.assertRaises(IOError, lambda: GribMessage(grib))
Пример #9
0
 def test_read_past_last_message(self):
     """Trying to open message on exhausted GRIB file raises IOError."""
     with GribFile(TESTGRIB) as grib:
         for _ in range(len(grib)):
             GribMessage(grib)
         self.assertRaises(IOError, lambda: GribMessage(grib))
Пример #10
0
 def test_clone(self):
     """Messages can be used to produce clone Messages."""
     with GribFile(TESTGRIB) as grib:
         msg = GribMessage(grib)
         msg2 = GribMessage(clone=msg)
         self.assertSequenceEqual(msg.keys(), msg2.keys())