@@ -90,7 +90,7 @@ itkNiftiImageIOTest14(int argc, char * argv[])
9090 }
9191 }
9292
93- const char * output_test_fn = " xyzt_units_output_check.nii" ;
93+ const std::string output_test_fn = std::string (test_dir) + " / xyzt_units_output_check.nii" ;
9494
9595 // set the origin of time to a non-zero value
9696 auto newOrigin = ImageType::PointType ();
@@ -100,15 +100,16 @@ itkNiftiImageIOTest14(int argc, char * argv[])
100100 newOrigin[3 ] = 2.0 ;
101101 test_image->SetOrigin (newOrigin);
102102
103- itk::IOTestHelper::WriteImage<ImageType, itk::NiftiImageIO>(test_image, std::string ( output_test_fn) );
103+ itk::IOTestHelper::WriteImage<ImageType, itk::NiftiImageIO>(test_image, output_test_fn);
104104
105- bool fileHasCorrectXYZTTUnits = false ;
106- bool fileHasCorrectTimeOrigin = false ;
105+ bool metadataHasCorrectXYZTTUnits = false ;
106+ bool metadataHasCorrectToffset = false ;
107+ bool imageHasCorrectTimeOrigin = false ;
107108
108109 try
109110 {
110111 // read the image back in
111- ImageType::Pointer image_from_disk = itk::IOTestHelper::ReadImage<ImageType>(std::string ( output_test_fn) );
112+ ImageType::Pointer image_from_disk = itk::IOTestHelper::ReadImage<ImageType>(output_test_fn);
112113
113114 // check the metadata for xyzt_units and toffset
114115 itk::MetaDataDictionary & dictionary = image_from_disk->GetMetaDataDictionary ();
@@ -118,52 +119,52 @@ itkNiftiImageIOTest14(int argc, char * argv[])
118119 {
119120 std::cerr << " toffset not found in metadata" << std::endl;
120121 }
121- if (! itk::Math::FloatAlmostEqual (std::stod (toffset), 2.0 , 4 , 1e-6 ))
122+ if (itk::Math::FloatAlmostEqual (std::stod (toffset), 2.0 , 4 , 1e-6 ))
122123 {
123- fileHasCorrectTimeOrigin = true ;
124+ metadataHasCorrectToffset = true ;
124125 }
125126 else
126127 {
127- std::cerr << " toffset not set correctly in metadata" << std::endl;
128- fileHasCorrectTimeOrigin = false ;
128+ std::cerr << " toffset: " << std::stod (toffset) << " is not set correctly in metadata" << std::endl;
129+ metadataHasCorrectToffset = false ;
129130 }
130131
131132 auto read_origin = test_image->GetOrigin ();
132133
133- if (! itk::Math::FloatAlmostEqual (read_origin[3 ], 2.0 , 4 , 1e-6 ))
134+ if (itk::Math::FloatAlmostEqual (read_origin[3 ], 2.0 , 4 , 1e-6 ))
134135 {
135- std::cerr << " Time origin not read back correctly from toffset field" << std::endl;
136- fileHasCorrectTimeOrigin = false ;
136+ imageHasCorrectTimeOrigin = true ;
137137 }
138138 else
139139 {
140- fileHasCorrectTimeOrigin = true ;
140+ std::cerr << " Time origin not read back correctly from toffset field" << std::endl;
141+ imageHasCorrectTimeOrigin = false ;
141142 }
142143
143-
144144 std::string xyzt_units;
145145 if (!itk::ExposeMetaData<std::string>(dictionary, " xyzt_units" , xyzt_units))
146146 {
147147 std::cerr << " xyzt_units not found in metadata" << std::endl;
148148 }
149149 if (xyzt_units == " 10" )
150150 {
151- fileHasCorrectXYZTTUnits = true ;
151+ metadataHasCorrectXYZTTUnits = true ;
152152 }
153153 else
154154 {
155155 std::cerr << " xyzt_units not set correctly in metadata" << std::endl;
156- fileHasCorrectXYZTTUnits = false ;
156+ metadataHasCorrectXYZTTUnits = false ;
157157 }
158158 }
159159 catch (...)
160160 {
161161 std::cerr << " Exception caught while reading image back in" << std::endl;
162+ throw ;
162163 }
163164
164- itk::IOTestHelper::Remove (output_test_fn);
165+ itk::IOTestHelper::Remove (output_test_fn. c_str () );
165166
166- if (fileHasCorrectXYZTTUnits && fileHasCorrectTimeOrigin )
167+ if (metadataHasCorrectXYZTTUnits && metadataHasCorrectToffset && imageHasCorrectTimeOrigin )
167168 {
168169 return EXIT_SUCCESS;
169170 }
0 commit comments