diff --git a/FVAViewer/CMakeLists.txt b/FVAViewer/CMakeLists.txt index fd6e2bc5..6a536097 100644 --- a/FVAViewer/CMakeLists.txt +++ b/FVAViewer/CMakeLists.txt @@ -13,6 +13,8 @@ set(HEADER_FILES ../FVACommonLib/FVADescriptionFile.h ) +add_subdirectory(test) + # IMPORTANT: once you add new implementation file here please update IMPLEMENTATIONSTATUS.MD as well in the current folder add_executable(fvaviewer d-filter.ui diff --git a/FVAViewer/test/CMakeLists.txt b/FVAViewer/test/CMakeLists.txt new file mode 100644 index 00000000..bd98c6fc --- /dev/null +++ b/FVAViewer/test/CMakeLists.txt @@ -0,0 +1,22 @@ +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) + +find_package(Qt5 COMPONENTS Core Gui Widgets REQUIRED) + +# tests source files here +add_executable(fvaviewertests + test_fvaviewer.cpp +) + +# add includes +target_include_directories(fvaviewerlibtests PRIVATE +../../FVACommonLib +../../FVAFlowController) + +# Link GoogleTest tests and other libs +target_link_libraries(fvaviewertests Qt5::Widgets Qt5::Core Qt5::Gui gtest gtest_main fvalib) + +# Add the tests to CTest's test runner +add_test(NAME fvaviewertests COMMAND fvaviewertests) + diff --git a/FVAViewer/test/test_fvaviewer.cpp b/FVAViewer/test/test_fvaviewer.cpp new file mode 100644 index 00000000..a45110f4 --- /dev/null +++ b/FVAViewer/test/test_fvaviewer.cpp @@ -0,0 +1,180 @@ +#include +#include + +#include "fvaviewer.h" + +// Mock class for QDir +class MockQDir : public QDir { +public: + MOCK_METHOD1(exists, bool(const QString&)); +}; + +// Mock class for QProgressDialog +class MockQProgressDialog : public QProgressDialog { +public: + MOCK_METHOD2(setValue, void(int)); +}; + +// Test fixture for FVAViewer tests +class FVAViewerTest : public ::testing::Test { +protected: + void SetUp() override { + // Initialize the FVAViewer object + viewer = new FVAViewer; + } + + void TearDown() override { + // Clean up the FVAViewer object + delete viewer; + } + + FVAViewer* viewer; +}; + +// Test case for showProgress when the directory exists +TEST_F(FVAViewerTest, ShowProgress_DirectoryExists) { + // Arrange + QString rootDir = "/path/to/directory"; + MockQDir mockDir; + EXPECT_CALL(mockDir, exists(rootDir)).WillOnce(::testing::Return(true)); + viewer->setDir(&mockDir); + + // Act + viewer->showProgress(rootDir); + + // Assert + // Add your assertions here +} + +// Test case for showProgress when the directory does not exist +TEST_F(FVAViewerTest, ShowProgress_DirectoryDoesNotExist) { + // Arrange + QString rootDir = "/path/to/nonexistent_directory"; + MockQDir mockDir; + EXPECT_CALL(mockDir, exists(rootDir)).WillOnce(::testing::Return(false)); + viewer->setDir(&mockDir); + + // Act + viewer->showProgress(rootDir); + + // Assert + // Add your assertions here +} + +// Test case for showProgress when the number of items is zero +TEST_F(FVAViewerTest, ShowProgress_ZeroItems) { + // Arrange + QString rootDir = "/path/to/directory"; + MockQDir mockDir; + EXPECT_CALL(mockDir, exists(rootDir)).WillOnce(::testing::Return(true)); + viewer->setDir(&mockDir); + + MockQProgressDialog mockProgress; + EXPECT_CALL(mockProgress, setValue(0)); + viewer->setProgressDialog(&mockProgress); + + // Act + viewer->showProgress(rootDir); + + // Assert + // Add your assertions here +} + +// Test case for showProgress when the number of items is non-zero +TEST_F(FVAViewerTest, ShowProgress_NonZeroItems) { + // Arrange + QString rootDir = "/path/to/directory"; + MockQDir mockDir; + EXPECT_CALL(mockDir, exists(rootDir)).WillOnce(::testing::Return(true)); + viewer->setDir(&mockDir); + + MockQProgressDialog mockProgress; + EXPECT_CALL(mockProgress, setValue(::testing::_)); + viewer->setProgressDialog(&mockProgress); + + // Act + viewer->showProgress(rootDir); + + // Assert + // Add your assertions here +} +// Test case for FVAViewer constructor +TEST_F(FVAViewerTests, Constructor) +{ + // Arrange + QString rootDir = "/path/to/root"; + QString dictPath = "/path/to/dictionary"; + + // Act + FVAViewer viewer(rootDir, dictPath); + + // Assert + // Verify that the viewer is constructed correctly + // Add assertions to verify the expected behavior and output +} + +// Test case for populateGUITree function +TEST_F(FVAViewerTests, PopulateGUITree) +{ + // Arrange + FVAViewer viewer; + fvaItem fvaItem; // Set up the necessary fvaItem for the test + QTreeWidgetItem item; // Set up the necessary QTreeWidgetItem for the test + int number = 0; + QProgressDialog progress; // Set up the necessary QProgressDialog for the test + + // Act + viewer.populateGUITree(&fvaItem, &item, number, &progress); + + // Assert + // Verify that the GUI tree is populated correctly + // Add assertions to verify the expected behavior and output +} + +// Test case for showProgress function +TEST_F(FVAViewerTests, ShowProgress) +{ + // Arrange + FVAViewer viewer; + QString rootDir = "/path/to/root"; + + // Act + viewer.showProgress(rootDir); + + // Assert + // Verify that the progress is shown correctly + // Add assertions to verify the expected behavior and output +} + +// Test case for prepareFilters function +TEST_F(FVAViewerTests, PrepareFilters) +{ + // Arrange + FVAViewer viewer; + + // Act + viewer.prepareFilters(); + + // Assert + // Verify that the filters are initialized correctly + // Add assertions to verify the expected behavior and output +} + +// Test case for fvaFilterTree function +TEST_F(FVAViewerTests, FvaFilterTree) +{ + // Arrange + FVAViewer viewer; + fvaFilter filter; // Set up the necessary filter for the test + fvaItem fvaItem; // Set up the necessary fvaItem for the test + QDateTime defFilterDataTime; // Set up the necessary defFilterDataTime for the test + + // Act + viewer.fvaFilterTree(filter, &fvaItem, defFilterDataTime); + + // Assert + // Verify that the FVA tree is filtered correctly + // Add assertions to verify the expected behavior and output +} + +// Add more test cases for other member functions as needed \ No newline at end of file