Skip to content

Commit

Permalink
#150 added test for FVAViewer
Browse files Browse the repository at this point in the history
  • Loading branch information
dimanikulin committed May 9, 2024
1 parent 4f59ade commit eaf4b7e
Show file tree
Hide file tree
Showing 3 changed files with 204 additions and 0 deletions.
2 changes: 2 additions & 0 deletions FVAViewer/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
22 changes: 22 additions & 0 deletions FVAViewer/test/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -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)

180 changes: 180 additions & 0 deletions FVAViewer/test/test_fvaviewer.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,180 @@
#include <gtest/gtest.h>
#include <gmock/gmock.h>

#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

0 comments on commit eaf4b7e

Please sign in to comment.