1 /*=========================================================================
4 Module: $RCSfile: TestFileAccessors.cxx,v $
6 Date: $Date: 2008/09/15 15:49:21 $
7 Version: $Revision: 1.12 $
9 Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
10 l'Image). All rights reserved. See Doc/License.txt or
11 http://www.creatis.insa-lyon.fr/Public/Gdcm/License.html for details.
13 This software is distributed WITHOUT ANY WARRANTY; without even
14 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 PURPOSE. See the above copyright notices for more information.
17 =========================================================================*/
19 // TODO : check what's *actually* usefull
21 #include "gdcmDictEntry.h"
23 #include "gdcmDictSet.h"
25 #include "gdcmFileHelper.h"
27 #include "gdcmCommon.h"
28 #include "gdcmDocEntry.h"
29 #include "gdcmDocEntrySet.h"
30 #include "gdcmDocument.h"
31 #include "gdcmElementSet.h"
32 #include "gdcmSeqEntry.h"
33 #include "gdcmSQItem.h"
38 #include "gdcmDataImages.h"
40 #define TestMethodMacro(mode,obj,name) \
43 std::cout <<" "<< #name << "() : " \
46 << mode << obj->name() << std::endl; \
50 std::cout << " --> Can't access to the '" \
51 << #name << "' method !" << std::endl;\
56 int TestFileAccessors(int argc, char *argv[])
63 // GDCM_NAME_SPACE::Debug::DebugOn();
65 while( gdcmDataImages[i] != 0 )
68 // Keep the comment to be able to track a bug on a given image
71 // if (gdcmDataImages[i] == "00191113.dcm" )
72 // GDCM_NAME_SPACE::Debug::DebugOn();
74 // GDCM_NAME_SPACE::Debug::DebugOff();
83 filename = GDCM_DATA_ROOT;
84 filename += "/"; //doh!
85 filename += gdcmDataImages[i];
88 std::cout << " ----------------------------------------------"
89 << "Begin with " << filename << std::endl;
91 GDCM_NAME_SPACE::File *f= GDCM_NAME_SPACE::File::New( );
92 f->SetFileName( filename );
95 // We don't check the returned values
96 // We just want to be sure no accessor seg faults on any image ...
97 // And this will improve test coverage ;-)
99 TestMethodMacro(std::dec,f,GetSwapCode)
100 TestMethodMacro(std::dec,f,GetImageNumber)
101 TestMethodMacro(std::dec,f,GetModality)
102 TestMethodMacro(std::dec,f,GetXSize)
103 TestMethodMacro(std::dec,f,GetYSize)
104 TestMethodMacro(std::dec,f,GetZSize)
105 TestMethodMacro(std::dec,f,GetXSpacing)
106 TestMethodMacro(std::dec,f,GetYSpacing)
107 TestMethodMacro(std::dec,f,GetZSpacing)
108 TestMethodMacro(std::dec,f,GetXOrigin)
109 TestMethodMacro(std::dec,f,GetYOrigin)
110 TestMethodMacro(std::dec,f,GetZOrigin)
111 TestMethodMacro(std::dec,f,GetBitsStored)
112 TestMethodMacro(std::dec,f,GetBitsAllocated)
113 TestMethodMacro(std::dec,f,GetHighBitPosition)
114 TestMethodMacro(std::dec,f,GetSamplesPerPixel)
115 TestMethodMacro(std::dec,f,GetPlanarConfiguration)
116 TestMethodMacro(std::dec,f,GetPixelSize)
117 TestMethodMacro(std::dec,f,GetPixelType)
118 TestMethodMacro(std::dec,f,GetLUTNbits)
119 TestMethodMacro(std::dec,f,GetRescaleIntercept)
120 TestMethodMacro(std::dec,f,GetRescaleSlope)
121 TestMethodMacro(std::hex,f,GetGrPixel)
122 TestMethodMacro(std::hex,f,GetNumPixel)
123 TestMethodMacro(std::dec,f,GetPixelOffset)
125 TestMethodMacro(std::dec,f,GetPixelAreaLength)
126 TestMethodMacro(std::dec,f,GetNumberOfScalarComponents)
127 TestMethodMacro(std::dec,f,GetNumberOfScalarComponentsRaw)
128 TestMethodMacro(std::dec,f,IsSignedPixelData)
129 TestMethodMacro(std::dec,f,IsMonochrome)
130 TestMethodMacro(std::dec,f,IsPaletteColor)
131 TestMethodMacro(std::dec,f,IsYBRFull)
132 TestMethodMacro(std::dec,f,HasLUT)
133 TestMethodMacro(std::dec,f,GetTransferSyntax)
134 TestMethodMacro(std::dec,f,GetTransferSyntaxName)
135 TestMethodMacro(std::dec,f,GetFileType)
136 TestMethodMacro(std::dec,f,GetFileName)
138 f->GetImageOrientationPatient( iop );
139 std::cout << " Orientation:" << std::endl;
140 for (int j=0; j<6; j++)
141 std::cout << " iop[" << j << "] = " << iop[j] << std::endl;
143 f->GetImagePositionPatient( ipp );
144 std::cout << " Position:" << std::endl;
145 for (int j2=0; j2<3; j2++)
146 std::cout << " ipp[" << j2 << "] = " << ipp[j2] << std::endl;
148 if( f->IsReadable() )
150 std::cout << " " << filename << " is Readable" << std::endl;
152 GDCM_NAME_SPACE::FileHelper *fh= GDCM_NAME_SPACE::FileHelper::New( f );
154 TestMethodMacro(std::dec,fh,GetImageDataSize)
155 TestMethodMacro(std::dec,fh,GetImageDataRawSize)
156 TestMethodMacro(std::dec,fh,GetRGBDataSize)
157 TestMethodMacro(std::dec,fh,GetRawDataSize)
158 TestMethodMacro(std::dec,fh,GetUserDataSize)
159 TestMethodMacro(std::dec,fh,GetWriteType)
165 std::cout << filename << " is NOT Readable"
166 << std::endl << std::endl;
173 break; // user asked to check a single file.