From 91a5de78e9b7f49c6ff775d15e3932e2a99ba6b1 Mon Sep 17 00:00:00 2001 From: "E. Kozlovskaya" Date: Mon, 4 Jan 2021 18:55:48 +0700 Subject: [PATCH] Made tests for features of 462bd42 --- iFacilityProject.pro.user | 91 ++++++++++++++++++++++++++-- iFacilityTests/iFacilityTests.pro | 6 +- iFacilityTests/tst_ifacilitytest.cpp | 67 ++++++++++++++++++++ 3 files changed, 157 insertions(+), 7 deletions(-) diff --git a/iFacilityProject.pro.user b/iFacilityProject.pro.user index a204477..65e9dff 100644 --- a/iFacilityProject.pro.user +++ b/iFacilityProject.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId @@ -64,7 +64,13 @@ true true - + + Checked + Checked + Checked + Checked + Checked + 0 true @@ -155,7 +161,7 @@ true QtProjectManager.QMakeBuildStep - false + true @@ -207,7 +213,7 @@ true QtProjectManager.QMakeBuildStep - false + true @@ -339,7 +345,82 @@ C:/Users/Admin/Documents/repos/build-iFacilityProject-Desktop_Qt_5_15_0_MinGW_64_bit-Debug/iFacility - 1 + + dwarf + + cpu-cycles + + + 250 + + -e + cpu-cycles + --call-graph + dwarf,4096 + -F + 250 + + -F + true + 4096 + false + false + 1000 + + true + + false + false + false + false + true + 0.01 + 10 + true + kcachegrind + 1 + 25 + + 1 + true + false + true + valgrind + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + + + 2 + + Qt4ProjectManager.Qt4RunConfiguration:C:/Users/Admin/Documents/repos/iFacilityProject/iFacilityTests/iFacilityTests.pro + C:/Users/Admin/Documents/repos/iFacilityProject/iFacilityTests/iFacilityTests.pro + + false + + false + true + true + false + false + true + + C:/Users/Admin/Documents/repos/build-iFacilityProject-Desktop_Qt_5_15_0_MinGW_64_bit-Debug/iFacilityTests + + 2 diff --git a/iFacilityTests/iFacilityTests.pro b/iFacilityTests/iFacilityTests.pro index 64f6dce..c0776a2 100644 --- a/iFacilityTests/iFacilityTests.pro +++ b/iFacilityTests/iFacilityTests.pro @@ -9,8 +9,10 @@ TEMPLATE = app SOURCES += tst_ifacilitytest.cpp \ ..\iFacility\objects\userprofession.cpp \ ..\iFacility\objects\profession.cpp \ - ..\iFacility\objects\user.cpp + ..\iFacility\objects\user.cpp \ + ..\iFacility\db\database.cpp HEADERS += ..\iFacility\objects\userprofession.h \ ..\iFacility\objects\profession.h \ - ..\iFacility\objects\user.h + ..\iFacility\objects\user.h \ + ..\iFacility\db\database.h diff --git a/iFacilityTests/tst_ifacilitytest.cpp b/iFacilityTests/tst_ifacilitytest.cpp index a73075b..60189b0 100644 --- a/iFacilityTests/tst_ifacilitytest.cpp +++ b/iFacilityTests/tst_ifacilitytest.cpp @@ -6,11 +6,14 @@ #include "../iFacility/objects/userprofession.h" #include "../iFacility/objects/profession.h" #include "../iFacility/objects/user.h" +#include "../iFacility/db/database.h" class iFacilityTest : public QObject { private: Q_OBJECT + User sampleUser; + public: iFacilityTest() = default; ~iFacilityTest() = default; @@ -21,6 +24,11 @@ private slots: void test_user_current_profession(); void test_user_serialization(); + void test_db_add_user(); + void test_db_get_user_by_uid(); + void test_db_get_user_by_login(); + void test_db_get_users_by_type(); + void test_db_get_users_gy_profession(); }; @@ -97,6 +105,65 @@ void iFacilityTest::test_user_serialization() { QVERIFY(u1.getCurrentProfession() == u2.getCurrentProfession()); } +void iFacilityTest::test_db_add_user() { + // 3 administrators (except u7), 1 dispatcher and 2 workers (for later) + auto u1 = User::createUser("adm1", "test", UserType::ADMINISTRATOR, "f", "s", "t"); + auto u2 = User::createUser("adm2", "test", UserType::ADMINISTRATOR, "f", "s", "t"); + auto u3 = User::createUser("disp1", "test", UserType::DISPATCHER, "f", "s", "t"); + auto u4 = User::createUser("worker1", "test", UserType::WORKER, "f", "s", "t"); + auto u5 = User::createUser("worker2", "test", UserType::WORKER, "f", "s", "t"); + auto u6 = User::createUser("adm3", "test", UserType::ADMINISTRATOR, "f", "s", "t"); + auto u7 = User::createUser("adm1", "test", UserType::ADMINISTRATOR, "f", "s", "t"); + + QVERIFY(Database::instance()->addUser(u1)); // ok + QVERIFY(Database::instance()->addUser(u2)); // ok + QVERIFY(Database::instance()->addUser(u3)); // ok + QVERIFY(Database::instance()->addUser(u4)); // ok + QVERIFY(Database::instance()->addUser(u5)); // ok + QVERIFY(Database::instance()->addUser(u6)); // ok + QVERIFY(!Database::instance()->addUser(u7)); // u7 and u1 has same login + + sampleUser = u1; // saved for later +} + +void iFacilityTest::test_db_get_user_by_uid() { + auto usr1 = Database::instance()->getUser(sampleUser.uID()); + UID nonExistentUuid = 0; + auto usr2 = Database::instance()->getUser(nonExistentUuid); + + QVERIFY(usr1 != nullptr); + QVERIFY(usr2 == nullptr); +} + +void iFacilityTest::test_db_get_user_by_login() { + auto usr1 = Database::instance()->getUser(sampleUser.getLogin()); + QString nonExistentLogin = "not_really_exists"; + auto usr2 = Database::instance()->getUser(nonExistentLogin); + + QVERIFY(usr1 != nullptr); + QVERIFY(usr2 == nullptr); +} + +void iFacilityTest::test_db_get_users_by_type() { + auto admins = Database::instance()->getUsersByType(UserType::ADMINISTRATOR); + auto dispatchers = Database::instance()->getUsersByType(UserType::DISPATCHER); + auto workers = Database::instance()->getUsersByType(UserType::WORKER); + + QVERIFY(admins.size() == 3); + QVERIFY(dispatchers.size() == 1); + QVERIFY(workers.size() == 2); +} + +void iFacilityTest::test_db_get_users_gy_profession() { + auto usr1 = Database::instance()->getUser(sampleUser.getLogin()); + Profession p = Profession::createProfession("test_prof"); + usr1->addProfession(p, 3); + auto usrs = Database::instance()->getUsersByProfession(p); + + QVERIFY(usrs.size() == 1); + QVERIFY(usr1 == usrs[0]); +} + QTEST_APPLESS_MAIN(iFacilityTest) #include "tst_ifacilitytest.moc"