// xestiacalendar_test.cpp - Xestia Calendar Unit Testing Suite. // // (c) 2016-2017 Xestia Software Development. // // This file is part of Xestia Calendar. // // Xestia Calendar 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 Calendar 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 Calendar. If not, see #include #include #include #include #include #include "xestiacalendar_commonfunctions.h" #include "xestiacalendar_populate.h" #include "xestiacalendar_icaleventload.h" #include "xestiacalendar_icaleventsave.h" #include "xestiacalendar_icaltaskload.h" #include "xestiacalendar_icaltasksave.h" #include "xestiacalendar_icaljournalload.h" #include "xestiacalendar_icaljournalsave.h" #include "xestiacalendar_icalfreebusyload.h" #include "xestiacalendar_icalfreebusysave.h" #include "xestiacalendar_icaltimezoneload.h" #include "xestiacalendar_icaltimezonesave.h" #include "xestiacalendar_calendardatastorage.h" #include "xestiacalendar_caldav.h" enum MenuOpts { TESTS_ICALLOADEVENT = 1, TESTS_ICALSAVEEVENT, TESTS_ICALLOADTODO, TESTS_ICALSAVETODO, TESTS_ICALLOADJOURNAL, TESTS_ICALSAVEJOURNAL, TESTS_ICALLOADFREEBUSY, TESTS_ICALSAVEFREEBUSY, TESTS_ICALLOADTIMEZONE, TESTS_ICALSAVETIMEZONE, TESTS_CALENDARDATASTORAGE, TESTS_CALDAV, TESTS_COMMONFUNCTIONS, TESTS_EXTRA, TESTS_QUIT }; enum ExtraMenuOpts{ EXTRA_POPULATECALDAV = 1, EXTRA_RETURN }; 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_ICALLOADEVENT << ". iCalendar Event Component Load" << std::endl; std::cout << TESTS_ICALSAVEEVENT << ". iCalendar Event Component Save" << std::endl; std::cout << TESTS_ICALLOADTODO << ". iCalendar Task Component Load" << std::endl; std::cout << TESTS_ICALSAVETODO << ". iCalendar Task Component Save" << std::endl; std::cout << TESTS_ICALLOADJOURNAL << ". iCalendar Journal Component Load" << std::endl; std::cout << TESTS_ICALSAVEJOURNAL << ". iCalendar Journal Component Save" << std::endl; std::cout << TESTS_ICALLOADFREEBUSY << ". iCalendar FreeBusy Component Load" << std::endl; std::cout << TESTS_ICALSAVEFREEBUSY << ". iCalendar FreeBusy Component Save" << std::endl; std::cout << TESTS_ICALLOADTIMEZONE << ". iCalendar Timezone Component Load" << std::endl; std::cout << TESTS_ICALSAVETIMEZONE << ". iCalendar Timezone Component Save" << std::endl; std::cout << TESTS_CALENDARDATASTORAGE << ". Calendar Data Storage" << std::endl; std::cout << TESTS_CALDAV << ". CalDAV Object" << std::endl; std::cout << TESTS_COMMONFUNCTIONS << ". Common Functions" << std::endl; std::cout << TESTS_EXTRA << ". Extra Functions Menu" << std::endl; std::cout << TESTS_QUIT << ". Quit" << std::endl; std::cout << std::endl; } void printextramenu(){ std::cout << "Extra Functions Menu" << std::endl << std::endl; std::cout << "Select an option:" << std::endl << std::endl; std::cout << EXTRA_POPULATECALDAV << ". Populate CalDAV calendar" << std::endl; std::cout << EXTRA_RETURN << ". Return to previous menu" << std::endl; std::cout << std::endl; } void runextramenu(){ bool exitEnabled = false; std::string stringOption = ""; int testResult = 0; while(exitEnabled == false){ printextramenu(); // 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 EXTRA_POPULATECALDAV: printn("Populating CalDAV calendar..."); populatecaldav(); break; case EXTRA_RETURN: return; break; default: printn("Invalid menu number given."); break; } } } int main(int argc, char* argv[]){ // Initialise the several libraries that have // been included. ::testing::InitGoogleTest(&argc, argv); curl_global_init(CURL_GLOBAL_ALL); printn("Xestia Calendar Unit Testing Application"); printn("(c)2016 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_ICALLOADEVENT: printn("Running iCalendar Event Component tests..."); ::testing::GTEST_FLAG(filter) = "iCalendarEvent*"; testResult = RUN_ALL_TESTS(); break; case TESTS_ICALSAVEEVENT: printn("Running iCalendar Event Component Save tests..."); ::testing::GTEST_FLAG(filter) = "iCalendarSaveEvent*"; testResult = RUN_ALL_TESTS(); break; case TESTS_ICALLOADTODO: printn("Running iCalendar Task Component tests..."); ::testing::GTEST_FLAG(filter) = "iCalendarTask*"; testResult = RUN_ALL_TESTS(); break; case TESTS_ICALSAVETODO: printn("Running iCalendar Task Component Save tests..."); ::testing::GTEST_FLAG(filter) = "iCalendarSaveTask*"; testResult = RUN_ALL_TESTS(); break; case TESTS_ICALLOADJOURNAL: printn("Running iCalendar Journal Component tests..."); ::testing::GTEST_FLAG(filter) = "iCalendarJournal*"; testResult = RUN_ALL_TESTS(); break; case TESTS_ICALSAVEJOURNAL: printn("Running iCalendar Journal Component Save tests..."); ::testing::GTEST_FLAG(filter) = "iCalendarSaveJournal*"; testResult = RUN_ALL_TESTS(); break; case TESTS_ICALLOADFREEBUSY: printn("Running iCalendar Free Busy Component tests..."); ::testing::GTEST_FLAG(filter) = "iCalendarFreeBusy*"; testResult = RUN_ALL_TESTS(); break; case TESTS_ICALSAVEFREEBUSY: printn("Running iCalendar Free Busy Component Save tests..."); ::testing::GTEST_FLAG(filter) = "iCalendarSaveFreeBusy*"; testResult = RUN_ALL_TESTS(); break; case TESTS_ICALLOADTIMEZONE: printn("Running iCalendar Timezone Component tests..."); ::testing::GTEST_FLAG(filter) = "iCalendarTimezone*"; testResult = RUN_ALL_TESTS(); break; case TESTS_ICALSAVETIMEZONE: printn("Running iCalendar Timezone Component Save tests..."); ::testing::GTEST_FLAG(filter) = "iCalendarSaveTimezone*"; testResult = RUN_ALL_TESTS(); break; case TESTS_CALENDARDATASTORAGE: printn("Running Calendar Data Storage tests..."); ::testing::GTEST_FLAG(filter) = "CalendarDataStorage*"; testResult = RUN_ALL_TESTS(); break; case TESTS_CALDAV: printn("Running CalDAV tests..."); ::testing::GTEST_FLAG(filter) = "CalDAV*"; testResult = RUN_ALL_TESTS(); break; case TESTS_COMMONFUNCTIONS: printn("Running Commmon Functions tests..."); ::testing::GTEST_FLAG(filter) = "CommonFunctions*"; testResult = RUN_ALL_TESTS(); break; case TESTS_EXTRA: runextramenu(); break; case TESTS_QUIT: return 0; break; default: printn("Invalid menu number given."); break; } } }