Browse Source

Add DICOM tests

ctkDICOMModelTest2 to test ctkDICOMModel on a QTreeView
ctkDICOMQueryRetrieveWidgetTest1 to test the query/retrieve independently.
Julien Finet 14 years ago
parent
commit
ebdb04fd90

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

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

+ 1 - 1
Libs/DICOM/Widgets/CMakeLists.txt

@@ -79,5 +79,5 @@ ctkMacroBuildLib(
 
 # Testing
 IF(BUILD_TESTING)
-  #ADD_SUBDIRECTORY(Testing)
+  ADD_SUBDIRECTORY(Testing)
 ENDIF(BUILD_TESTING)

+ 8 - 0
Libs/DICOM/Widgets/Testing/Cpp/CMakeLists.txt

@@ -1,6 +1,8 @@
 SET(KIT ${PROJECT_NAME})
 
 CREATE_TEST_SOURCELIST(Tests ${KIT}CppTests.cpp
+  ctkDICOMModelTest2.cpp
+  ctkDICOMQueryRetrieveWidgetTest1.cpp
   )
 
 SET (TestsToRun ${Tests})
@@ -22,3 +24,9 @@ ENDMACRO( SIMPLE_TEST  )
 # Add Tests
 #
 
+ADD_TEST( ctkDICOMModelTest2 ${KIT_TESTS}
+          ctkDICOMModelTest2 ${CMAKE_CURRENT_BINARY_DIR}/dicom.db
+                             ${CMAKE_CURRENT_SOURCE_DIR}/../../../Core/Resources/dicom-sample.sql)
+SET_PROPERTY(TEST ctkDICOMModelTest2 PROPERTY LABELS ${PROJECT_NAME})
+
+SIMPLE_TEST(ctkDICOMQueryRetrieveWidgetTest1)

+ 78 - 0
Libs/DICOM/Widgets/Testing/Cpp/ctkDICOMModelTest2.cpp

@@ -0,0 +1,78 @@
+
+// Qt includes
+#include <QApplication>
+#include <QDebug>
+#include <QFileInfo>
+#include <QHBoxLayout>
+#include <QTimer>
+#include <QTreeView>
+
+// ctkDICOMCore includes
+#include "ctkDICOMDatabase.h"
+#include "ctkDICOMModel.h"
+#include "ctkModelTester.h"
+
+// CTK includes
+#include "ctkCheckableHeaderView.h"
+
+// STD includes
+#include <iostream>
+
+/* Test from build directory:
+ ./CTK-build/bin/CTKDICOMCoreCxxTests ctkDICOMModelTest1 test.db ../CTK/Libs/DICOM/Core/Resources/dicom-sample.sql
+*/
+
+int ctkDICOMModelTest2( int argc, char * argv [] )
+{
+  QApplication app(argc, argv);
+  
+  if (argc <= 2)
+    {
+    std::cerr << "Warning, no sql file given. Test stops" << std::endl;
+    std::cerr << "Usage: qctkDICOMModelTest1 <scratch.db> <dumpfile.sql>" << std::endl;
+    return EXIT_FAILURE;
+    }
+  
+  try
+  {
+    ctkDICOMDatabase myCTK( argv[1] );
+
+    if (!myCTK.initializeDatabase(argv[2]))
+    {
+      std::cerr << "Error when initializing the data base: " << argv[2]
+          << " error: " << myCTK.GetLastError().toStdString();
+    }
+ 
+    ctkDICOMModel model;
+    model.setDatabase(myCTK.database());
+
+    QWidget topLevel;
+    QTreeView viewer;
+    QHBoxLayout* layout = new QHBoxLayout;
+    layout->addWidget(&viewer);
+    topLevel.setLayout(layout);
+    viewer.setModel(&model);
+    
+    QHeaderView* previousHeaderView = viewer.header();
+    qDebug() << "previous: " << previousHeaderView->isHidden();
+    ctkCheckableHeaderView* headerView = new ctkCheckableHeaderView(Qt::Horizontal, &viewer);
+    headerView->setClickable(previousHeaderView->isClickable());
+    headerView->setMovable(previousHeaderView->isMovable());
+    headerView->setHighlightSections(previousHeaderView->highlightSections());
+    headerView->setPropagateToItems(true);
+    viewer.setHeader(headerView);
+    qDebug() << "new: " << headerView->isHidden();
+    topLevel.show();
+    if (argc <= 3 || QString(argv[3]) != "-I")
+      {
+      QTimer::singleShot(200, &app, SLOT(quit()));
+      }
+    return app.exec();
+  }
+  catch (std::exception e)
+    {
+    std::cerr << "Error when opening the data base file: " << argv[1]
+        << " error: " << e.what();
+    return EXIT_FAILURE;
+    }
+}

+ 40 - 0
Libs/DICOM/Widgets/Testing/Cpp/ctkDICOMQueryRetrieveWidgetTest1.cpp

@@ -0,0 +1,40 @@
+// Qt includes
+#include <QApplication>
+#include <QDebug>
+#include <QTimer>
+
+// ctkDICOMCore includes
+#include "ctkDICOMQueryRetrieveWidget.h"
+
+// CTK includes
+//#include "ctkCheckableHeaderView.h"
+
+// STD includes
+#include <iostream>
+
+/* Test from build directory:
+ ./CTK-build/bin/CTKDICOMCoreCxxTests ctkDICOMModelTest1 test.db ../CTK/Libs/DICOM/Core/Resources/dicom-sample.sql
+*/
+
+int ctkDICOMQueryRetrieveWidgetTest1( int argc, char * argv [] )
+{
+  QApplication app(argc, argv);
+  /*
+  if (argc <= 2)
+    {
+    std::cerr << "Warning, no sql file given. Test stops" << std::endl;
+    std::cerr << "Usage: qctkDICOMModelTest1 <scratch.db> <dumpfile.sql>" << std::endl;
+    return EXIT_FAILURE;
+    }
+  */
+
+  ctkDICOMQueryRetrieveWidget widget;
+  widget.show();
+
+  if (argc <= 1 || QString(argv[1]) != "-I")
+    {
+    QTimer::singleShot(200, &app, SLOT(quit()));
+    }
+
+  return app.exec();
+}