X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=source%2Ftests%2Fxestiacalendar_testcommon.cpp;h=1dd9843b99ba69ea059998f8dc3711d441b1d3b6;hb=1fe6e43892e5c572949a293a9e19704b5debadad;hp=99cf8fa379a0dec73c6efa37cbce2ae95887963f;hpb=15e1b2f8480eff7f827e5a81c7c700ed1a30429a;p=xestiacalendar%2F.git diff --git a/source/tests/xestiacalendar_testcommon.cpp b/source/tests/xestiacalendar_testcommon.cpp index 99cf8fa..1dd9843 100644 --- a/source/tests/xestiacalendar_testcommon.cpp +++ b/source/tests/xestiacalendar_testcommon.cpp @@ -1,47 +1,206 @@ +// xestiacalendar_testcommon.cpp - Xestia Calendar Unit Test Common Functions. +// +// (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 "xestiacalendar_testcommon.h" #include "../common/file.h" -ProcessConnectionDataFileResult ProcessConnectionDataFile(string DataFilename, - CalDAVConnectionData *ConnData){ +ProcessConnectionDataFileResult ProcessConnectionDataFile(string dataFilename, + CalDAVConnectionData *connData){ - ProcessConnectionDataFileResult ProcessResult = PROCESSCONNECTIONDATAFILE_UNITTESTFAIL; + ProcessConnectionDataFileResult processResult = PROCESSCONNECTIONDATAFILE_UNITTESTFAIL; // Check if the file exists and return // PROCESSCONNECTIONDATAFILE_MISSING if not. - if (!FileExists(DataFilename)){ + if (!FileExists(dataFilename)){ return PROCESSCONNECTIONDATAFILE_MISSING; } - ifstream FileStream; - string ReceivedStringData = ""; + ifstream fileStream; + string receivedStringData = ""; - FileStream.open(DataFilename, ifstream::in); + fileStream.open(dataFilename, ifstream::in); - if (FileStream.rdstate() & ifstream::failbit){ + if (fileStream.rdstate() & ifstream::failbit){ return PROCESSCONNECTIONDATAFILE_CANNOTOPEN; } - if (FileStream.rdstate() & ifstream::badbit){ + if (fileStream.rdstate() & ifstream::badbit){ return PROCESSCONNECTIONDATAFILE_CANNOTOPEN; } // Process the file. - char *BufferRead = new char[256]; + char *bufferRead = new char[256]; - while (!FileStream.eof()){ + while (!fileStream.eof()){ - FileStream.getline(BufferRead, 256); - ReceivedStringData.append(BufferRead); - ReceivedStringData.append("\n"); + fileStream.getline(bufferRead, 256); + receivedStringData.append(bufferRead); + receivedStringData.append("\n"); } - delete[] BufferRead; + delete[] bufferRead; + + bool newLine = false; + bool skipMode = false; + bool equalFound = false; + bool quoteMode = false; + bool serverNameFound = false; + bool serverUserFound = false; + bool serverPassFound = false; + bool serverSSLFound = false; + bool serverPortFound = false; + bool serverPrefixFound = false; + char bufferChar = 0; + int stringDataSize = receivedStringData.size(); + int seekCount = 0; + string propertyName; + string propertyValue; + + while (seekCount < stringDataSize){ + + if (receivedStringData[seekCount] == '='){ + + equalFound = true; + + } else if (receivedStringData[seekCount] == '\n'){ + + // Newline reached. Check for what type of + // data it is. + + // Chceck that the equals sign has been found, + // there is a values in the property name + // and property value before doing anything. + + if (equalFound == true && + propertyName.size() > 0 && + propertyValue.size() > 0){ + + if (propertyName == "server" && serverNameFound == false){ + + // Setup the server hostname. + + connData->hostname = propertyValue; + serverNameFound = true; + + } else if (propertyName == "port" && serverPortFound == false){ + + // Setup the server port. + + int portNum; + bool portNumValid = true; + + try{ + portNum = stoi(propertyValue); + } + + catch(const invalid_argument &oor){ + portNumValid = false; + } + + // Port Number is valid so add to the + // CalDAVConnectionData handle. + + if (portNumValid == true){ + connData->port = portNum; + serverPortFound = true; + } + + } else if (propertyName == "user" && serverUserFound == false){ + + // Setup the server user. + + connData->username = propertyValue; + serverUserFound = true; + + } else if (propertyName == "pass" && serverPassFound == false){ + + // Setup the server pass. + + connData->password = propertyValue; + serverPassFound = true; + + } else if (propertyName == "ssl" && serverSSLFound == false){ + + // Setup the server SSL status. + + if (propertyValue == "true"){ + connData->useSSL = true; + } else { + connData->useSSL = false; + } + + serverSSLFound = true; + + } else if (propertyName == "prefix" && serverPrefixFound == false){ + + // Setup the server prefix. + + connData->prefix = propertyValue; + serverPrefixFound = true; + + } + + } + + // Reset the variables. + + equalFound = false; + propertyName.clear(); + propertyValue.clear(); + + } else { + + // No special character so add it to the + // Property name or value depending on + // if the equal sign has been found. + + bufferChar = receivedStringData[seekCount]; + + if (equalFound == true){ + propertyValue += bufferChar; + } else { + propertyName += bufferChar; + } + + bufferChar = 0; + + } + + seekCount++; + + } + + // Check that the CalDAV connection data object + // contains valid data. + + bool calDAVConnDataResult = CalDAVObjectValidSettings(connData); + + if (calDAVConnDataResult == false){ + processResult = PROCESSCONNECTIONDATAFILE_INVALID; + } else { + processResult = PROCESSCONNECTIONDATAFILE_OK; + } - return ProcessResult; + return processResult; } \ No newline at end of file