// 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, EscapeString){ // Test the escape string function. wxString EscapeStringData = "Example"; EscapeString(&EscapeStringData, false); ASSERT_EQ("Example", EscapeStringData.ToStdString()); EscapeStringData = "Here we go, an \"example\" of escaping string."; EscapeString(&EscapeStringData, false); ASSERT_EQ("Here we go\\, an \"example\" of escaping string.", EscapeStringData.ToStdString()); EscapeStringData = "Lets put some \nnew \nlines \nin \nhere."; EscapeString(&EscapeStringData, false); ASSERT_EQ("Lets put some \\nnew \\nlines \\nin \\nhere.", EscapeStringData.ToStdString()); EscapeStringData = "Lets put some \r\nnew \r\nlines \r\nin \r\nhere."; EscapeString(&EscapeStringData, false); ASSERT_EQ("Lets put some \\nnew \\nlines \\nin \\nhere.", EscapeStringData.ToStdString()); EscapeStringData = "A:\\path\\example\\lets\\have\\some\\fun"; EscapeString(&EscapeStringData, false); ASSERT_EQ("A:\\\\path\\\\example\\\\lets\\\\have\\\\some\\\\fun", EscapeStringData.ToStdString()); } TEST(CommonFunctions, CaptureString){ // Test the capture string function. wxString CaptureStringData = "Example"; CaptureString(&CaptureStringData, false); ASSERT_EQ("Example", CaptureStringData.ToStdString()); CaptureStringData = "Here we go\\, an \"example\" of escaping string."; CaptureString(&CaptureStringData, false); ASSERT_EQ("Here we go, an \"example\" of escaping string.", CaptureStringData.ToStdString()); CaptureStringData = "Lets put some \\nnew \\nlines \\nin \\nhere."; CaptureString(&CaptureStringData, false); ASSERT_EQ("Lets put some \nnew \nlines \nin \nhere.", CaptureStringData.ToStdString()); CaptureStringData = "A:\\\\path\\\\example\\\\lets\\\\have\\\\some\\\\fun"; CaptureString(&CaptureStringData, false); ASSERT_EQ("A:\\path\\example\\lets\\have\\some\\fun", CaptureStringData.ToStdString()); } TEST(CommonFunctions, ResetUnusedString){ // Tests for resetting an unused string. wxString ResetUnusedStringData = "Random string with a \\\\\\\\serverpath\\\\location"; ResetUnusedString(&ResetUnusedStringData); ASSERT_EQ("Random string with a \\\\serverpath\\location", ResetUnusedStringData.ToStdString()); ResetUnusedStringData = "Some text \\nwith new \\nlines!"; ResetUnusedString(&ResetUnusedStringData); ASSERT_EQ("Some text \nwith new \nlines!", ResetUnusedStringData.ToStdString()); ResetUnusedStringData = "Some text \\nwith new \\nlines!"; ResetUnusedString(&ResetUnusedStringData); ASSERT_EQ("Some text \nwith new \nlines!", ResetUnusedStringData.ToStdString()); ResetUnusedStringData = "And now the list of characters: \\\\ \\n \\; \\,"; ResetUnusedString(&ResetUnusedStringData); ASSERT_EQ("And now the list of characters: \\ \n ; ,", ResetUnusedStringData.ToStdString()); } TEST(CommonFunctions, ConvertToHTML){ // Tests for converting data for inserting into a HTML // formatted document. wxString ConvertToHTMLData = "The test line where < is probably better than >!"; ConvertToHTML(&ConvertToHTMLData); ASSERT_EQ("The test line where < is probably better than >!", ConvertToHTMLData.ToStdString()); ConvertToHTMLData = "More testing &<>\n"; ConvertToHTML(&ConvertToHTMLData); ASSERT_EQ("More testing &<>
", ConvertToHTMLData.ToStdString()); ConvertToHTMLData = "This is the first line.\nThis is the second line.\nThis is the third line."; ConvertToHTML(&ConvertToHTMLData); ASSERT_EQ("This is the first line.
This is the second line.
This is the third line.", ConvertToHTMLData.ToStdString()); } TEST(CommonFunctions, MapDataExists){ // Tests for checking that map data exists. std::map MapExample; int ItemIndex = 0; MapExample.insert(std::make_pair(0,1)); MapExample.insert(std::make_pair(1,1)); MapExample.insert(std::make_pair(2,1)); MapExample.insert(std::make_pair(5,1)); MapExample.insert(std::make_pair(500,1)); MapExample.insert(std::make_pair(2415,1)); ASSERT_EQ(true, MapDataExists(&ItemIndex, &MapExample)); ItemIndex = 1; ASSERT_EQ(true, MapDataExists(&ItemIndex, &MapExample)); ItemIndex = 2; ASSERT_EQ(true, MapDataExists(&ItemIndex, &MapExample)); ItemIndex = 3; ASSERT_EQ(false, MapDataExists(&ItemIndex, &MapExample)); ItemIndex = 5; ASSERT_EQ(true, MapDataExists(&ItemIndex, &MapExample)); ItemIndex = 6; ASSERT_EQ(false, MapDataExists(&ItemIndex, &MapExample)); ItemIndex = 499; ASSERT_EQ(false, MapDataExists(&ItemIndex, &MapExample)); ItemIndex = 500; ASSERT_EQ(true, MapDataExists(&ItemIndex, &MapExample)); ItemIndex = 501; ASSERT_EQ(false, MapDataExists(&ItemIndex, &MapExample)); ItemIndex = 2414; ASSERT_EQ(false, MapDataExists(&ItemIndex, &MapExample)); ItemIndex = 2415; ASSERT_EQ(true, MapDataExists(&ItemIndex, &MapExample)); ItemIndex = 2416; ASSERT_EQ(false, MapDataExists(&ItemIndex, &MapExample)); }