1 /*=========================================================================
4 Module: $RCSfile: TestAllVM.cxx,v $
6 Date: $Date: 2007/06/21 14:59:06 $
7 Version: $Revision: 1.15 $
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 =========================================================================*/
20 #include "gdcmDataEntry.h"
23 #include "gdcmDataImages.h"
25 int DoTheVMTest(std::string const &filename)
27 GDCM_NAME_SPACE::File *file = GDCM_NAME_SPACE::File::New();
28 // - Do not test unknow VM in shadow groups (if element 0x0000 is present)
29 // - Skip Sequences (if they are 'True Length'); loading will be quicker
30 // (anyway, Sequences are skipped at processing time ...)
31 file->SetLoadMode( GDCM_NAME_SPACE::LD_NOSHADOW | GDCM_NAME_SPACE::LD_NOSEQ );
33 file->SetFileName( filename );
34 if( !file->Load() ) //would be really bad...
37 GDCM_NAME_SPACE::DocEntry *d = file->GetFirstEntry();
38 std::cerr << "Testing file : " << filename << std::endl;
39 GDCM_NAME_SPACE::DataEntry *de;
42 if ( (de = dynamic_cast<GDCM_NAME_SPACE::DataEntry *>(d)) )
44 if ( !(de->GetGroup() % 2) ) // Don't check shadow elements. Righ now,
45 // Private Dictionnary are not dealt with
47 // We know OB and OW VM is always 1, whatever the actual
50 if (de->GetVR() != "OB" && de->GetVR() != "OW" )
51 if( !de->IsValueCountValid() )
53 std::cerr << "Element: " << de->GetKey() <<
54 " (" << de->GetName() << ") " <<
55 "Contains a wrong VM: " << de->GetValueCount()
56 << " should be: " << de->GetVM() << std::endl;;
62 // We skip pb of SQ recursive exploration
64 d = file->GetNextEntry();
71 int TestAllVM(int argc, char *argv[])
76 const char *filename = argv[1];
77 if( DoTheVMTest( filename ) )
83 while( gdcmDataImages[i] != 0 )
85 std::string filename = GDCM_DATA_ROOT;
87 filename += gdcmDataImages[i];
89 if (!strcmp(gdcmDataImages[i],"00191113.dcm")) // Track bug on Darwin
90 GDCM_NAME_SPACE::Debug::DebugOn();
92 GDCM_NAME_SPACE::Debug::DebugOff();
94 if( DoTheVMTest( filename ) )
97 std::cerr << std::endl; // skip a line after each file