// xestiaab_test.cpp - Xestia Address Book Unit Testing Suite. // // (c) 2012-2015 Xestia Software Development. // // This file is part of Xestia Address Book. // // Xestia Address Book is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by the // Free Software Foundation, version 3 of the license. // // Xestia Address Book is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License along // with Xestia Address Book. If not, see #include #include #include #include "xestiaab_contactload.h" #include "xestiaab_contactsave.h" #include "xestiaab_convert.h" #include "xestiaab_vcard.h" #include "xestiaab_common.h" enum MenuOpts { TESTS_CARDDAV = 1, TESTS_CONTACTLOAD, TESTS_CONTACTSAVE, TESTS_VCARD, TESTS_CONVERT, TESTS_COMMON, TESTS_ALL, TESTS_QUIT }; void printn(std::string text){ // printn: Print a line and end with a newline (\n). std::cout << text << std::endl; } void printmenu(){ // printmenu: Print the menu. std::cout << "Select an option:" << std::endl << std::endl; std::cout << TESTS_CARDDAV << ". CardDAV Object" << std::endl; std::cout << TESTS_CONTACTLOAD << ". Contact Loading" << std::endl; std::cout << TESTS_CONTACTSAVE << ". Contact Saving" << std::endl; std::cout << TESTS_VCARD << ". vCard Object" << std::endl; std::cout << TESTS_CONVERT << ". Contact Conversion" << std::endl; std::cout << TESTS_COMMON << ". Common Functions" << std::endl; std::cout << TESTS_ALL << ". All Tests" << std::endl; std::cout << TESTS_QUIT << ". Quit" << std::endl; std::cout << std::endl; } int main(int argc, char* argv[]){ ::testing::InitGoogleTest(&argc, argv); printn("Xestia Address Book Unit Testing Application"); printn("(c)2015 Xestia Software Development"); printn("Note: Unit testing is currently in development"); printn(""); bool ExitEnabled = false; std::string StringOption = ""; int TestResult = 0; while(ExitEnabled == false){ printmenu(); // Get user input. std::cout << "Select Option: "; std::cin >> StringOption; int IntOption = -1; // Check if input is a number. try{ IntOption = stoi(StringOption); } // Return to the top of the while statement if input // really isn't a number. catch(std::invalid_argument e){ printn("Error: Selected option is not a number."); continue; } // Find which option has been selected from the // input. switch(IntOption){ case TESTS_CARDDAV: printn("Running CardDAV tests..."); ::testing::GTEST_FLAG(filter) = "CardDAV*"; TestResult = RUN_ALL_TESTS(); break; case TESTS_CONTACTLOAD: printn("Running Contact Loading tests..."); ::testing::GTEST_FLAG(filter) = "ContactLoad*"; TestResult = RUN_ALL_TESTS(); break; case TESTS_CONTACTSAVE: printn("Running Contact Saving tests..."); ::testing::GTEST_FLAG(filter) = "ContactSave*"; TestResult = RUN_ALL_TESTS(); break; case TESTS_CONVERT: printn("Running Contact Conversion tests..."); ::testing::GTEST_FLAG(filter) = "ConvertCmdLine*"; TestResult = RUN_ALL_TESTS(); break; case TESTS_VCARD: printn("Running vCard tests..."); ::testing::GTEST_FLAG(filter) = "vCard*"; TestResult = RUN_ALL_TESTS(); break; case TESTS_COMMON: printn("Running Common Functions tests..."); ::testing::GTEST_FLAG(filter) = "CommonFunctions*"; TestResult = RUN_ALL_TESTS(); break; case TESTS_ALL: printn("Running all tests..."); ::testing::GTEST_FLAG(filter) = "*"; TestResult = RUN_ALL_TESTS(); break; case TESTS_QUIT: return 0; break; default: printn("Invalid menu number given."); break; } } }