]> Creatis software - gdcm.git/blob - Testing/TestAllVM.cxx
Speed up -a little bit- the Loading, avoiding to parse any Sequence, not only
[gdcm.git] / Testing / TestAllVM.cxx
1 /*=========================================================================
2                                                                                 
3   Program:   gdcm
4   Module:    $RCSfile: TestAllVM.cxx,v $
5   Language:  C++
6   Date:      $Date: 2005/10/21 16:32:10 $
7   Version:   $Revision: 1.6 $
8                                                                                 
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.
12                                                                                 
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.
16                                                                                 
17 =========================================================================*/
18
19 #include "gdcmFile.h"
20 #include "gdcmDataEntry.h"
21
22 //Generated file:
23 #include "gdcmDataImages.h"
24
25 int DoTheVMTest(std::string const &filename)
26 {
27       gdcm::File file;
28       // - Do not test unknow VM in shadow groups (in 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::LD_NOSHADOW | gdcm::LD_NOSEQ );
32
33       file.SetFileName( filename );
34       if( !file.Load() ) //would be really bad...
35         return 1;
36
37       gdcm::DocEntry *d = file.GetFirstEntry();
38       std::cerr << "Testing file : " << filename << std::endl;
39       while(d)
40       {
41          if ( gdcm::DataEntry *de = dynamic_cast<gdcm::DataEntry *>(d) )
42          {
43            if( !de->IsValueCountValid() )
44              {
45              std::cerr << "Element: " << de->GetKey() <<
46                " (" << de->GetName() << ") " <<
47                "Contains a wrong VM: " << de->GetValueCount() 
48                << " should be: " << de->GetVM() << std::endl;;
49              }
50          }
51          else
52          {
53           // We skip pb of SQ recursive exploration
54          }
55
56          d = file.GetNextEntry();
57       }
58
59       return 0;
60 }
61
62 int TestAllVM(int argc, char *argv[])
63 {
64    int i = 0;
65    if( argc >= 2 )
66      {
67      const char *filename = argv[1];
68      if( DoTheVMTest( filename ) )
69        return 1;
70      return 0;
71      }
72    // else
73
74    while( gdcmDataImages[i] != 0 )
75    {
76       std::string filename = GDCM_DATA_ROOT;
77       filename += "/";
78       filename += gdcmDataImages[i];
79
80       if( DoTheVMTest( filename ) )
81         return 1;
82       i++;
83       std::cerr << std::endl; // skip a line after each file
84    }
85
86    return 0;
87 }
88