// xestiaab_common.h - Xestia Address Book Common Functions Unit Tests. // // (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 "../common/dirs.h" #include "../common/filename.h" #include "../common/mime.h" #include "../common/svrblist.h" #include "../common/textprocessing.h" static wxString AccountInput1 = "Example1"; static wxString AccountInput2 = "Example2"; static wxString AccountInput3 = "Example3"; TEST(CommonFunctions, GivenAPredefinedPathWhenGetUserDirIsCalledThenReceivedPathMatches) { // Run the unit tests depending on the operating system being used. #if defined(__WIN32__) #elif defined(__APPLE__) #else // Setup for comparison purposes. Should be /home//.xestiaab // Given wxString UserDirCheck = ""; UserDirCheck.Append(wxString::FromUTF8(getenv("HOME"))); UserDirCheck.Append(wxT("/.xestiaab/")); // When wxString UserDir = GetUserDir(); // Then ASSERT_EQ(UserDir, UserDirCheck); #endif } TEST(CommonFunctions, GivenAPredefinedPathWhenGetUserPrefDirIsCalledThenReceivedPathMatches) { // Run the unit tests depending on the operating system being used. #if defined(__WIN32__) #elif defined(__APPLE__) #else // Setup for comparison purposes. Should be /home//.xestiaab/preferences // Given wxString UserPrefDirCheck = ""; UserPrefDirCheck.Append(wxString::FromUTF8(getenv("HOME"))); UserPrefDirCheck.Append(wxT("/.xestiaab/preferences/")); // When wxString UserPrefDir = GetUserPrefDir(); // Then ASSERT_EQ(UserPrefDir, UserPrefDirCheck); #endif } TEST(CommonFunctions, GivenThreePredefinedPathsWhenGetAccountDirIsCalledForEachThenReceivedPathsMatches) { // Run the unit tests depending on the operating system being used. #if defined(__WIN32__) #elif defined(__APPLE__) #else // Setup for comparison purposes. Should be /home//.xestiaab/preferences wxString AccountDirCheck1 = ""; wxString AccountDirCheck2 = ""; wxString AccountDirCheck3 = ""; // Given AccountDirCheck1.Append(wxString::FromUTF8(getenv("HOME"))); AccountDirCheck1.Append(wxT("/.xestiaab/accounts/")); AccountDirCheck1.Append("Example1"); AccountDirCheck1.Append(wxT("/")); AccountDirCheck2.Append(wxString::FromUTF8(getenv("HOME"))); AccountDirCheck2.Append(wxT("/.xestiaab/accounts/")); AccountDirCheck2.Append("Example2"); AccountDirCheck2.Append(wxT("/")); AccountDirCheck3.Append(wxString::FromUTF8(getenv("HOME"))); AccountDirCheck3.Append(wxT("/.xestiaab/accounts/")); AccountDirCheck3.Append("Example3"); AccountDirCheck3.Append(wxT("/")); // When wxString AccountDir1 = GetAccountDir(AccountInput1, false); wxString AccountDir2 = GetAccountDir(AccountInput2, false); wxString AccountDir3 = GetAccountDir(AccountInput3, false); // Then ASSERT_EQ(AccountDir1, AccountDirCheck1); ASSERT_EQ(AccountDir2, AccountDirCheck2); ASSERT_EQ(AccountDir3, AccountDirCheck3); #endif } TEST(CommonFunctions, GivenThreePredefinedFilePathsWhenGetAccountDirIsCalledWithAppendServerCertificateSetToTrueForEachThenReceivedPathsMatches) { // Run the unit tests depending on the operating system being used. #if defined(__WIN32__) #elif defined(__APPLE__) #else // Setup for comparison purposes. Should be /home//.xestiaab/preferences wxString AccountDirCheck1 = ""; wxString AccountDirCheck2 = ""; wxString AccountDirCheck3 = ""; // Given AccountDirCheck1.Append(wxString::FromUTF8(getenv("HOME"))); AccountDirCheck1.Append(wxT("/.xestiaab/accounts/")); AccountDirCheck1.Append("Example1"); AccountDirCheck1.Append(wxT("/server.crt")); AccountDirCheck2.Append(wxString::FromUTF8(getenv("HOME"))); AccountDirCheck2.Append(wxT("/.xestiaab/accounts/")); AccountDirCheck2.Append("Example2"); AccountDirCheck2.Append(wxT("/server.crt")); AccountDirCheck3.Append(wxString::FromUTF8(getenv("HOME"))); AccountDirCheck3.Append(wxT("/.xestiaab/accounts/")); AccountDirCheck3.Append("Example3"); AccountDirCheck3.Append(wxT("/server.crt")); // When wxString AccountDir1 = GetAccountDir(AccountInput1, true); wxString AccountDir2 = GetAccountDir(AccountInput2, true); wxString AccountDir3 = GetAccountDir(AccountInput3, true); // Then ASSERT_EQ(AccountDir1, AccountDirCheck1); ASSERT_EQ(AccountDir2, AccountDirCheck2); ASSERT_EQ(AccountDir3, AccountDirCheck3); #endif } TEST(CommonFunctions, GivenPredefinedFilePathWhenGetAccountsFileIsCalledThenReceivedFilePathMatches) { // Run the unit tests depending on the operating system being used. #if defined(__WIN32__) #elif defined(__APPLE__) #else // Setup for comparison purposes. Should be // /home//.xestiaab/preferences/accounts // Given wxString AccountsFileCheck = ""; AccountsFileCheck.Clear(); AccountsFileCheck.Append(wxString::FromUTF8(getenv("HOME"))); AccountsFileCheck.Append(wxT("/.xestiaab/preferences/accounts")); // When wxString AccountsFile = GetAccountsFile(); // Then ASSERT_EQ(AccountsFile, AccountsFileCheck); #endif } TEST(CommonFunctions, GivenPredefinedFilePathWhenGetSettingsFileIsCalledThenReceivedFilePathMatches) { // Run the unit tests depending on the operating system being used. #if defined(__WIN32__) #elif defined(__APPLE__) #else // Setup for comparison purposes. Should be // /home//.xestiaab/preferences/accounts // Given wxString SettingsFileCheck = ""; SettingsFileCheck.Clear(); SettingsFileCheck.Append(wxString::FromUTF8(getenv("HOME"))); SettingsFileCheck.Append(wxT("/.xestiaab/preferences/settings")); // When wxString SettingsFile = GetSettingsFile(); // Then ASSERT_EQ(SettingsFile, SettingsFileCheck); #endif } TEST(CommonFunctions, GivenFivePredefinedFilenamePathsWhenCreateFilenamePathIsCalledThenReceivedPathMatches) { // Run the unit tests depending on the operating system being used. #if defined(__WIN32__) #elif defined(__APPLE__) #else // Given wxString FilenamePath1 = "/test"; wxString FilenamePath2 = "/example/test"; wxString FilenamePath3 = "/home/meep/test"; wxString FilenamePath4 = "/home/meep/moo/test"; wxString FilenamePath5 = "/home/meep/moo/yargh/test"; // When wxString GeneratedFilenamePath1 = CreateFilenamePath("", "test"); wxString GeneratedFilenamePath2 = CreateFilenamePath("/example", "test"); wxString GeneratedFilenamePath3 = CreateFilenamePath("/home/meep", "test"); wxString GeneratedFilenamePath4 = CreateFilenamePath("/home/meep/moo", "test"); wxString GeneratedFilenamePath5 = CreateFilenamePath("/home/meep/moo/yargh", "test"); // Then ASSERT_EQ(FilenamePath1, GeneratedFilenamePath1); ASSERT_EQ(FilenamePath2, GeneratedFilenamePath2); ASSERT_EQ(FilenamePath3, GeneratedFilenamePath3); ASSERT_EQ(FilenamePath4, GeneratedFilenamePath4); ASSERT_EQ(FilenamePath5, GeneratedFilenamePath5); #endif } TEST(CommonFunctions, GivenTwoFilesWhenGetMIMEIsCalledThenBothFilesMIMETypesAreGiven) { // Get the MIME type based on the files given. // Given wxString File1MIMEFormat = ""; wxString File2MIMEFormat = ""; // When File1MIMEFormat = GetMIME("TextMIMEExample.txt"); File2MIMEFormat = GetMIME("PictureMIMEExample.png"); // Then ASSERT_EQ("text/plain", GetMIME("TextMIMEExample.txt")); ASSERT_EQ("image/png", GetMIME("PictureMIMEExample.png")); } TEST(CommonFunctions, GivenTwoDomainNamesWhenCheckBlacklistIsCalledThenReturnsCorrectStatus) { // Test that the blacklist is actually working. // Given bool domainStatus = true; // When domainStatus = CheckBlacklist("example.com"); // Then ASSERT_EQ(false, domainStatus); // When domainStatus = false; domainStatus = CheckBlacklist("google.com"); // Then ASSERT_EQ(true, domainStatus); } TEST(CommonFunctions, GivenExampleStringWhenEscapeStringIsCalledThenReturnedStringIsExample) { // Test the escape string function. // Given wxString EscapeStringData = "Example"; // When EscapeString(&EscapeStringData, false); // Then ASSERT_EQ("Example", EscapeStringData.ToStdString()); } TEST(CommonFunctions, GivenStringWithCommaWhenEscapeStringIsCalledThenCommaIsEscaped) { // Test the escape string function. // Given EscapeStringData = "Here we go, an \"example\" of escaping string."; // When EscapeString(&EscapeStringData, false); // Then ASSERT_EQ("Here we go\\, an \"example\" of escaping string.", EscapeStringData.ToStdString()); } TEST(CommonFunctions, GivenStringWithNewlineCharactersWhenEscapeStringIsCalledThenNewlinesAreEscaped) { // Test the escape string function. // Given EscapeStringData = "Lets put some \nnew \nlines \nin \nhere."; // When EscapeString(&EscapeStringData, false); // Then ASSERT_EQ("Lets put some \\nnew \\nlines \\nin \\nhere.", EscapeStringData.ToStdString()); } TEST(CommonFunctions, GivenAStringWithReturnCharactersWhenEscapeStringIsCalledThenReturnsAreRemoved) { // Test the escape string function. // Given EscapeStringData = "Lets put some \r\nnew \r\nlines \r\nin \r\nhere."; // When EscapeString(&EscapeStringData, false); // Then ASSERT_EQ("Lets put some \\nnew \\nlines \\nin \\nhere.", EscapeStringData.ToStdString()); } TEST(CommonFunctions, GivenStringWithBackslashesWhenEscapeStringIsCalledThenBackslashesAreEscaped) { // Test the escape string function. // Given EscapeStringData = "A:\\path\\example\\lets\\have\\some\\fun"; // When EscapeString(&EscapeStringData, false); // Then ASSERT_EQ("A:\\\\path\\\\example\\\\lets\\\\have\\\\some\\\\fun", EscapeStringData.ToStdString()); } TEST(CommonFunctions, GivenExampleStringWhenCaptureStringIsCalledThenReturnedStringIsExample) { // Test the capture string function. // Given wxString CaptureStringData = "Example"; // When CaptureString(&CaptureStringData, false); // Then ASSERT_EQ("Example", CaptureStringData.ToStdString()); } TEST(CommonFunctions, GivenStringWithEscapedCommasWhenCaptureStringIsCalledThenCommasAreCaptured) { // Test the capture string function. // Given CaptureStringData = "Here we go\\, an \"example\" of escaping string."; // When CaptureString(&CaptureStringData, false); // Then ASSERT_EQ("Here we go, an \"example\" of escaping string.", CaptureStringData.ToStdString()); } TEST(CommonFunctions, GivenStringWithEscapedNewlinesWhenCaptureStringIsCalledThenNewlinesAreCaptured) { // Test the capture string function. // Given CaptureStringData = "Lets put some \\nnew \\nlines \\nin \\nhere."; // When CaptureString(&CaptureStringData, false); // Then ASSERT_EQ("Lets put some \nnew \nlines \nin \nhere.", CaptureStringData.ToStdString()); } TEST(CommonFunctions, GivenStringWithEscapedBackslashesWhenCaptureStringIsCalledThenBackslashesAreCaptured) { // Test the capture string function. // Given CaptureStringData = "A:\\\\path\\\\example\\\\lets\\\\have\\\\some\\\\fun"; // When CaptureString(&CaptureStringData, false); // Then ASSERT_EQ("A:\\path\\example\\lets\\have\\some\\fun", CaptureStringData.ToStdString()); } TEST(CommonFunctions, GivenStringWithSeveralBackslashesWhenResetUnusedStringIsCalledThenStringIsReset) { // Tests for resetting an unused string. // Given wxString ResetUnusedStringData = "Random string with a \\\\\\\\serverpath\\\\location"; // When ResetUnusedString(&ResetUnusedStringData); // Then ASSERT_EQ("Random string with a \\\\serverpath\\location", ResetUnusedStringData.ToStdString()); } TEST(CommonFunctions, GivenStringWithNewlinesWhenResetUnusedStringIsCalledThenStringIsFormatted) { // Tests for resetting an unused string. // Given ResetUnusedStringData = "Some text \\nwith new \\nlines!"; // When ResetUnusedString(&ResetUnusedStringData); // Then ASSERT_EQ("Some text \nwith new \nlines!", ResetUnusedStringData.ToStdString()); } TEST(CommonFunctions, GivenStringWithSeveralCharactersWhenResetUnusedStringThenStringIsFormatted) { // Tests for resetting an unused string. // Given ResetUnusedStringData = "And now the list of characters: \\\\ \\n \\; \\,"; // When ResetUnusedString(&ResetUnusedStringData); // Then ASSERT_EQ("And now the list of characters: \\ \n ; ,", ResetUnusedStringData.ToStdString()); } TEST(CommonFunctions, GivenStringWhenConvertToHTMLIsCalledThenStringisHTMLEscaped) { // Tests for converting data for inserting into a HTML // formatted document. // Given wxString ConvertToHTMLData = "The test line where < is probably better than >!"; // When ConvertToHTML(&ConvertToHTMLData); // Then ASSERT_EQ("The test line where < is probably better than >!", ConvertToHTMLData.ToStdString()); } TEST(CommonFunctions, GivenStringWithNewlineWhenConvertToHTMLIsCalledThenStringIsHTMLEscapedWithFormattedNewline) { // Tests for converting data for inserting into a HTML // formatted document. // Given ConvertToHTMLData = "More testing &<>\n"; // When ConvertToHTML(&ConvertToHTMLData); // Then ASSERT_EQ("More testing &<>
", ConvertToHTMLData.ToStdString()); } TEST(CommonFunctions, GivenStringWithSeveralLinesWhenConvertToHTMLIsCalledThenStringIsHTMLEscapedWithFormattedNewlines) { // Tests for converting data for inserting into a HTML // formatted document. // Given ConvertToHTMLData = "This is the first line.\nThis is the second line.\nThis is the third line."; // When ConvertToHTML(&ConvertToHTMLData); // Then ASSERT_EQ("This is the first line.
This is the second line.
This is the third line.", ConvertToHTMLData.ToStdString()); } static std::map mapExample; static int itemIndex = 0; static mapExample.insert(std::make_pair(0,1)); static mapExample.insert(std::make_pair(1,1)); static mapExample.insert(std::make_pair(2,1)); static mapExample.insert(std::make_pair(5,1)); static mapExample.insert(std::make_pair(500,1)); static mapExample.insert(std::make_pair(2415,1)); static mapExistsStatus = false; TEST(CommonFunctions, GivenMapExistsStatusIsFalseAndItemIndexIs0WhenMapDataExistsIsCalledThenConfirmItemIndex0DoesExist) { // Tests for checking that map data exists. // Given mapExistsStatus = false; itemIndex = 0; // When mapExistsStatus = MapDataExists(&itemIndex, &mapExample); // Then ASSERT_EQ(true, mapExistsStatus); } TEST(CommonFunctions, GivenMapExistsStatusIsFalseAndItemIndexIs1WhenMapDataExistsIsCalledThenConfirmItemIndex1DoesExist) { // Tests for checking that map data exists. // Given mapExistsStatus = false; itemIndex = 1; // When mapExistsStatus = MapDataExists(&itemIndex, &mapExample); // Then ASSERT_EQ(true, mapExistsStatus); } TEST(CommonFunctions, GivenMapExistsStatusIsFalseAndItemIndexIs2WhenMapDataExistsIsCalledThenConfirmItemIndex2DoesExist) { // Tests for checking that map data exists. // Given mapStatusExists = false; itemIndex = 2; // When mapStatusExists = MapDataExists(&itemIndex, &mapExample); // Then ASSERT_EQ(true, mapStatusExists); } TEST(CommonFunctions, GivenMapExistsStatusIsTrueAndItemIndexIs3WhenMapDataExistsIsCalledThenConfirmItemIndex3DoesntExist) { // Tests for checking that map data exists. // Given mapStatusExists = true; itemIndex = 3; // When mapStatusExists = MapDataExists(&itemIndex, &mapExample); // Then ASSERT_EQ(false, mapStatusExists); } TEST(CommonFunctions, GivenMapExistsStatusIsFalseAndItemIndexIs5WhenMapDataExistsIsCalledThenConfirmItemIndex5DoesExist) { // Tests for checking that map data exists. // Given mapStatusExists = false; itemIndex = 5; // When mapStatusExists = MapDataExists(&itemIndex, &mapExample); // Then ASSERT_EQ(true, mapStatusExists); } TEST(CommonFunctions, GivenMapExistsStatusIsTrueAndItemIndexIs6WhenMapDataExistsIsCalledThenConfirmItemIndex6DoesntExist) { // Tests for checking that map data exists. // Given mapStatusExists = true; itemIndex = 6; // When mapStatusExists = MapDataExists(&itemIndex, &mapExample); // Then ASSERT_EQ(false, mapStatusExists); } TEST(CommonFunctions, GivenMapExistsStatusIsFalseAndItemIndexIs499WhenMapDataExistsIsCalledThenConfirmItemIndex499DoesntExist) { // Tests for checking that map data exists. // Given mapStatusExists = false; itemIndex = 499; // When mapStatusExists = MapDataExists(&itemIndex, &mapExample); // Then ASSERT_EQ(false, mapStatusExists); } TEST(CommonFunctions, GivenMapExistsStatusIsFalseAndItemIndexIs500WhenMapDataExistsIsCalledThenConfirmItemIndex500DoesExist) { // Tests for checking that map data exists. // Given mapStatusExists = false; itemIndex = 500; // When mapStatusExists = MapDataExists(&itemIndex, &mapExample); // Then ASSERT_EQ(true, mapStatusExists); } TEST(CommonFunctions, GivenMapExistsStatusIsTrueAndItemIndexIs501WhenMapDataExistsIsCalledThenConfirmItemIndex501DoesntExist) { // Tests for checking that map data exists. // Given mapStatusExists = true; itemIndex = 501; // When mapStatusExists = MapDataExists(&itemIndex, &mapExample); // Then ASSERT_EQ(false, mapStatusExists); } TEST(CommonFunctions, GivenMapExistsStatusIsTrueAndItemIndexIs2414WhenMapDataExistsIsCalledThenConfirmItemIndex2414DoesntExist) { // Tests for checking that map data exists. // Given mapStatusExists = true; itemIndex = 2414; // When mapStatusExists = MapDataExists(&itemIndex, &mapExample); // Then ASSERT_EQ(false, mapStatusExists); } TEST(CommonFunctions, GivenMapExistsStatusIsFalseAndItemIndexIs2415WhenMapDataExistsIsCalledThenConfirmItemIndex2415DoesExist) { // Tests for checking that map data exists. // Given mapStatusExists = false; itemIndex = 2415; // When mapStatusExists = MapDataExists(&itemIndex, &mapExample); // Then ASSERT_EQ(true, mapStatusExists); } TEST(CommonFunctions, GivenMapExistsStatusIsTrueAndItemIndexIs2416WhenMapDataExistsIsCalledThenConfirmItemIndex2416DoesntExist) { // Tests for checking that map data exists. // Given mapStatusExists = true; itemIndex = 2416; // When mapStatusExists = MapDataExists(&itemIndex, &mapExample); // Then ASSERT_EQ(false, mapStatusExists); }