def test_04_02_reopen_with_write(self): self.hdf5_dict[OBJECT_NAME, FEATURE_NAME, 1] = "Hello" self.hdf5_dict.close() self.hdf5_dict = H5DICT.HDF5Dict(self.temp_filename, mode="r+") self.assertEqual(self.hdf5_dict[OBJECT_NAME, FEATURE_NAME, 1], "Hello") self.hdf5_dict[OBJECT_NAME, FEATURE_NAME, 2] = "World" self.assertEqual(self.hdf5_dict[OBJECT_NAME, FEATURE_NAME, 2], "World") self.hdf5_dict.close() self.hdf5_dict = H5DICT.HDF5Dict(self.temp_filename, mode="a") self.assertEqual(self.hdf5_dict[OBJECT_NAME, FEATURE_NAME, 1], "Hello") self.hdf5_dict[OBJECT_NAME, FEATURE_NAME, 3] = "Append" self.assertEqual(self.hdf5_dict[OBJECT_NAME, FEATURE_NAME, 3], "Append")
def test_05_01_in_memory(self): if sys.platform == "darwin": self.assertRaises(NotImplementedError, H5DICT.HDF5Dict, None) else: hdf5_dict = H5DICT.HDF5Dict(None) hdf5_dict[OBJECT_NAME, FEATURE_NAME, 1] = "Hello" self.assertEqual(hdf5_dict[OBJECT_NAME, FEATURE_NAME, 1], "Hello")
def test_04_01_reopen_read_only(self): self.hdf5_dict[OBJECT_NAME, FEATURE_NAME, 1] = "Hello" self.hdf5_dict.close() self.hdf5_dict = H5DICT.HDF5Dict(self.temp_filename, mode="r") self.assertEqual(self.hdf5_dict[OBJECT_NAME, FEATURE_NAME, 1], "Hello") with self.assertRaises(Exception): self.hdf5_dict[OBJECT_NAME, FEATURE_NAME, 2] = "World"
def test_06_01_reorder(self): r = np.random.RandomState() r.seed(601) values = ["v%d" % i for i in range(1, 11)] for idx in r.permutation(len(values)): self.hdf5_dict[OBJECT_NAME, FEATURE_NAME, idx + 1] = values[idx] new_image_numbers = np.hstack(([0], r.permutation(len(values)) + 1)) self.hdf5_dict.reorder(OBJECT_NAME, FEATURE_NAME, new_image_numbers) for reopen in (False, True): if reopen: self.hdf5_dict.close() self.hdf5_dict = H5DICT.HDF5Dict(self.temp_filename, mode="r") for idx, image_number in enumerate(new_image_numbers[1:]): self.assertEqual( values[idx], self.hdf5_dict[OBJECT_NAME, FEATURE_NAME, image_number])
def test_08_01_copy(self): self.hdf5_dict[OBJECT_NAME, FEATURE_NAME, 1] = "Hello" temp_fd, temp_filename = tempfile.mkstemp(".h5") try: h5copy = H5DICT.HDF5Dict(temp_filename, copy=self.hdf5_dict.top_group) self.assertTrue(h5copy.has_object(OBJECT_NAME)) self.assertTrue(h5copy.has_feature(OBJECT_NAME, FEATURE_NAME)) self.assertEqual(h5copy[OBJECT_NAME, FEATURE_NAME, 1], "Hello") finally: h5copy.close() os.close(temp_fd) os.remove(temp_filename) self.assertFalse( os.path.exists(temp_filename), "If the file can't be removed, it's a bug. " "Clean up your trash: %s" % temp_filename)
def test_07_01_file_contents(self): self.hdf5_dict[OBJECT_NAME, FEATURE_NAME, 1] = "Hello" contents = self.hdf5_dict.file_contents() fd, filename = tempfile.mkstemp(".h5") if sys.platform.startswith("win"): import msvcrt msvcrt.setmode(fd, os.O_BINARY) os.write(fd, contents) os.close(fd) h5copy = None try: h5copy = H5DICT.HDF5Dict(filename, mode="r") self.assertTrue(h5copy.has_feature(OBJECT_NAME, FEATURE_NAME)) self.assertEqual(h5copy[OBJECT_NAME, FEATURE_NAME, 1], "Hello") finally: if h5copy is not None: h5copy.close() os.unlink(filename)
def setUp(self): self.temp_fd, self.temp_filename = tempfile.mkstemp(".h5") self.hdf5_dict = H5DICT.HDF5Dict(self.temp_filename)