]> Creatis software - gdcm.git/blobdiff - Testing/TestReadWriteReadCompare.cxx
* Remove memory leaks
[gdcm.git] / Testing / TestReadWriteReadCompare.cxx
index 48a03f8b87c30fc56a6c8e4557b4f5c7ded60113..2fe46dee09ae2c02199e417fac110c0f83f1e645 100644 (file)
@@ -3,8 +3,8 @@
   Program:   gdcm
   Module:    $RCSfile: TestReadWriteReadCompare.cxx,v $
   Language:  C++
-  Date:      $Date: 2005/02/09 15:06:48 $
-  Version:   $Revision: 1.22 $
+  Date:      $Date: 2005/10/19 13:15:37 $
+  Version:   $Revision: 1.26 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
 =========================================================================*/
 #include "gdcmFile.h"
 #include "gdcmFileHelper.h"
+#include "gdcmDebug.h"
 
 //Generated file:
 #include "gdcmDataImages.h"
-
-int CompareInternal(std::string const & filename, std::string const & output)
+int CompareInternal(std::string const &filename, std::string const &output)
 {
    std::cout << "   Testing: " << filename << std::endl;
 
    //////////////// Step 1 (see above description):
 
-   gdcm::File *file = new gdcm::File( filename );
+   gdcm::File *file = new gdcm::File( );
+   file->SetFileName( filename );
+   file->Load ();
    if( !file->IsReadable() )
    {
-      std::cerr << "Test::TestReadWriteReadCompare: Image not gdcm compatible:"
+      std::cout << "Failed" << std::endl
+                << "Test::TestReadWriteReadCompare: Image not gdcm compatible:"
                 << filename << std::endl;
       delete file;
       return 1;
@@ -52,17 +56,24 @@ int CompareInternal(std::string const & filename, std::string const & output)
    std::cout << "2...";
  
    //////////////// Step 3:
-   gdcm::FileHelper *reread = new gdcm::FileHelper( output );
-   if( !reread->GetFile()->IsReadable() )
+   gdcm::File *fileout = new gdcm::File();
+   fileout->SetFileName( output );
+   fileout->Load();
+  // gdcm::FileHelper *reread = new gdcm::FileHelper( output ); // deprecated
+
+   if( !fileout->IsReadable() )
    {
-     std::cerr << "Failed" << std::endl
-               << "Test::TestReadWriteReadCompare: Could not reread image "
-               << "written:" << filename << std::endl;
-     delete file;
-     delete filehelper;
-     delete reread;
-     return 1;
+      std::cout << "Failed" << std::endl
+                << "Test::TestReadWriteReadCompare: Could not parse the newly "
+                << "written image:" << filename << std::endl;
+      delete file;
+      delete filehelper;
+      delete fileout;
+      return 1;
    }
+
+   gdcm::FileHelper *reread = new gdcm::FileHelper( fileout );
+
    std::cout << "3...";
    // For the next step:
    int    dataSizeWritten = reread->GetImageDataSize();
@@ -84,6 +95,7 @@ int CompareInternal(std::string const & filename, std::string const & output)
                   << reread->GetFile()->GetZSize() << std::endl;
       delete file;
       delete filehelper;
+      delete fileout;
       delete reread;
       return 1;
    }
@@ -96,6 +108,7 @@ int CompareInternal(std::string const & filename, std::string const & output)
          << dataSize << " # " << dataSizeWritten << std::endl;
       delete file;
       delete filehelper;
+      delete fileout;
       delete reread;
       return 1;
    }
@@ -107,6 +120,7 @@ int CompareInternal(std::string const & filename, std::string const & output)
          << "        Pixel differ (as expanded in memory)." << std::endl;
       delete file;
       delete filehelper;
+      delete fileout;
       delete reread;
       return 1;
    }
@@ -115,6 +129,7 @@ int CompareInternal(std::string const & filename, std::string const & output)
    //////////////// Clean up:
    delete file;
    delete filehelper;
+   delete fileout;
    delete reread;
 
    return 0;
@@ -123,15 +138,19 @@ int CompareInternal(std::string const & filename, std::string const & output)
 int TestReadWriteReadCompare(int argc, char *argv[]) 
 {
    int result = 0;
-   if (argc == 3)
+
+   if (argc == 4)
+      gdcm::Debug::DebugOn();
+
+   if (argc >= 3)
    {
-      const std::string input = argv[1];
+      const std::string input  = argv[1];
       const std::string output = argv[2];
       result += CompareInternal(input, output);
    }
-   else if( argc > 3 || argc == 2 )
+   else if( argc > 4 || argc == 2 )
    {
-      std::cerr << "Please read the manual" << std::endl;
+      std::cout << "Please read the manual" << std::endl;
    }
    else
    {