Skip to content

Commit

Permalink
Merge pull request InsightSoftwareConsortium#4642 from cookpa/fix_nif…
Browse files Browse the repository at this point in the history
…tiio_test_path

BUG: Fix path to write itkNiftiImageIOTest14 data
  • Loading branch information
thewtex authored May 7, 2024
2 parents 4926c2f + 21b74f0 commit e2cdab4
Showing 1 changed file with 19 additions and 18 deletions.
37 changes: 19 additions & 18 deletions Modules/IO/NIFTI/test/itkNiftiImageIOTest14.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ itkNiftiImageIOTest14(int argc, char * argv[])
}
}

const char * output_test_fn = "xyzt_units_output_check.nii";
const std::string output_test_fn = std::string(test_dir) + "/xyzt_units_output_check.nii";

// set the origin of time to a non-zero value
auto newOrigin = ImageType::PointType();
Expand All @@ -100,15 +100,16 @@ itkNiftiImageIOTest14(int argc, char * argv[])
newOrigin[3] = 2.0;
test_image->SetOrigin(newOrigin);

itk::IOTestHelper::WriteImage<ImageType, itk::NiftiImageIO>(test_image, std::string(output_test_fn));
itk::IOTestHelper::WriteImage<ImageType, itk::NiftiImageIO>(test_image, output_test_fn);

bool fileHasCorrectXYZTTUnits = false;
bool fileHasCorrectTimeOrigin = false;
bool metadataHasCorrectXYZTTUnits = false;
bool metadataHasCorrectToffset = false;
bool imageHasCorrectTimeOrigin = false;

try
{
// read the image back in
ImageType::Pointer image_from_disk = itk::IOTestHelper::ReadImage<ImageType>(std::string(output_test_fn));
ImageType::Pointer image_from_disk = itk::IOTestHelper::ReadImage<ImageType>(output_test_fn);

// check the metadata for xyzt_units and toffset
itk::MetaDataDictionary & dictionary = image_from_disk->GetMetaDataDictionary();
Expand All @@ -118,52 +119,52 @@ itkNiftiImageIOTest14(int argc, char * argv[])
{
std::cerr << "toffset not found in metadata" << std::endl;
}
if (!itk::Math::FloatAlmostEqual(std::stod(toffset), 2.0, 4, 1e-6))
if (itk::Math::FloatAlmostEqual(std::stod(toffset), 2.0, 4, 1e-6))
{
fileHasCorrectTimeOrigin = true;
metadataHasCorrectToffset = true;
}
else
{
std::cerr << "toffset not set correctly in metadata" << std::endl;
fileHasCorrectTimeOrigin = false;
std::cerr << "toffset: " << std::stod(toffset) << " is not set correctly in metadata" << std::endl;
metadataHasCorrectToffset = false;
}

auto read_origin = test_image->GetOrigin();

if (!itk::Math::FloatAlmostEqual(read_origin[3], 2.0, 4, 1e-6))
if (itk::Math::FloatAlmostEqual(read_origin[3], 2.0, 4, 1e-6))
{
std::cerr << "Time origin not read back correctly from toffset field" << std::endl;
fileHasCorrectTimeOrigin = false;
imageHasCorrectTimeOrigin = true;
}
else
{
fileHasCorrectTimeOrigin = true;
std::cerr << "Time origin not read back correctly from toffset field" << std::endl;
imageHasCorrectTimeOrigin = false;
}


std::string xyzt_units;
if (!itk::ExposeMetaData<std::string>(dictionary, "xyzt_units", xyzt_units))
{
std::cerr << "xyzt_units not found in metadata" << std::endl;
}
if (xyzt_units == "10")
{
fileHasCorrectXYZTTUnits = true;
metadataHasCorrectXYZTTUnits = true;
}
else
{
std::cerr << "xyzt_units not set correctly in metadata" << std::endl;
fileHasCorrectXYZTTUnits = false;
metadataHasCorrectXYZTTUnits = false;
}
}
catch (...)
{
std::cerr << "Exception caught while reading image back in" << std::endl;
throw;
}

itk::IOTestHelper::Remove(output_test_fn);
itk::IOTestHelper::Remove(output_test_fn.c_str());

if (fileHasCorrectXYZTTUnits && fileHasCorrectTimeOrigin)
if (metadataHasCorrectXYZTTUnits && metadataHasCorrectToffset && imageHasCorrectTimeOrigin)
{
return EXIT_SUCCESS;
}
Expand Down

0 comments on commit e2cdab4

Please sign in to comment.