浏览代码

BUG: ctkDICOMBrowser: Add test "testDefaults"

Jean-Christophe Fillion-Robin 7 年之前
父节点
当前提交
96d7e3fbe1
共有 2 个文件被更改,包括 96 次插入1 次删除
  1. 22 1
      Libs/DICOM/Widgets/Testing/Cpp/CMakeLists.txt
  2. 74 0
      Libs/DICOM/Widgets/Testing/Cpp/ctkDICOMBrowserTest.cpp

+ 22 - 1
Libs/DICOM/Widgets/Testing/Cpp/CMakeLists.txt

@@ -2,6 +2,7 @@ set(KIT ${PROJECT_NAME})
 
 create_test_sourcelist(Tests ${KIT}CppTests.cpp
   ctkDICOMAppWidgetTest1.cpp
+  ctkDICOMBrowserTest.cpp
   ctkDICOMBrowserTest1.cpp
   ctkDICOMItemViewTest1.cpp
   ctkDICOMDirectoryListWidgetTest1.cpp
@@ -16,13 +17,32 @@ create_test_sourcelist(Tests ${KIT}CppTests.cpp
   ctkDICOMThumbnailListWidgetTest1.cpp
   )
 
+set(Tests_MOC_CPPS
+  ctkDICOMBrowserTest.cpp
+  )
+
+include_directories(
+  ${CMAKE_SOURCE_DIR}/Libs/Testing
+  ${CMAKE_CURRENT_BINARY_DIR}
+  )
+
+set(CTK_QT_TEST_LIBRARY )
+
+if (CTK_QT_VERSION VERSION_GREATER "4")
+  find_package(Qt5Test REQUIRED)
+  set(CTK_QT_TEST_LIBRARY Qt5::Test)
+  qt5_generate_mocs(${Tests_MOC_CPPS})
+else()
+  qt4_generate_mocs(${Tests_MOC_CPPS})
+endif()
+
 SET (TestsToRun ${Tests})
 REMOVE (TestsToRun ${KIT}CppTests.cpp)
 
 set(LIBRARY_NAME ${PROJECT_NAME})
 
 add_executable(${KIT}CppTests ${Tests})
-target_link_libraries(${KIT}CppTests ${LIBRARY_NAME})
+target_link_libraries(${KIT}CppTests ${LIBRARY_NAME} ${CTK_BASE_LIBRARIES} ${CTK_QT_TEST_LIBRARY})
 
 #
 # Add Tests
@@ -47,6 +67,7 @@ SIMPLE_TEST(ctkDICOMThumbnailListWidgetTest1
 #
 if(EXISTS "${CTKData_DIR}")
   SIMPLE_TEST(ctkDICOMAppWidgetTest1 ${CTKData_DIR}/Data/DICOM/MRHEAD)
+  SIMPLE_TEST(ctkDICOMBrowserTest)
   SIMPLE_TEST(ctkDICOMBrowserTest1 ${CTKData_DIR}/Data/DICOM/MRHEAD)
   SIMPLE_TEST(ctkDICOMItemViewTest1 ${CTKData_DIR}/Data/DICOM/MRHEAD/000055.IMA)
   SIMPLE_TEST(ctkDICOMImageTest1 ${CTKData_DIR}/Data/DICOM/MRHEAD/000055.IMA)

+ 74 - 0
Libs/DICOM/Widgets/Testing/Cpp/ctkDICOMBrowserTest.cpp

@@ -0,0 +1,74 @@
+/*=========================================================================
+
+  Library:   CTK
+
+  Copyright (c) Kitware Inc.
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+      http://www.commontk.org/LICENSE
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+=========================================================================*/
+
+// Qt includes
+#include <QApplication>
+#include <QTest>
+
+// CTK includes
+#include "ctkDICOMBrowser.h"
+#include "ctkScopedCurrentDir.h"
+#include "ctkTest.h"
+#include "ctkUtils.h"
+
+//-----------------------------------------------------------------------------
+class ctkDICOMBrowserTester: public QObject
+{
+  Q_OBJECT
+private slots:
+
+  void testDefaults();
+};
+
+// ----------------------------------------------------------------------------
+void ctkDICOMBrowserTester::testDefaults()
+{
+  ctkScopedCurrentDir scopedCurrentDir(QDir::tempPath());
+
+  // If any, remove ./ctkDICOM-Database directory
+  ctk::removeDirRecursively("./ctkDICOM-Database");
+  QCOMPARE(QFileInfo("./ctkDICOM-Database").isDir(), false);
+
+  ctkDICOMBrowser browser;
+
+  QVERIFY(QFileInfo("./ctkDICOM-Database").isDir());
+  QVERIFY(QFileInfo("./ctkDICOM-Database/ctkDICOM.sql").isFile());
+  QVERIFY(QFileInfo("./ctkDICOM-Database/ctkDICOMTagCache.sql").isFile());
+
+  QCOMPARE(browser.databaseDirectory(), QString("./ctkDICOM-Database"));
+  QVERIFY(browser.database() != 0);
+
+  QCOMPARE(browser.tagsToPrecache(), QStringList());
+
+  QVERIFY(browser.dicomTableManager() != 0);
+
+  QCOMPARE(browser.displayImportSummary(), true);
+  QCOMPARE(browser.patientsAddedDuringImport(), 0);
+  QCOMPARE(browser.studiesAddedDuringImport(), 0);
+  QCOMPARE(browser.seriesAddedDuringImport(), 0);
+  QCOMPARE(browser.instancesAddedDuringImport(), 0);
+
+  QCOMPARE(browser.importDirectoryMode(), ctkDICOMBrowser::ImportDirectoryAddLink);
+  QCOMPARE(browser.skipConfirmImportDirectory(), false);
+}
+
+// ----------------------------------------------------------------------------
+CTK_TEST_MAIN(ctkDICOMBrowserTest)
+#include "moc_ctkDICOMBrowserTest.cpp"