v1.0.0-rc.31
This commit is contained in:
@@ -117,6 +117,34 @@ TEST_CASE("HDF5DataSet_vector_string", "[HDF5][Unit]") {
|
||||
REQUIRE (H5Fget_obj_count(H5F_OBJ_ALL, H5F_OBJ_ALL) == 0);
|
||||
}
|
||||
|
||||
TEST_CASE("HDF5LeafDetection", "[HDF5]") {
|
||||
{
|
||||
RegisterHDF5Filter();
|
||||
HDF5File file("scratch5.h5");
|
||||
HDF5Group(file, "/group");
|
||||
HDF5Group(file, "/group/sub1");
|
||||
HDF5Group(file, "/group/sub2");
|
||||
file.SaveScalar("/group/scalar", 5.0);
|
||||
}
|
||||
{
|
||||
HDF5ReadOnlyFile file("scratch5.h5");
|
||||
auto vec = file.FindLeafs("/group");
|
||||
REQUIRE(vec.size() == 3);
|
||||
bool found0 = false, found1 = false;
|
||||
for (int i = 0; i < vec.size(); i++) {
|
||||
if (vec[i] == "sub1")
|
||||
found0 = true;
|
||||
if (vec[i] == "scalar")
|
||||
found1 = true;
|
||||
}
|
||||
REQUIRE(found0);
|
||||
REQUIRE(found1);
|
||||
}
|
||||
|
||||
remove("scratch5.h5");
|
||||
REQUIRE (H5Fget_obj_count(H5F_OBJ_ALL, H5F_OBJ_ALL) == 0);
|
||||
}
|
||||
|
||||
TEST_CASE("HDF5MasterFile", "[HDF5][Full]") {
|
||||
{
|
||||
RegisterHDF5Filter();
|
||||
@@ -465,7 +493,7 @@ TEST_CASE("HDF5Writer_Link", "[HDF5][Full]") {
|
||||
DiffractionExperiment x(DetectorGeometry(1));
|
||||
|
||||
x.ImagesPerTrigger(7).ImagesPerFile(2).Compression(CompressionAlgorithm::NO_COMPRESSION).FilePrefix("link");
|
||||
|
||||
x.OverwriteExistingFiles(true);
|
||||
{
|
||||
RegisterHDF5Filter();
|
||||
|
||||
@@ -494,10 +522,8 @@ TEST_CASE("HDF5Writer_Link", "[HDF5][Full]") {
|
||||
|
||||
REQUIRE_NOTHROW(writer.Write(message));
|
||||
}
|
||||
|
||||
std::unique_ptr<NXmx> master = std::make_unique<NXmx>(start_message);
|
||||
master->Finalize(end_message);
|
||||
master.reset();
|
||||
writer.Write(end_message);
|
||||
writer.Finalize();
|
||||
}
|
||||
{
|
||||
HDF5ReadOnlyFile file("link_master.h5");
|
||||
@@ -539,6 +565,64 @@ TEST_CASE("HDF5Writer_Link", "[HDF5][Full]") {
|
||||
REQUIRE (H5Fget_obj_count(H5F_OBJ_ALL, H5F_OBJ_ALL) == 0);
|
||||
}
|
||||
|
||||
TEST_CASE("HDF5Writer_Link_VDS", "[HDF5][Full]") {
|
||||
DiffractionExperiment x(DetectorGeometry(1));
|
||||
|
||||
x.ImagesPerTrigger(7).ImagesPerFile(2).Compression(CompressionAlgorithm::NO_COMPRESSION).FilePrefix("link_vds");
|
||||
x.HDF5MasterFormatVersion(2).OverwriteExistingFiles(true);
|
||||
{
|
||||
RegisterHDF5Filter();
|
||||
|
||||
StartMessage start_message;
|
||||
x.FillMessage(start_message);
|
||||
|
||||
REQUIRE(start_message.hdf5_format_version == 2);
|
||||
EndMessage end_message;
|
||||
end_message.max_image_number = x.GetImageNum() - 2;
|
||||
|
||||
HDF5Writer writer(start_message);
|
||||
std::vector<uint16_t> image(x.GetPixelsNum());
|
||||
std::vector<SpotToSave> spots;
|
||||
for (int i = 0; i < x.GetImageNum() - 2; i++) {
|
||||
for (auto &j: image)
|
||||
j = i;
|
||||
DataMessage message{};
|
||||
message.image.pixel_depth_bytes = 2;
|
||||
message.image.pixel_is_signed = false;
|
||||
message.image.xpixel = x.GetXPixelsNum();
|
||||
message.image.ypixel = x.GetYPixelsNum();
|
||||
message.image.algorithm = CompressionAlgorithm::NO_COMPRESSION;
|
||||
message.image.data = (uint8_t *) image.data();
|
||||
message.image.size = x.GetPixelsNum() * x.GetByteDepthImage();
|
||||
message.spots = spots;
|
||||
message.number = i;
|
||||
|
||||
REQUIRE_NOTHROW(writer.Write(message));
|
||||
}
|
||||
|
||||
writer.Write(end_message);
|
||||
writer.Finalize();
|
||||
}
|
||||
{
|
||||
HDF5ReadOnlyFile file("link_vds_master.h5");
|
||||
std::unique_ptr<HDF5DataSet> dataset;
|
||||
REQUIRE_NOTHROW(dataset = std::make_unique<HDF5DataSet>(file,"/entry/data/data"));
|
||||
HDF5DataSpace file_space(*dataset);
|
||||
REQUIRE(file_space.GetNumOfDimensions() == 3);
|
||||
REQUIRE(file_space.GetDimensions()[0] == x.GetImageNum() - 2);
|
||||
REQUIRE(file_space.GetDimensions()[1] == x.GetYPixelsNum());
|
||||
REQUIRE(file_space.GetDimensions()[2] == x.GetXPixelsNum());
|
||||
}
|
||||
{
|
||||
HDF5ReadOnlyFile file("link_vds_master.h5");
|
||||
std::unique_ptr<HDF5DataSet> dataset;
|
||||
REQUIRE_THROWS(dataset = std::make_unique<HDF5DataSet>(file,"/entry/data/data_000001"));
|
||||
}
|
||||
|
||||
// No leftover HDF5 objects
|
||||
REQUIRE (H5Fget_obj_count(H5F_OBJ_ALL, H5F_OBJ_ALL) == 0);
|
||||
}
|
||||
|
||||
|
||||
TEST_CASE("HDF5Writer_Link_zero_images", "[HDF5][Full]") {
|
||||
DiffractionExperiment x(DetectorGeometry(1));
|
||||
|
||||
Reference in New Issue
Block a user