18 #ifndef itkMeshIOTestHelper_h
19 #define itkMeshIOTestHelper_h
42 #define LOCAL_ITK_TEST_SET_GET_VALUE(variable, command) \
44 ITK_GCC_SUPPRESS_Wfloat_equal \
45 if (variable != command) \
47 std::cerr << "Error in " << #command << std::endl; \
48 std::cerr << " In " __FILE__ ", line " << __LINE__ << std::endl; \
49 std::cerr << "Expected " << variable << std::endl; \
50 std::cerr << "but got " << command << std::endl; \
51 return EXIT_FAILURE; \
54 ITK_MACROEND_NOOP_STATEMENT
57 template <
typename TMeshIO>
61 using FloatType = float;
63 FloatType floatValue = 1.0;
64 bool usePointPixel =
true;
65 meshIO->SetPixelType(floatValue, usePointPixel);
68 meshIO->GetPointPixelComponentType());
71 usePointPixel =
false;
72 meshIO->SetPixelType(floatValue, usePointPixel);
75 meshIO->GetCellPixelComponentType());
81 RGBPixelType rgbValue{ 1.0 };
83 meshIO->SetPixelType(rgbValue, usePointPixel);
86 meshIO->GetPointPixelComponentType());
89 usePointPixel =
false;
90 meshIO->SetPixelType(rgbValue, usePointPixel);
93 meshIO->GetCellPixelComponentType());
99 RGBAPixelType rgbaValue;
101 usePointPixel =
true;
102 meshIO->SetPixelType(rgbaValue, usePointPixel);
105 meshIO->GetPointPixelComponentType());
108 usePointPixel =
false;
109 meshIO->SetPixelType(rgbaValue, usePointPixel);
112 meshIO->GetCellPixelComponentType());
119 VectorPixelType vectorValue;
120 vectorValue.
Fill(1.0);
121 usePointPixel =
true;
122 meshIO->SetPixelType(vectorValue, usePointPixel);
125 meshIO->GetPointPixelComponentType());
128 usePointPixel =
false;
129 meshIO->SetPixelType(vectorValue, usePointPixel);
132 meshIO->GetCellPixelComponentType());
138 CovariantVectorPixelType covariantVectorValue;
139 covariantVectorValue.
Fill(1.0);
140 usePointPixel =
true;
141 meshIO->SetPixelType(covariantVectorValue, usePointPixel);
144 meshIO->GetPointPixelComponentType());
147 usePointPixel =
false;
148 meshIO->SetPixelType(covariantVectorValue, usePointPixel);
151 meshIO->GetCellPixelComponentType());
157 FixedArrayPixelType fixedArrayValue;
158 fixedArrayValue.
Fill(1.0);
159 usePointPixel =
true;
160 meshIO->SetPixelType(fixedArrayValue, usePointPixel);
163 meshIO->GetPointPixelComponentType());
166 usePointPixel =
false;
167 meshIO->SetPixelType(fixedArrayValue, usePointPixel);
170 meshIO->GetCellPixelComponentType());
176 SymmetricSecondRankTensorPixelType symmetricSecondRankTensorValue;
177 symmetricSecondRankTensorValue.
Fill(1.0);
178 usePointPixel =
true;
179 meshIO->SetPixelType(symmetricSecondRankTensorValue, usePointPixel);
182 meshIO->GetPointPixelComponentType());
185 usePointPixel =
false;
186 meshIO->SetPixelType(symmetricSecondRankTensorValue, usePointPixel);
189 meshIO->GetCellPixelComponentType());
195 DiffusionTensor3DPixelType diffusionTensor3DPixelValue;
196 diffusionTensor3DPixelValue.
Fill(1.0);
197 usePointPixel =
true;
198 meshIO->SetPixelType(diffusionTensor3DPixelValue, usePointPixel);
201 meshIO->GetPointPixelComponentType());
204 usePointPixel =
false;
205 meshIO->SetPixelType(diffusionTensor3DPixelValue, usePointPixel);
208 meshIO->GetCellPixelComponentType());
216 MatrixPixelType matrixPixelValue;
217 matrixPixelValue.
Fill(1.0);
218 usePointPixel =
true;
219 meshIO->SetPixelType(matrixPixelValue, usePointPixel);
222 meshIO->GetPointPixelComponentType());
225 usePointPixel =
false;
226 meshIO->SetPixelType(matrixPixelValue, usePointPixel);
229 meshIO->GetCellPixelComponentType());
233 using ComplexPixelType = std::complex<FloatType>;
235 ComplexPixelType complexPixelValue(1.0, 1.0);
236 usePointPixel =
true;
237 meshIO->SetPixelType(complexPixelValue, usePointPixel);
240 meshIO->GetPointPixelComponentType());
243 usePointPixel =
false;
244 meshIO->SetPixelType(complexPixelValue, usePointPixel);
247 meshIO->GetCellPixelComponentType());
253 ArrayPixelType arrayPixelValue;
254 arrayPixelValue.
Fill(1.0);
255 usePointPixel =
true;
256 meshIO->SetPixelType(arrayPixelValue, usePointPixel);
259 meshIO->GetPointPixelComponentType());
262 usePointPixel =
false;
263 meshIO->SetPixelType(arrayPixelValue, usePointPixel);
266 meshIO->GetCellPixelComponentType());
272 VariableLengthVectorPixelType variableLengthVectorValue;
273 variableLengthVectorValue.
Fill(1.0);
274 usePointPixel =
true;
275 meshIO->SetPixelType(variableLengthVectorValue, usePointPixel);
278 meshIO->GetPointPixelComponentType());
281 usePointPixel =
false;
282 meshIO->SetPixelType(variableLengthVectorValue, usePointPixel);
285 meshIO->GetCellPixelComponentType());
291 VariableSizeMatrixType matrix;
293 usePointPixel =
true;
294 meshIO->SetPixelType(matrix, usePointPixel);
297 meshIO->GetPointPixelComponentType());
300 usePointPixel =
false;
301 meshIO->SetPixelType(matrix, usePointPixel);
304 meshIO->GetCellPixelComponentType());
311 std::cout <<
"ComponentSize: " << meshIO->GetComponentSize(floatComponent) << std::endl;
313 std::cout <<
"ComponentTypeAsString: " << meshIO->GetComponentTypeAsString(floatComponent) << std::endl;
316 std::cout <<
"PixelTypeAsString: " << meshIO->GetPixelTypeAsString(pixelType) << std::endl;
319 meshIO->SetPointComponentType(pointComponentType);
323 meshIO->SetCellComponentType(cellComponentType);
326 unsigned int pointDimension = 2;
327 meshIO->SetPointDimension(pointDimension);
331 meshIO->SetNumberOfPoints(numberOfPoints);
335 meshIO->SetNumberOfCells(numberOfCells);
339 meshIO->SetNumberOfPointPixels(numberOfPointPixels);
343 meshIO->SetNumberOfCellPixels(numberOfCellPixels);
347 meshIO->SetCellBufferSize(cellBufferSize);
351 meshIO->SetFileType(fileType);
354 std::cout <<
"FileTypeAsString: " << meshIO->GetFileTypeAsString(fileType) << std::endl;
357 meshIO->SetByteOrder(ioByteOrder);
360 std::cout <<
"ByteOrderAsString: " << meshIO->GetByteOrderAsString(ioByteOrder) << std::endl;
363 std::cout <<
"SupportedReadExtensions: " << std::endl;
364 for (
auto ext : supportedReadExtensions)
366 std::cout << ext << std::endl;
370 std::cout <<
"SupportedWriteExtensions: " << std::endl;
371 for (
auto ext : supportedWriteExtensions)
373 std::cout << ext << std::endl;
382 namespace MeshIOTestHelper
385 template <
typename T>
386 std::shared_ptr<void>
389 return std::shared_ptr<void>(
new T[bufferSize], std::default_delete<T[]>());
392 inline std::shared_ptr<void>
395 switch (componentType)
398 return MakeSharedArray<char>(bufferSize);
400 return MakeSharedArray<unsigned char>(bufferSize);
402 return MakeSharedArray<unsigned short>(bufferSize);
404 return MakeSharedArray<short>(bufferSize);
406 return MakeSharedArray<unsigned int>(bufferSize);
408 return MakeSharedArray<int>(bufferSize);
410 return MakeSharedArray<unsigned long>(bufferSize);
412 return MakeSharedArray<long>(bufferSize);
414 return MakeSharedArray<long long>(bufferSize);
416 return MakeSharedArray<unsigned long long>(bufferSize);
418 return MakeSharedArray<float>(bufferSize);
420 return MakeSharedArray<double>(bufferSize);
422 return MakeSharedArray<long double>(bufferSize);