Skip to content

Commit

Permalink
Finished tests for project database
Browse files Browse the repository at this point in the history
  • Loading branch information
vt4a2h committed Jan 18, 2019
1 parent ea7111d commit 66ff83a
Show file tree
Hide file tree
Showing 2 changed files with 110 additions and 10 deletions.
3 changes: 2 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ include(BuildParameters.cmake)
find_package(Qt5Widgets REQUIRED)
if(BUILD_TESTING)
find_package(GTest REQUIRED)
find_package(Qt5Test REQUIRED)
enable_testing()
endif(BUILD_TESTING)

Expand Down Expand Up @@ -54,7 +55,7 @@ if(BUILD_TESTING)
target_link_libraries(tests ${GTEST_LIBRARIES} pthread)

setCommonTargetProperties(tests)
qt5_use_modules(tests Widgets Core)
qt5_use_modules(tests Widgets Core Test)

gtest_discover_tests(tests)
endif(BUILD_TESTING)
Expand Down
117 changes: 108 additions & 9 deletions Tests/cases/ProjectDB.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/*****************************************************************************
/*****************************************************************************
**
** Copyright (C) 2019 Fanaskov Vitaly (vt4a2h@gmail.com)
**
Expand Down Expand Up @@ -37,16 +37,20 @@ TEST(ProjectDBTest, AddProject_Success)
ASSERT_TRUE(added);
}

TEST(ProjectDBTest, AddProject_Fail)
TEST(ProjectDBTest, AddProject_NormalProject_Fail)
{
Projects::ProjectDatabase db;

auto added = db.addProject(nullptr);
ASSERT_FALSE(added);

auto project = std::make_shared<Projects::Project>("Foo", "Bar");
db.addProject(project);
added = db.addProject(project);
ASSERT_FALSE(db.addProject(project));
}

TEST(ProjectDBTest, AddProject_NullProject_Fail)
{
Projects::ProjectDatabase db;

auto added = db.addProject(nullptr);
ASSERT_FALSE(added);
}

Expand All @@ -61,14 +65,19 @@ TEST(ProjectDBTest, RemoveProject_Success)
ASSERT_TRUE(removed);
}

TEST(ProjectDBTest, RemoveProject_Fail)
TEST(ProjectDBTest, RemoveProject_NormalProject_Fail)
{
Projects::ProjectDatabase db;

auto removed = db.removeProject(nullptr);
auto removed = db.removeProject(std::make_shared<Projects::Project>("Foo", "Bar"));
ASSERT_FALSE(removed);
}

TEST(ProjectDBTest, RemoveProject_NullProject_Fail)
{
Projects::ProjectDatabase db;

removed = db.removeProject(std::make_shared<Projects::Project>("Foo", "Bar"));
auto removed = db.removeProject(nullptr);
ASSERT_FALSE(removed);
}

Expand All @@ -92,3 +101,93 @@ TEST(ProjectDBTest, RemoveProject_SignalEmmited)
db.removeProject(project);
ASSERT_EQ(sp.count(), 1);
}

TEST(ProjectDBTest, ConvertToVector_InitialVectorIsEmpty)
{
Projects::ProjectDatabase db;
ASSERT_TRUE(db.projectsAsVector().isEmpty());
}

static auto genProjects()
{
return QVector<Projects::SharedProject>{
std::make_shared<Projects::Project>("Foo", "FooPath"),
std::make_shared<Projects::Project>("Foo1", "Foo1Path"),
std::make_shared<Projects::Project>("Foo2", "Foo2Path"),
std::make_shared<Projects::Project>("Foo3", "Foo3Path"),
std::make_shared<Projects::Project>("Foo4", "Foo4Path"),
};
}

TEST(ProjectDBTest, ConvertToVector_VectorContainsAllProjects)
{
Projects::ProjectDatabase db;

auto projects = genProjects();
for (auto &&p : projects)
db.addProject(p);

for (auto &&p : db.projectsAsVector())
ASSERT_NE(projects.indexOf(p), -1);
}

TEST(ProjectDBTest, Contains_Success)
{
Projects::ProjectDatabase db;

db.addProject(std::make_shared<Projects::Project>("Foo", "FooPath"));
ASSERT_TRUE(db.contains("Foo"));
}

TEST(ProjectDBTest, Contains_Fail)
{
Projects::ProjectDatabase db;

db.addProject(std::make_shared<Projects::Project>("Foo", "FooPath"));
ASSERT_FALSE(db.contains("Bar"));
}

TEST(ProjectDBTest, IsEmpty_InitialState_Success)
{
Projects::ProjectDatabase db;
ASSERT_TRUE(db.isEmpty());
}


TEST(ProjectDBTest, IsEmpty_Success)
{
Projects::ProjectDatabase db;

auto p = std::make_shared<Projects::Project>("Foo", "FooPath");
db.addProject(p);
db.removeProject(p);
ASSERT_TRUE(db.isEmpty());
}


TEST(ProjectDBTest, IsEmpty_Fail)
{
Projects::ProjectDatabase db;

db.addProject(std::make_shared<Projects::Project>("Foo", "FooPath"));
ASSERT_FALSE(db.isEmpty());
}

TEST(ProjectDBTest, ProjectByName_Success)
{
Projects::ProjectDatabase db;

auto p = std::make_shared<Projects::Project>("Foo", "FooPath");
db.addProject(p);

auto foundP = db.projectByName("Foo");
ASSERT_EQ(p, foundP);
}

TEST(ProjectDBTest, ProjectByName_Fail)
{
Projects::ProjectDatabase db;

db.addProject(std::make_shared<Projects::Project>("Foo", "FooPath"));
ASSERT_FALSE(!!db.projectByName("Bar"));
}

0 comments on commit 66ff83a

Please sign in to comment.