]> Creatis software - gdcm.git/blobdiff - Testing/TestBuildUpDicomDir.cxx
Fix mistypings
[gdcm.git] / Testing / TestBuildUpDicomDir.cxx
index f191a9c8d08bb84f46532a26ddfac286aab005ba..0fa3cedaa65866fb833472151b1eb798883cc5b3 100644 (file)
@@ -3,8 +3,8 @@
   Program:   gdcm
   Module:    $RCSfile: TestBuildUpDicomDir.cxx,v $
   Language:  C++
-  Date:      $Date: 2005/02/02 10:41:10 $
-  Version:   $Revision: 1.1 $
+  Date:      $Date: 2008/09/15 15:49:21 $
+  Version:   $Revision: 1.13 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -37,15 +37,19 @@ int TestBuildUpDicomDir(int argc, char *argv[])
 {
    if (argc) 
    {
-      std::cerr << "Usage: " << argv[0] << " dummy ";
+      std::cerr << "Usage: " << argv[0] << " dummy " << std::endl;
    }
-
-   gdcm::DicomDir *dcmdir;
+   
+ // GDCM_NAME_SPACE::Debug::DebugOn();
+   bool errorFound = false; 
+   GDCM_NAME_SPACE::DicomDir *dcmdir;
    std::string dirName;  
 
-   dcmdir = new gdcm::DicomDir();
+   dcmdir = GDCM_NAME_SPACE::DicomDir::New();
 
-   gdcm::DicomDirPatient *p1;
+   GDCM_NAME_SPACE::DicomDirPatient *p1;
+   
    // --- Forget these 4 lines :
    // just to improve test coverage.
    p1=dcmdir->GetFirstPatient();
@@ -57,10 +61,10 @@ int TestBuildUpDicomDir(int argc, char *argv[])
    // Create patient ONE
    // ------------------
    p1 = dcmdir->NewPatient();
-   p1->SetValEntry("patientONE",0x0010, 0x0010);
+   p1->SetEntryString("patientONE",0x0010, 0x0010);
    // fill here other patient characteristics
 
-   gdcm::DicomDirStudy *s11;
+   GDCM_NAME_SPACE::DicomDirStudy *s11;
    // --- Forget these 4 lines :
    // just to improve test coverage.
    s11=p1->GetFirstStudy();
@@ -71,22 +75,22 @@ int TestBuildUpDicomDir(int argc, char *argv[])
 
    // Let's create and add a Study for this Patient
    s11 = p1->NewStudy();  
-   s11->SetValEntry("StudyDescrOne.One_",0x0008, 0x1030);
+   s11->SetEntryString("StudyDescrOne.One_",0x0008, 0x1030);
    // we know entry (0008,1060) is not yet created
-   s11->InsertValEntry("Dr Mabuse",     0x0008, 0x1060);
+   s11->InsertEntryString("Dr^Mabuse",     0x0008, 0x1060, "PN");
    // fill here other Study characteristics
 
-   gdcm::DicomDirStudy *s12 = p1->NewStudy();    
-   s12->SetValEntry("StudyDescrOne.Two",0x0008, 0x1030);
-   s12->InsertValEntry("Dr Zorglub",    0x0008, 0x1060);
+   GDCM_NAME_SPACE::DicomDirStudy *s12 = p1->NewStudy();    
+   s12->SetEntryString("StudyDescrOne.Two",0x0008, 0x1030);
+   s12->InsertEntryString("Dr^Zorglub",    0x0008, 0x1060, "PN");
    // fill here other Study characteristics
 
-   gdcm::DicomDirStudy *s13 = p1->NewStudy();  
-   s13->SetValEntry("StudyDescrOne.Tree",0x0008, 0x1030);
-   s13->InsertValEntry("Dr Follamour",   0x0008, 0x1060);
+   GDCM_NAME_SPACE::DicomDirStudy *s13 = p1->NewStudy();  
+   s13->SetEntryString("StudyDescrOne.Tree",0x0008, 0x1030);
+   s13->InsertEntryString("Dr^Follamour",   0x0008, 0x1060, "PN");
    // fill here other Study characteristics
  
-   gdcm::DicomDirSerie *s111;
+   GDCM_NAME_SPACE::DicomDirSerie *s111;
    // --- Forget these 4 lines :
    // just to improve test coverage.
    s111=s11->GetFirstSerie();
@@ -97,10 +101,10 @@ int TestBuildUpDicomDir(int argc, char *argv[])
 
    // Let's create and add a Serie for this Study
    s111 = s11->NewSerie();
-   s111->SetValEntry("01-01-111", 0x0008, 0x0021);
+   s111->SetEntryString("01-01-111", 0x0008, 0x0021);
    // fill here other Serie characteristics
 
-   gdcm::DicomDirImage *s1111;
+   GDCM_NAME_SPACE::DicomDirImage *s1111;
 
    // --- Forget these 4 lines :
    // just to improve test coverage.
@@ -112,57 +116,68 @@ int TestBuildUpDicomDir(int argc, char *argv[])
 
    // Let's create and add a Image for this Serie
    s1111 = s111->NewImage();
-   s1111->SetValEntry("imageFileName1111",0x0004,0x1500);
-
-   gdcm::DicomDirImage *s1112 = s111->NewImage();
-   s1112->SetValEntry("imageFileName1112",0x0004,0x1500);
+   s1111->SetEntryString("imageFileName1111",0x0004,0x1500);
+   GDCM_NAME_SPACE::DicomDirImage *s1112 = s111->NewImage();
+   s1112->SetEntryString("imageFileName1112",0x0004,0x1500);
 
    // Create patient TWO
    // ------------------
-   gdcm::DicomDirPatient *p2 = dcmdir->NewPatient();
-   p2->SetValEntry("patientTWO",0x0010, 0x0010); 
+   GDCM_NAME_SPACE::DicomDirPatient *p2 = dcmdir->NewPatient();
+   p2->SetEntryString("patientTWO",0x0010, 0x0010); 
    // fill here other patient characteristics
     
-   gdcm::DicomDirStudy *s21 = p2->NewStudy();  
-   s21->SetValEntry("StudyDescrTwo.One",0x0008, 0x1030);        
+   GDCM_NAME_SPACE::DicomDirStudy *s21 = p2->NewStudy();  
+   s21->SetEntryString("StudyDescrTwo.One",0x0008, 0x1030);        
    // fill here other Study characteristics
 
-   gdcm::DicomDirSerie *s211 = s21->NewSerie();
-   s111->SetValEntry("01-01-211", 0x0008, 0x0021);
+   GDCM_NAME_SPACE::DicomDirSerie *s211 = s21->NewSerie();
+   s111->SetEntryString("01-01-211", 0x0008, 0x0021);
    // fill here other Serie characteristics
 
-   gdcm::DicomDirImage *s2111 = s211->NewImage();
-   s2111->SetValEntry("imageFileName2111",0x0004,0x1500);
+   GDCM_NAME_SPACE::DicomDirImage *s2111 = s211->NewImage();
+   s2111->SetEntryString("imageFileName2111",0x0004,0x1500);
    // fill here other Image characteristics
 
-   gdcm::DicomDirImage *s2112 = s211->NewImage();
-   s2112->SetValEntry("imageFileName1122",0x0004,0x1500);
+   GDCM_NAME_SPACE::DicomDirImage *s2112 = s211->NewImage();
+   s2112->SetEntryString("imageFileName1122",0x0004,0x1500);
    // fill here other Image characteristics
 
    // Create patient TREE
    // -------------------
-   gdcm::DicomDirPatient *p3 = dcmdir->NewPatient();
-   p3->SetValEntry("patientTHREE",0x0010, 0x0010);
+   GDCM_NAME_SPACE::DicomDirPatient *p3 = dcmdir->NewPatient();
+   p3->SetEntryString("patientTHREE",0x0010, 0x0010);
    // fill here other Patient characteristics
 
    // Add a new Serie/Image for a Patient's Study created a long time ago
    // -------------------------------------------------------------------
-   gdcm::DicomDirSerie *s131 = s13->NewSerie();
-   s111->SetValEntry("01-01-131", 0x0008, 0x0021);
+   GDCM_NAME_SPACE::DicomDirSerie *s131 = s13->NewSerie();
+   s111->SetEntryString("01-01-131", 0x0008, 0x0021);
    // fill here other Serie characteristics
 
-   gdcm::DicomDirImage *s1311 = s131->NewImage();
-   s1311->SetValEntry("imageFileName1311",0x0004,0x1500);
+   GDCM_NAME_SPACE::DicomDirImage *s1311 = s131->NewImage();
+   s1311->SetEntryString("imageFileName1311",0x0004,0x1500);
    // fill here other Image characteristics
      
    // Print
    std::cout << "Test/BuildUpDicomDir: Test Print of patients\n";
    p1->Print();
-   std::cout << "Test/BuildUpDicomDir: -------------------\n";
+   std::cout << "Test/BuildUpDicomDir: end of P1-------------------\n";
    p2->Print();
-   std::cout << "Test/BuildUpDicomDir: -------------------\n";
+   std::cout << "Test/BuildUpDicomDir: end of P2-------------------\n";
    p3->Print();
+   std::cout << "Test/BuildUpDicomDir: end of P3-------------------\n";   
    std::cout << "Test/BuildUpDicomDir: Test Print of patients ended\n";
+   
+ // Let's loop on Patients.  
+   GDCM_NAME_SPACE::DicomDirPatient *p;
+   p=dcmdir->GetFirstPatient();
+   while (p) {
+      std::cout << "one more patient\n";
+      p->Print();
+      p=dcmdir->GetNextPatient();
+   }
+
   
    if( !dcmdir->IsReadable() )
    {
@@ -170,7 +185,7 @@ int TestBuildUpDicomDir(int argc, char *argv[])
                <<" is not readable"<<std::endl
                <<"          ...Failed"<<std::endl;
 
-      delete dcmdir;
+      dcmdir->Delete();
       return 1;
    }
 
@@ -181,21 +196,35 @@ int TestBuildUpDicomDir(int argc, char *argv[])
    dcmdir->Print();
 
    // Write it on disc
-   dcmdir->WriteDicomDir("NewDICOMDIR");
-   delete dcmdir;
+   dcmdir->Write("NewDICOMDIR");
+
+   dcmdir->Delete();
 
    // Read the newly written DicomDir
-   gdcm::DicomDir *newDicomDir = new gdcm::DicomDir("NewDICOMDIR");
+   GDCM_NAME_SPACE::DicomDir *newDicomDir = GDCM_NAME_SPACE::DicomDir::New();
+   newDicomDir->SetFileName("NewDICOMDIR");
+   newDicomDir->Load( );
    if( !newDicomDir->IsReadable() )
    {
       std::cout<<"          Written DicomDir 'NewDICOMDIR'"
                <<" is not readable"<<std::endl
                <<"          ...Failed"<<std::endl;
 
-      delete newDicomDir;
+      newDicomDir->Delete();
       return 1;
    }
    // Check some value we are sure
+   
+   int numberOfPatients = newDicomDir->GetNumberOfPatients();
+   if (numberOfPatients != 3)
+   {
+      std::cout<<"  wrong GetNumberOfPatients() : " << newDicomDir->GetNumberOfPatients()
+               <<" (should be 3)" <<std::endl;
+
+      newDicomDir->Delete();
+      return 1;   
+   }
+   
    p1 = newDicomDir->GetFirstPatient();
    p2 = newDicomDir->GetNextPatient();
    p3 = newDicomDir->GetNextPatient();
@@ -204,7 +233,7 @@ int TestBuildUpDicomDir(int argc, char *argv[])
    {
       std::cout << "A patient is missing in written DicomDir"
           << std::endl;
-      delete newDicomDir;
+      newDicomDir->Delete();
       return 1;
    }
 
@@ -212,20 +241,19 @@ int TestBuildUpDicomDir(int argc, char *argv[])
              << "----------Final Check ---------------------" 
              <<std::endl;
  
-   bool errorFound = false; 
    std::string valueStuff;  
    for (;;) // exit on 'break'
    {
-      if ( p1->GetEntryValue(0x0010, 0x0010) != "patientONE" )
+      if ( p1->GetEntryString(0x0010, 0x0010) != "patientONE" )
       {
          std::cout << "0x0010,0x0010 [" 
-                   << p1->GetEntryValue(0x0010, 0x0010)
+                   << p1->GetEntryString(0x0010, 0x0010)
                    << "]" << std::endl;
          errorFound = true;
          break;
       }
       std::cout << "Patient : [" 
-                << p1->GetEntryValue(0x0010, 0x0010)
+                << p1->GetEntryString(0x0010, 0x0010)
                 << "]" << std::endl;
 
       if ( !(s11 = p1->GetFirstStudy()) )
@@ -234,7 +262,7 @@ int TestBuildUpDicomDir(int argc, char *argv[])
          errorFound = true;
          break;
       }
-      valueStuff = s11->GetEntryValue(0x0008, 0x1030);
+      valueStuff = s11->GetEntryString(0x0008, 0x1030);
       if ( valueStuff.find("StudyDescrOne.One_") >= valueStuff.length() )
       {
          std::cout << "1 : 0x0008,0x1030 [" 
@@ -247,55 +275,58 @@ int TestBuildUpDicomDir(int argc, char *argv[])
                 << valueStuff
                 << "]" << std::endl;
  
-      valueStuff = s11->GetEntryValue(0x0008, 0x1060);
-      if (!gdcm::Util::DicomStringEqual(valueStuff, "Dr Mabuse") )
+      valueStuff = s11->GetEntryString(0x0008, 0x1060);
+std::cout << "----------------length-----------------" << valueStuff.length() <<
+std::endl;     
+      if (!GDCM_NAME_SPACE::Util::DicomStringEqual(valueStuff, "Dr^Mabuse") )
       {
          std::cout << "2 : 0x0008,0x1060 [" 
-                   << s11->GetEntryValue(0x0008,0x1060)
+                   << s11->GetEntryString(0x0008,0x1060)
                    << "]" << std::endl;
          errorFound = true;
          break;
       }
-      std::cout << "Pysician : [" 
+      std::cout << "Physician : [" 
                 << valueStuff
                 << "]" << std::endl;
-      if ( !(s12 = p1->GetNextStudy()) )
+      if ( (s12 = p1->GetNextStudy()) == 0 )
       {
          errorFound = true;
          break;
       }
-      if ( gdcm::Util::DicomStringEqual(s12->GetEntryValue(0x0008,
+      if ( GDCM_NAME_SPACE::Util::DicomStringEqual(s12->GetEntryString(0x0008,
                                            0x1030),"StudyDescrOne.Two " ))
       {
          std::cout << "3 0x0008,0x1030 [" 
-                   << s12->GetEntryValue(0x0008,0x1030)
+                   << s12->GetEntryString(0x0008,0x1030)
                    << "]" << std::endl;
          errorFound = true;
          break;
       }
       std::cout << "Study Descr : [" 
-                << s12->GetEntryValue(0x0008,0x1030)
+                << s12->GetEntryString(0x0008,0x1030)
                 << "]" << std::endl;
 
-      if ( gdcm::Util::DicomStringEqual(s12->GetEntryValue(0x0008,
-                                           0x1060),"Dr Zorglub " ))
+      if ( GDCM_NAME_SPACE::Util::DicomStringEqual(s12->GetEntryString(0x0008,
+                                           0x1060),"Dr^Zorglub " ))
       {
          std::cout << "4 0x0008,0x1060 [" 
-                   << s12->GetEntryValue(0x0008,0x1060)
+                   << s12->GetEntryString(0x0008,0x1060)
                    << "]" << std::endl;
          errorFound = true;
          break;
       }
-      std::cout << "Pysician : [" 
-                << s12->GetEntryValue(0x0008,0x1060)
+   std::cout << "___________________________________" << std::endl;
+      std::cout << "Pysician Reading Study: [" 
+                << s12->GetEntryString(0x0008,0x1060)
                 << "]" << std::endl;
 
-      if ( !(s13 = p1->GetNextStudy()) )
+      if ( (s13 = p1->GetNextStudy()) == 0 )
       {
          std::cout << "Study StudyDescrOne.Tree missing" << std::endl;
          break;
       }         
-      if ( s13->GetEntryValue(0x0008, 0x1030) != "StudyDescrOne.Tree" )
+      if ( s13->GetEntryString(0x0008, 0x1030) != "StudyDescrOne.Tree" )
       {
          errorFound = true;
          break;
@@ -304,8 +335,8 @@ int TestBuildUpDicomDir(int argc, char *argv[])
                 << valueStuff
                 << "]" << std::endl;
 
-      valueStuff = s13->GetEntryValue(0x0008, 0x1060);
-      if (!gdcm::Util::DicomStringEqual(valueStuff, "Dr Follamour") )
+      valueStuff = s13->GetEntryString(0x0008, 0x1060);
+      if (!GDCM_NAME_SPACE::Util::DicomStringEqual(valueStuff, "Dr^Follamour") )
       {
          std::cout << "5 0x0008,0x1060 [" 
                    << valueStuff
@@ -317,15 +348,15 @@ int TestBuildUpDicomDir(int argc, char *argv[])
                 << valueStuff
                 << "]" << std::endl;
 
-      if (!(s111 = s11->GetFirstSerie()) )
+      if ((s111 = s11->GetFirstSerie()) == 0 )
       {
          std::cout << "Serie 01-01-111 missing" << std::endl;
          errorFound = true;
          break;
       }
 
-      valueStuff = s111->GetEntryValue(0x0008, 0x0021);
-      if (!gdcm::Util::DicomStringEqual(valueStuff, "01-01-131") )
+      valueStuff = s111->GetEntryString(0x0008, 0x0021);
+      if (!GDCM_NAME_SPACE::Util::DicomStringEqual(valueStuff, "01-01-131") )
       {
          std::cout << "6 0x0008,0x0021 [" 
                    << valueStuff
@@ -337,43 +368,30 @@ int TestBuildUpDicomDir(int argc, char *argv[])
                 << valueStuff
                 << "]" << std::endl;
 
-      if ( !(s1111 = s111->GetFirstImage()) )
+      if ( (s1111 = s111->GetFirstImage()) == 0 )
       {
          std::cout << "missing image S1111" << std::endl;
          errorFound = true;
          break;
       } 
-/*
-      if ( s1111->GetEntryValue(0x0004,0x1500) != "imageFileName1111 " )
-      {
-         errorFound = true;
-         break;
-      }
-*/
-      if ( !(s1112 = s111->GetNextImage()) )
+
+      if ( (s1112 = s111->GetNextImage()) == 0 )
       {
          std::cout << "missing image S1112" << std::endl;
          errorFound = true;
          break;
       }
-/*
-      if ( s1112->GetEntryValue(0x0004,0x1500) != "imageFileName1112 " )
-      {
-         errorFound = true;
-         break;
-      }
-  */
-     break; // No error found. Stop looping
+
+      break; // No error found. Stop looping
    }
 
-   delete newDicomDir;
    if ( errorFound )
    {
       std::cout << "MissWritting / MissReading " << std::endl;
-      std::cout<<std::flush;
-      return(1);
    }
 
    std::cout<<std::flush;
-   return 0;
+   newDicomDir->Delete();
+
+   return errorFound;
 }