// 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" TEST(CommonFunctions, GetUserDir){ // 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 wxString UserDirCheck = ""; UserDirCheck.Append(wxString::FromUTF8(getenv("HOME"))); UserDirCheck.Append(wxT("/.xestiaab/")); wxString UserDir = GetUserDir(); ASSERT_EQ(UserDir, UserDirCheck); #endif } TEST(CommonFunctions, GetUserPrefDir){ // 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 UserDirCheck = ""; UserDirCheck.Append(wxString::FromUTF8(getenv("HOME"))); UserDirCheck.Append(wxT("/.xestiaab/preferences/")); wxString UserDir = GetUserPrefDir(); ASSERT_EQ(UserDir, UserDirCheck); #endif } TEST(CommonFunctions, GetAccountDir){ // 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 = ""; wxString AccountDirInput1 = "Example1"; wxString AccountDirInput2 = "Example2"; wxString AccountDirInput3 = "Example3"; 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("/")); wxString AccountDir1 = GetAccountDir(AccountDirInput1, false); wxString AccountDir2 = GetAccountDir(AccountDirInput2, false); wxString AccountDir3 = GetAccountDir(AccountDirInput3, false); ASSERT_EQ(AccountDir1, AccountDirCheck1); ASSERT_EQ(AccountDir2, AccountDirCheck2); ASSERT_EQ(AccountDir3, AccountDirCheck3); #endif } TEST(CommonFunctions, GetAccountDirCertificate){ // 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 = ""; wxString AccountDirInput1 = "Example1"; wxString AccountDirInput2 = "Example2"; wxString AccountDirInput3 = "Example3"; 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")); wxString AccountDir1 = GetAccountDir(AccountDirInput1, true); wxString AccountDir2 = GetAccountDir(AccountDirInput2, true); wxString AccountDir3 = GetAccountDir(AccountDirInput3, true); ASSERT_EQ(AccountDir1, AccountDirCheck1); ASSERT_EQ(AccountDir2, AccountDirCheck2); ASSERT_EQ(AccountDir3, AccountDirCheck3); #endif } TEST(CommonFunctions, GetAccountsFile){ // 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 wxString AccountsFileCheck = ""; AccountsFileCheck.Clear(); AccountsFileCheck.Append(wxString::FromUTF8(getenv("HOME"))); AccountsFileCheck.Append(wxT("/.xestiaab/preferences/accounts")); wxString AccountsFile = GetAccountsFile(); ASSERT_EQ(AccountsFile, AccountsFileCheck); #endif } TEST(CommonFunctions, GetSettingsFile){ // 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 wxString SettingsFileCheck = ""; SettingsFileCheck.Clear(); SettingsFileCheck.Append(wxString::FromUTF8(getenv("HOME"))); SettingsFileCheck.Append(wxT("/.xestiaab/preferences/settings")); wxString SettingsFile = GetSettingsFile(); ASSERT_EQ(SettingsFile, SettingsFileCheck); #endif } TEST(CommonFunctions, CreateFilenamePath){ // Run the unit tests depending on the operating system being used. #if defined(__WIN32__) #elif defined(__APPLE__) #else ASSERT_EQ("/test", CreateFilenamePath("", "test")); ASSERT_EQ("/example/test", CreateFilenamePath("/example", "test")); ASSERT_EQ("/home/meep/test", CreateFilenamePath("/home/meep", "test")); ASSERT_EQ("/home/meep/moo/test", CreateFilenamePath("/home/meep/moo", "test")); ASSERT_EQ("/home/meep/moo/yargh/test", CreateFilenamePath("/home/meep/moo/yargh", "test")); #endif } TEST(CommonFunctions, GetMIME){ // Get the MIME type based on the files given. ASSERT_EQ("text/plain", GetMIME("TextMIMEExample.txt")); ASSERT_EQ("image/png", GetMIME("PictureMIMEExample.png")); } TEST(CommonFunctions, CheckBlacklist){ // Test that the blacklist is actually working. ASSERT_EQ(false, CheckBlacklist("example.com")); ASSERT_EQ(true, CheckBlacklist("google.com")); } 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)); }