18 #ifndef itkMeshIOTestHelper_h
19 #define itkMeshIOTestHelper_h
42 #define LOCAL_ITK_TEST_SET_GET_VALUE(variable, command) \
44 CLANG_SUPPRESS_Wfloat_equal if (variable != command) CLANG_PRAGMA_POP \
46 std::cerr << "Error in " << #command << std::endl; \
47 std::cerr << " In " __FILE__ ", line " << __LINE__ << std::endl; \
48 std::cerr << "Expected " << variable << std::endl; \
49 std::cerr << "but got " << command << std::endl; \
50 return EXIT_FAILURE; \
52 ITK_MACROEND_NOOP_STATEMENT
55 template <
typename TMeshIO>
59 using FloatType = float;
61 FloatType floatValue = 1.0;
62 bool usePointPixel =
true;
63 meshIO->SetPixelType(floatValue, usePointPixel);
66 meshIO->GetPointPixelComponentType());
69 usePointPixel =
false;
70 meshIO->SetPixelType(floatValue, usePointPixel);
73 meshIO->GetCellPixelComponentType());
79 RGBPixelType rgbValue{ 1.0 };
81 meshIO->SetPixelType(rgbValue, usePointPixel);
84 meshIO->GetPointPixelComponentType());
87 usePointPixel =
false;
88 meshIO->SetPixelType(rgbValue, usePointPixel);
91 meshIO->GetCellPixelComponentType());
97 RGBAPixelType rgbaValue;
100 meshIO->SetPixelType(rgbaValue, usePointPixel);
103 meshIO->GetPointPixelComponentType());
106 usePointPixel =
false;
107 meshIO->SetPixelType(rgbaValue, usePointPixel);
110 meshIO->GetCellPixelComponentType());
117 VectorPixelType vectorValue;
118 vectorValue.
Fill(1.0);
119 usePointPixel =
true;
120 meshIO->SetPixelType(vectorValue, usePointPixel);
123 meshIO->GetPointPixelComponentType());
126 usePointPixel =
false;
127 meshIO->SetPixelType(vectorValue, usePointPixel);
130 meshIO->GetCellPixelComponentType());
136 CovariantVectorPixelType covariantVectorValue;
137 covariantVectorValue.
Fill(1.0);
138 usePointPixel =
true;
139 meshIO->SetPixelType(covariantVectorValue, usePointPixel);
142 meshIO->GetPointPixelComponentType());
145 usePointPixel =
false;
146 meshIO->SetPixelType(covariantVectorValue, usePointPixel);
149 meshIO->GetCellPixelComponentType());
155 FixedArrayPixelType fixedArrayValue;
156 fixedArrayValue.
Fill(1.0);
157 usePointPixel =
true;
158 meshIO->SetPixelType(fixedArrayValue, usePointPixel);
161 meshIO->GetPointPixelComponentType());
164 usePointPixel =
false;
165 meshIO->SetPixelType(fixedArrayValue, usePointPixel);
168 meshIO->GetCellPixelComponentType());
174 SymmetricSecondRankTensorPixelType symmetricSecondRankTensorValue;
175 symmetricSecondRankTensorValue.
Fill(1.0);
176 usePointPixel =
true;
177 meshIO->SetPixelType(symmetricSecondRankTensorValue, usePointPixel);
180 meshIO->GetPointPixelComponentType());
183 usePointPixel =
false;
184 meshIO->SetPixelType(symmetricSecondRankTensorValue, usePointPixel);
187 meshIO->GetCellPixelComponentType());
193 DiffusionTensor3DPixelType diffusionTensor3DPixelValue;
194 diffusionTensor3DPixelValue.
Fill(1.0);
195 usePointPixel =
true;
196 meshIO->SetPixelType(diffusionTensor3DPixelValue, usePointPixel);
199 meshIO->GetPointPixelComponentType());
202 usePointPixel =
false;
203 meshIO->SetPixelType(diffusionTensor3DPixelValue, usePointPixel);
206 meshIO->GetCellPixelComponentType());
214 MatrixPixelType matrixPixelValue;
215 matrixPixelValue.
Fill(1.0);
216 usePointPixel =
true;
217 meshIO->SetPixelType(matrixPixelValue, usePointPixel);
220 meshIO->GetPointPixelComponentType());
223 usePointPixel =
false;
224 meshIO->SetPixelType(matrixPixelValue, usePointPixel);
227 meshIO->GetCellPixelComponentType());
231 using ComplexPixelType = std::complex<FloatType>;
233 ComplexPixelType complexPixelValue(1.0, 1.0);
234 usePointPixel =
true;
235 meshIO->SetPixelType(complexPixelValue, usePointPixel);
238 meshIO->GetPointPixelComponentType());
241 usePointPixel =
false;
242 meshIO->SetPixelType(complexPixelValue, usePointPixel);
245 meshIO->GetCellPixelComponentType());
251 ArrayPixelType arrayPixelValue;
252 arrayPixelValue.
Fill(1.0);
253 usePointPixel =
true;
254 meshIO->SetPixelType(arrayPixelValue, usePointPixel);
257 meshIO->GetPointPixelComponentType());
260 usePointPixel =
false;
261 meshIO->SetPixelType(arrayPixelValue, usePointPixel);
264 meshIO->GetCellPixelComponentType());
270 VariableLengthVectorPixelType variableLengthVectorValue;
271 variableLengthVectorValue.
Fill(1.0);
272 usePointPixel =
true;
273 meshIO->SetPixelType(variableLengthVectorValue, usePointPixel);
276 meshIO->GetPointPixelComponentType());
279 usePointPixel =
false;
280 meshIO->SetPixelType(variableLengthVectorValue, usePointPixel);
283 meshIO->GetCellPixelComponentType());
289 VariableSizeMatrixType matrix;
291 usePointPixel =
true;
292 meshIO->SetPixelType(matrix, usePointPixel);
295 meshIO->GetPointPixelComponentType());
298 usePointPixel =
false;
299 meshIO->SetPixelType(matrix, usePointPixel);
302 meshIO->GetCellPixelComponentType());
309 std::cout <<
"ComponentSize: " << meshIO->GetComponentSize(floatComponent) << std::endl;
311 std::cout <<
"ComponentTypeAsString: " << meshIO->GetComponentTypeAsString(floatComponent) << std::endl;
314 std::cout <<
"PixelTypeAsString: " << meshIO->GetPixelTypeAsString(pixelType) << std::endl;
317 meshIO->SetPointComponentType(pointComponentType);
321 meshIO->SetCellComponentType(cellComponentType);
324 unsigned int pointDimension = 2;
325 meshIO->SetPointDimension(pointDimension);
329 meshIO->SetNumberOfPoints(numberOfPoints);
333 meshIO->SetNumberOfCells(numberOfCells);
337 meshIO->SetNumberOfPointPixels(numberOfPointPixels);
341 meshIO->SetNumberOfCellPixels(numberOfCellPixels);
345 meshIO->SetCellBufferSize(cellBufferSize);
349 meshIO->SetFileType(fileType);
352 std::cout <<
"FileTypeAsString: " << meshIO->GetFileTypeAsString(fileType) << std::endl;
355 meshIO->SetByteOrder(ioByteOrder);
358 std::cout <<
"ByteOrderAsString: " << meshIO->GetByteOrderAsString(ioByteOrder) << std::endl;
361 std::cout <<
"SupportedReadExtensions: " << std::endl;
362 for (
auto ext : supportedReadExtensions)
364 std::cout << ext << std::endl;
368 std::cout <<
"SupportedWriteExtensions: " << std::endl;
369 for (
auto ext : supportedWriteExtensions)
371 std::cout << ext << std::endl;
380 namespace MeshIOTestHelper
383 template <
typename T>
384 std::shared_ptr<void>
387 return std::shared_ptr<void>(
new T[bufferSize], std::default_delete<T[]>());
390 inline std::shared_ptr<void>
393 switch (componentType)
396 return MakeSharedArray<char>(bufferSize);
398 return MakeSharedArray<unsigned char>(bufferSize);
400 return MakeSharedArray<unsigned short>(bufferSize);
402 return MakeSharedArray<short>(bufferSize);
404 return MakeSharedArray<unsigned int>(bufferSize);
406 return MakeSharedArray<int>(bufferSize);
408 return MakeSharedArray<unsigned long>(bufferSize);
410 return MakeSharedArray<long>(bufferSize);
412 return MakeSharedArray<long long>(bufferSize);
414 return MakeSharedArray<unsigned long long>(bufferSize);
416 return MakeSharedArray<float>(bufferSize);
418 return MakeSharedArray<double>(bufferSize);
420 return MakeSharedArray<long double>(bufferSize);