v1.0.0-rc.38
This commit is contained in:
@@ -94,6 +94,123 @@ TEST_CASE("HDF5DataSet_vector", "[HDF5][Unit]") {
|
||||
REQUIRE (H5Fget_obj_count(H5F_OBJ_ALL, H5F_OBJ_ALL) == 0);
|
||||
}
|
||||
|
||||
TEST_CASE("HDF5DataSet_chunking", "[HDF5][Unit]") {
|
||||
size_t xpixel = 512;
|
||||
size_t ypixel = 256;
|
||||
|
||||
std::vector<int32_t> tmp(xpixel*ypixel, -134);
|
||||
{
|
||||
RegisterHDF5Filter();
|
||||
HDF5File file("scratch4.h5");
|
||||
HDF5Dcpl dcpl;
|
||||
HDF5DataType data_type(4, true);
|
||||
dcpl.SetChunking( {1, ypixel, xpixel});
|
||||
HDF5DataSpace data_space({3, ypixel, xpixel}, {H5S_UNLIMITED, ypixel, xpixel});
|
||||
HDF5DataSet dataset(file, "/data", data_type, data_space, dcpl);
|
||||
dataset.WriteDirectChunk(tmp.data(), tmp.size() * sizeof(int32_t), {0, 0, 0});
|
||||
dataset.WriteDirectChunk(tmp.data(), tmp.size() * sizeof(int32_t), {2, 0, 0});
|
||||
}
|
||||
|
||||
{
|
||||
HDF5ReadOnlyFile file("scratch4.h5");
|
||||
HDF5DataSet vector_dataset(file, "/data");
|
||||
HDF5DataType data_type_vec(vector_dataset);
|
||||
HDF5Dcpl dcpl(vector_dataset);
|
||||
HDF5DataSpace data_space_vec(vector_dataset);
|
||||
CHECK(data_type_vec.GetElemSize() == 4);
|
||||
CHECK(data_space_vec.GetNumOfDimensions() == 3);
|
||||
CHECK(data_space_vec.GetDimensions()[0] == 3);
|
||||
CHECK(data_space_vec.GetDimensions()[1] == ypixel);
|
||||
CHECK(data_space_vec.GetDimensions()[2] == xpixel);
|
||||
CHECK(dcpl.GetNumOfDimensions() == 3);
|
||||
CHECK(dcpl.GetChunking()[0] == 1);
|
||||
CHECK(dcpl.GetChunking()[1] == ypixel);
|
||||
CHECK(dcpl.GetChunking()[2] == xpixel);
|
||||
REQUIRE(dcpl.GetCompression() == CompressionAlgorithm::NO_COMPRESSION);
|
||||
std::vector<uint8_t> read_v;
|
||||
REQUIRE_NOTHROW(vector_dataset.ReadDirectChunk(read_v, {2, 0, 0}));
|
||||
REQUIRE(read_v.size() == xpixel * ypixel * sizeof(uint32_t));
|
||||
CHECK(memcmp(read_v.data(), tmp.data(), xpixel * ypixel * sizeof(uint32_t)) == 0);
|
||||
}
|
||||
|
||||
remove("scratch4.h5");
|
||||
REQUIRE (H5Fget_obj_count(H5F_OBJ_ALL, H5F_OBJ_ALL) == 0);
|
||||
}
|
||||
|
||||
TEST_CASE("HDF5DataSet_chunking_bslz4", "[HDF5][Unit]") {
|
||||
size_t xpixel = 512;
|
||||
size_t ypixel = 256;
|
||||
size_t len = 1234;
|
||||
std::vector<uint8_t> tmp(len, 200);
|
||||
{
|
||||
RegisterHDF5Filter();
|
||||
HDF5File file("scratch5.h5");
|
||||
HDF5Dcpl dcpl;
|
||||
HDF5DataType data_type(4, true);
|
||||
dcpl.SetChunking( {1, ypixel, xpixel});
|
||||
dcpl.SetCompression(CompressionAlgorithm::BSHUF_LZ4, 0);
|
||||
HDF5DataSpace data_space({3, ypixel, xpixel}, {H5S_UNLIMITED, ypixel, xpixel});
|
||||
HDF5DataSet dataset(file, "/data", data_type, data_space, dcpl);
|
||||
dataset.WriteDirectChunk(tmp.data(), 1234, {0, 0, 0});
|
||||
dataset.WriteDirectChunk(tmp.data(), 1234, {2, 0, 0});
|
||||
}
|
||||
|
||||
{
|
||||
HDF5ReadOnlyFile file("scratch5.h5");
|
||||
HDF5DataSet vector_dataset(file, "/data");
|
||||
HDF5DataType data_type_vec(vector_dataset);
|
||||
HDF5Dcpl dcpl(vector_dataset);
|
||||
HDF5DataSpace data_space_vec(vector_dataset);
|
||||
CHECK(data_type_vec.GetElemSize() == 4);
|
||||
CHECK(data_space_vec.GetNumOfDimensions() == 3);
|
||||
CHECK(data_space_vec.GetDimensions()[0] == 3);
|
||||
CHECK(data_space_vec.GetDimensions()[1] == ypixel);
|
||||
CHECK(data_space_vec.GetDimensions()[2] == xpixel);
|
||||
CHECK(dcpl.GetNumOfDimensions() == 3);
|
||||
CHECK(dcpl.GetChunking()[0] == 1);
|
||||
CHECK(dcpl.GetChunking()[1] == ypixel);
|
||||
CHECK(dcpl.GetChunking()[2] == xpixel);
|
||||
REQUIRE(dcpl.GetCompression() == CompressionAlgorithm::BSHUF_LZ4);
|
||||
std::vector<uint8_t> read_v;
|
||||
REQUIRE_NOTHROW(vector_dataset.ReadDirectChunk(read_v, {2, 0, 0}));
|
||||
REQUIRE(read_v == tmp);
|
||||
}
|
||||
|
||||
remove("scratch5.h5");
|
||||
REQUIRE (H5Fget_obj_count(H5F_OBJ_ALL, H5F_OBJ_ALL) == 0);
|
||||
}
|
||||
|
||||
TEST_CASE("HDF5DataSet_chunking_ReadToU8", "[HDF5][Unit]") {
|
||||
size_t xpixel = 512;
|
||||
size_t ypixel = 256;
|
||||
size_t len = xpixel*ypixel;
|
||||
std::vector<uint32_t> tmp(len, 200);
|
||||
{
|
||||
RegisterHDF5Filter();
|
||||
HDF5File file("scratch5.h5");
|
||||
HDF5Dcpl dcpl;
|
||||
HDF5DataType data_type(4, true);
|
||||
dcpl.SetChunking( {1, ypixel, xpixel});
|
||||
dcpl.SetCompression(CompressionAlgorithm::NO_COMPRESSION, 0);
|
||||
HDF5DataSpace data_space({3, ypixel, xpixel}, {H5S_UNLIMITED, ypixel, xpixel});
|
||||
HDF5DataSet dataset(file, "/data", data_type, data_space, dcpl);
|
||||
dataset.WriteDirectChunk(tmp.data(), xpixel * ypixel * sizeof(uint32_t), {1, 0, 0});
|
||||
}
|
||||
|
||||
{
|
||||
HDF5ReadOnlyFile file("scratch5.h5");
|
||||
HDF5DataSet vector_dataset(file, "/data");
|
||||
|
||||
std::vector<uint8_t> read_v;
|
||||
REQUIRE_NOTHROW(vector_dataset.ReadVectorToU8(read_v, {1,0,0}, {1, ypixel, xpixel}));
|
||||
REQUIRE(read_v.size() == xpixel * ypixel *sizeof(uint32_t));
|
||||
REQUIRE(memcmp(read_v.data(), tmp.data(), read_v.size()) == 0);
|
||||
}
|
||||
|
||||
remove("scratch5.h5");
|
||||
REQUIRE (H5Fget_obj_count(H5F_OBJ_ALL, H5F_OBJ_ALL) == 0);
|
||||
}
|
||||
|
||||
TEST_CASE("HDF5DataSet_vector_string", "[HDF5][Unit]") {
|
||||
std::string long_string = "ccdcsdcdscsdcsdcs";
|
||||
std::vector<std::string> tmp_vector = {"aaaaaaaaa", "b", long_string};
|
||||
|
||||
Reference in New Issue
Block a user