/*========================================================================= Program: GDCM (Grassroots DICOM). A DICOM library Copyright (c) 2006-2011 Mathieu Malaterre All rights reserved. See Copyright.txt or http://gdcm.sourceforge.net/Copyright.html for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notice for more information. =========================================================================*/ #include "gdcmReader.h" #include "gdcmFileMetaInformation.h" #include "gdcmFile.h" #include "gdcmTesting.h" #include "gdcmMediaStorage.h" int TestRead(const char* filename, bool verbose = false) { if( verbose ) std::cout << "TestRead: " << filename << std::endl; gdcm::Reader reader; reader.SetFileName( filename ); if ( !reader.Read() ) { std::cerr << "TestReadError: Failed to read: " << filename << std::endl; return 1; } //commenting out the fmi and ds to avoid warnings //const gdcm::FileMetaInformation &h = reader.GetFile().GetHeader(); //std::cout << h << std::endl; //const gdcm::DataSet &ds = reader.GetFile().GetDataSet(); //std::cout << ds << std::endl; const char *ref = gdcm::Testing::GetMediaStorageFromFile(filename); gdcm::MediaStorage ms; ms.SetFromFile( reader.GetFile() ); if( !ref ) { std::cerr << "TestReadError: Missing MediaStorage: " << filename << std::endl; std::cerr << "It should be: " << ms << std::endl; return 1; } if( ms.IsUndefined() && ref && *ref != 0 ) { std::cerr << "TestReadError: MediaStorage: " << filename << std::endl; std::cerr << "It should be instead: " << ref << std::endl; return 1; } // Make sure it is the right one: if( ref && *ref != 0 && ms != gdcm::MediaStorage::GetMSType(ref) ) { std::cerr << "Error: Found MediaStorage: " << ms << " for " << filename << std::endl; std::cerr << "It should be instead: " << ref << std::endl; return 1; } return 0; } int TestReader(int argc, char *argv[]) { if( argc == 2 ) { const char *filename = argv[1]; return TestRead(filename, true); } // else gdcm::Trace::DebugOff(); gdcm::Trace::WarningOff(); int r = 0, i = 0; const char *filename; const char * const *filenames = gdcm::Testing::GetFileNames(); while( (filename = filenames[i]) ) { r += TestRead( filename ); ++i; } return r; }