Quellcode durchsuchen

Add ctkDICOMIndexerTest1 to unit test ctkDICOMIndexer

Julien Finet vor 14 Jahren
Ursprung
Commit
0528bdcfa7

+ 2 - 0
Libs/DICOM/Core/Testing/Cpp/CMakeLists.txt

@@ -2,6 +2,7 @@ SET(KIT ${PROJECT_NAME})
 
 CREATE_TEST_SOURCELIST(Tests ${KIT}CppTests.cpp
   ctkDICOMImageTest1.cpp
+  ctkDICOMIndexerTest1.cpp
   ctkDICOMModelTest1.cpp
   ctkDICOMTest1.cpp
   )
@@ -28,6 +29,7 @@ ADD_TEST( ctkDICOMImageTest1 ${KIT_TESTS}
           ctkDICOMImageTest1 ${CTKData_DIR}/Data/DICOM/MRHEAD/000055.IMA)
 SET_PROPERTY(TEST ctkDICOMImageTest1 PROPERTY LABELS ${PROJECT_NAME})
 
+SIMPLE_TEST( ctkDICOMIndexerTest1 )
 ADD_TEST( ctkDICOMModelTest1 ${KIT_TESTS}
           ctkDICOMModelTest1 ${CMAKE_CURRENT_BINARY_DIR}/dicom.db
                              ${CMAKE_CURRENT_SOURCE_DIR}/../../Resources/dicom-sample.sql)

+ 39 - 0
Libs/DICOM/Core/Testing/Cpp/ctkDICOMIndexerTest1.cpp

@@ -0,0 +1,39 @@
+
+// Qt includes
+#include <QApplication>
+#include <QDebug>
+#include <QDir>
+#include <QFileInfo>
+#include <QTreeView>
+#include <QSqlQuery>
+
+// ctkDICOMCore includes
+#include "ctkDICOMDatabase.h"
+#include "ctkDICOMIndexer.h"
+
+// STD includes
+#include <iostream>
+
+int ctkDICOMIndexerTest1( int argc, char * argv [] )
+{
+  QApplication app(argc, argv);
+  
+  ctkDICOMDatabase database;
+  ctkDICOMIndexer indexer;
+
+  // Test ctkDICOMIndexer::addDirectory()
+  // just check if it doesn't crash
+  indexer.addDirectory(database, QString());
+  // might work (if there are some DCM images in temp
+  indexer.addDirectory(database, QDir::tempPath());
+  // give an invalid destination name
+  indexer.addDirectory(database, QDir::tempPath(), QDir::tempPath() + "/@#$%^&*{}[]");
+
+  // make sure it doesn't crash
+  indexer.refreshDatabase(database, QString());
+  
+  // make sure it doesn't crash
+  indexer.refreshDatabase(database, QDir::tempPath());
+
+  return EXIT_SUCCESS;
+}

+ 1 - 1
Libs/DICOM/Core/ctkDICOMDatabase.cpp

@@ -437,7 +437,7 @@ void ctkDICOMDatabase::insert ( DcmDataset *dataset, bool storeFile, bool create
       // TODO: reuse dataset
       DicomImage dcmtkImage(filename.toAscii());
       ctkDICOMImage ctkImage(&dcmtkImage);
-      QImage image( ctkImage.frame(0) );
+      QImage image( ctkImage.getImage(0) );
       image.scaled(128,128,Qt::KeepAspectRatio).save(thumbnailFilename,"PNG");
     }
   }

+ 14 - 2
Libs/DICOM/Core/ctkDICOMIndexer.h

@@ -28,13 +28,25 @@
 #include "ctkDICOMDatabase.h"
 
 class ctkDICOMIndexerPrivate;
+/**
+    \brief Indexes DICOM images located in local directory into an Sql database
+*/
 class CTK_DICOM_CORE_EXPORT ctkDICOMIndexer
 {
 public:
   explicit ctkDICOMIndexer();
   virtual ~ctkDICOMIndexer();
-  /// add directory to database and optionally copy files to destinationDirectory
-  void addDirectory(ctkDICOMDatabase& database, const QString& directoryName, const QString& destinationDirectoryName = "", bool createHierarchy = true, bool createThumbnails = true);
+  
+  /**
+      \brief Adds directory to database and optionally copies files to
+      destinationDirectory.
+      
+      Scan the directory using Dcmtk and populate the database with all the
+      DICOM images accordingly.
+  */
+  void addDirectory(ctkDICOMDatabase& database, const QString& directoryName,
+                    const QString& destinationDirectoryName = "",
+                    bool createHierarchy = true, bool createThumbnails = true);
   void refreshDatabase(ctkDICOMDatabase& database, const QString& directoryName);
 protected:
   QScopedPointer<ctkDICOMIndexerPrivate> d_ptr;