13 #ifndef mitkDICOMFileReaderTestHelper_h 14 #define mitkDICOMFileReaderTestHelper_h 38 for (
int a = 1; a < argc; ++a)
40 inputFiles.push_back( argv[a] );
58 MITK_TEST_CONDITION( inputFilesReturned.size() == inputFiles.size(),
"Input file list is received")
72 for (
unsigned int o = 0; o < numberOfOutputs; ++o)
77 for(
auto iter = outputFiles.cbegin();
78 iter != outputFiles.cend();
82 auto inputPositionOfCurrentOutput = std::find( inputFiles.cbegin(), inputFiles.cend(), (*iter)->Filename );
83 if (inputPositionOfCurrentOutput != inputFiles.cend())
86 auto outputPositionOfCurrentOutput = std::find( allSortedInputsFiles.cbegin(), allSortedInputsFiles.cend(), (*iter)->Filename );
87 if (outputPositionOfCurrentOutput == allSortedInputsFiles.cend())
90 allSortedInputsFiles.push_back( *inputPositionOfCurrentOutput );
95 MITK_TEST_CONDITION_REQUIRED(
false,
"File '" << (*iter)->Filename <<
"' appears in TWO outputs. Readers are expected to use each frame only once." )
106 MITK_TEST_CONDITION( allSortedInputsFiles.size() == inputFiles.size(),
"Output list size (" << allSortedInputsFiles.size() <<
") equals input list size (" << inputFiles.size() <<
")" )
113 catch( std::invalid_argument& )
121 const std::unordered_map<std::string, std::string>& expectedProperties )
130 for (
unsigned int o = 0; o < numberOfOutputs; ++o)
137 for (
auto iter = requestedTags.cbegin(); iter != requestedTags.cend(); ++iter)
139 mitk::BaseProperty*
property = mitkImage->GetProperty( iter->second.c_str() ).GetPointer();
141 "Requested Tag is available as Property in Image" );
144 MITK_INFO << iter->first.ToStr() <<
" / " <<
property->GetNameOfClass();
145 auto expectfinding = expectedProperties.find(iter->second);
147 if (expectfinding != expectedProperties.end())
149 MITK_TEST_CONDITION(std::string(property->GetNameOfClass()) == expectfinding->second,
"Property type is as expected");
155 MITK_DEBUG <<
"-------------------------------------------";
156 MITK_DEBUG <<
"Output " << o <<
" at " << (
void*) mitkImage.GetPointer();
157 MITK_DEBUG <<
" Number of files: " << outputFiles.size();
158 MITK_DEBUG <<
" Dimensions: " << mitkImage->GetDimension(0) <<
" " << mitkImage->GetDimension(1) <<
" " << mitkImage->GetDimension(2);
static void TestMitkImagesAreLoaded(DICOMFileReader *reader, const DICOMFileReader::AdditionalTagsMapType &requestedTags, const std::unordered_map< std::string, std::string > &expectedProperties)
#define MITK_TEST_CONDITION_REQUIRED(COND, MSG)
static mitk::BaseProperty::Pointer DummyTagToPropertyFunctor(const mitk::StringLookupTable &)
static StringList & GetInputFilenames()
Image::Pointer GetMitkImage() const
the 3D mitk::Image that is loaded from the DICOM files of a DICOMImageFrameList
DataCollection - Class to facilitate loading/accessing structured data.
virtual bool LoadImages()=0
itk::SmartPointer< Self > Pointer
void SetInputFiles(const StringList &filenames)
This input files.
const DICOMImageFrameList & GetImageFrameList() const
List of frames that constitute the mitk::Image (DICOMImageFrames)
const StringList & GetInputFiles() const
This input files.
virtual void AnalyzeInputFiles()=0
Analyze input files.
unsigned int GetNumberOfOutputs() const
Number of outputs, only meaningful after calling AnalyzeInputFiles()
Abstract base class for properties.
const DICOMImageBlockDescriptor & GetOutput(unsigned int index) const
Individual outputs, only meaningful after calling AnalyzeInputFiles().
#define MITK_TEST_CONDITION(COND, MSG)
std::vector< DICOMImageFrameInfo::Pointer > DICOMImageFrameList
DICOMImageBlockDescriptor::AdditionalTagsMapType AdditionalTagsMapType
void PrintOutputs(std::ostream &os, bool filenameDetails=false) const
Print output description to given stream, for human reader.
static void TestSingleBlockIsRead(DICOMFileReader *reader)
Output descriptor for DICOMFileReader.
static void TestOutputsContainInputs(DICOMFileReader *reader)
static void SetTestInputFilenames(const StringList &filenames)
std::vector< std::string > StringList
static void SetTestInputFilenames(int argc, char *argv[])
static void TestInputFilenames(DICOMFileReader *reader)
Interface for DICOM readers that produce mitk::Images.