def test_read(self): ds_io = MemDatasetIO() with self.assertRaises(FileNotFoundError): ds_io.read('test.nc') ds1 = xr.Dataset() ds_io._datasets['test.nc'] = ds1 ds2 = ds_io.read('test.nc') self.assertIs(ds2, ds1)
def test_append(self): ds_io = MemDatasetIO() ds1 = new_test_dataset('2017-02-01', 180, temperature=1.2, precipitation=2.1) ds2 = new_test_dataset('2017-02-02', 180, temperature=2.3, precipitation=3.2) ds3 = new_test_dataset('2017-02-03', 180, temperature=3.4, precipitation=4.3) ds_io.append(ds1, 'test.nc') ds_io.append(ds2, 'test.nc') ds_io.append(ds3, 'test.nc') ds4 = ds_io._datasets.get('test.nc') self.assertIsNotNone(ds4) self.assertIn('time', ds4) self.assertIn('temperature', ds4) self.assertEqual(('time', 'lat', 'lon'), ds4.temperature.dims) self.assertEqual((3, 180, 360), ds4.temperature.shape) expected_time = xr.DataArray( pd.to_datetime(['2017-02-01', '2017-02-02', '2017-02-03'])) np.testing.assert_equal(expected_time.values, ds4.time.values)
def test_find_by_name(self): ds_io = find_dataset_io('netcdf4') self.assertIsInstance(ds_io, Netcdf4DatasetIO) ds_io = find_dataset_io('zarr', modes=['a']) self.assertIsInstance(ds_io, ZarrDatasetIO) ds_io = find_dataset_io('zarr', modes=['w']) self.assertIsInstance(ds_io, ZarrDatasetIO) ds_io = find_dataset_io('zarr', modes=['r']) self.assertIsInstance(ds_io, ZarrDatasetIO) ds_io = find_dataset_io('mem') self.assertIsInstance(ds_io, MemDatasetIO) ds_io = find_dataset_io('bibo', default=MemDatasetIO()) self.assertIsInstance(ds_io, MemDatasetIO)
def test_write(self): ds_io = MemDatasetIO() ds1 = xr.Dataset() ds_io.write(ds1, 'test.nc') ds2 = ds_io._datasets['test.nc'] self.assertIs(ds2, ds1)
def test_fitness(self): ds_io = MemDatasetIO() self.assertEqual(0.75, ds_io.fitness("test.mem", path_type=None)) self.assertEqual(0.75, ds_io.fitness("test.mem", path_type="file")) self.assertEqual(0.75, ds_io.fitness("test.mem", path_type="dir")) self.assertEqual( 0.75, ds_io.fitness("http://dsio/test.mem", path_type="url")) self.assertEqual(0.0, ds_io.fitness("test.png", path_type=None)) self.assertEqual(0.0, ds_io.fitness("test.png", path_type="file")) self.assertEqual(0.0, ds_io.fitness("test.png", path_type="dir")) self.assertEqual( 0.0, ds_io.fitness("http://dsio/test.png", path_type="url")) ds_io.write(xr.Dataset(), "bibo.odod") self.assertEqual(1.0, ds_io.fitness("bibo.odod", path_type=None)) self.assertEqual(1.0, ds_io.fitness("bibo.odod", path_type="file")) self.assertEqual(1.0, ds_io.fitness("bibo.odod", path_type="dir")) self.assertEqual(1.0, ds_io.fitness("bibo.odod", path_type="url"))
def test_props(self): ds_io = MemDatasetIO() self.assertEqual('mem', ds_io.name) self.assertEqual('mem', ds_io.ext) self.assertEqual('In-memory dataset I/O', ds_io.description) self.assertEqual({'r', 'w', 'a'}, ds_io.modes)