// xestiaab_common.h - Xestia Address Book Common Functions Unit Tests.
//
// (c) 2012-2017 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
wxString 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
wxString 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
wxString 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
wxString 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
wxString 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
wxString 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
wxString 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
wxString 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
wxString 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
wxString 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
wxString 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 =
{
{ 0, 1 }, { 1, 1 }, { 2, 1 }, { 5, 1 }, { 500, 1 }, { 2415, 1 }
};
static int itemIndex = 0;
bool 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
mapExistsStatus = false;
itemIndex = 2;
// When
mapExistsStatus = MapDataExists(&itemIndex, &mapExample);
// Then
ASSERT_EQ(true, mapExistsStatus);
}
TEST(CommonFunctions, GivenMapExistsStatusIsTrueAndItemIndexIs3WhenMapDataExistsIsCalledThenConfirmItemIndex3DoesntExist)
{
// Tests for checking that map data exists.
// Given
mapExistsStatus = true;
itemIndex = 3;
// When
mapExistsStatus = MapDataExists(&itemIndex, &mapExample);
// Then
ASSERT_EQ(false, mapExistsStatus);
}
TEST(CommonFunctions, GivenMapExistsStatusIsFalseAndItemIndexIs5WhenMapDataExistsIsCalledThenConfirmItemIndex5DoesExist)
{
// Tests for checking that map data exists.
// Given
mapExistsStatus = false;
itemIndex = 5;
// When
mapExistsStatus = MapDataExists(&itemIndex, &mapExample);
// Then
ASSERT_EQ(true, mapExistsStatus);
}
TEST(CommonFunctions, GivenMapExistsStatusIsTrueAndItemIndexIs6WhenMapDataExistsIsCalledThenConfirmItemIndex6DoesntExist)
{
// Tests for checking that map data exists.
// Given
mapExistsStatus = true;
itemIndex = 6;
// When
mapExistsStatus = MapDataExists(&itemIndex, &mapExample);
// Then
ASSERT_EQ(false, mapExistsStatus);
}
TEST(CommonFunctions, GivenMapExistsStatusIsFalseAndItemIndexIs499WhenMapDataExistsIsCalledThenConfirmItemIndex499DoesntExist)
{
// Tests for checking that map data exists.
// Given
mapExistsStatus = false;
itemIndex = 499;
// When
mapExistsStatus = MapDataExists(&itemIndex, &mapExample);
// Then
ASSERT_EQ(false, mapExistsStatus);
}
TEST(CommonFunctions, GivenMapExistsStatusIsFalseAndItemIndexIs500WhenMapDataExistsIsCalledThenConfirmItemIndex500DoesExist)
{
// Tests for checking that map data exists.
// Given
mapExistsStatus = false;
itemIndex = 500;
// When
mapExistsStatus = MapDataExists(&itemIndex, &mapExample);
// Then
ASSERT_EQ(true, mapExistsStatus);
}
TEST(CommonFunctions, GivenMapExistsStatusIsTrueAndItemIndexIs501WhenMapDataExistsIsCalledThenConfirmItemIndex501DoesntExist)
{
// Tests for checking that map data exists.
// Given
mapExistsStatus = true;
itemIndex = 501;
// When
mapExistsStatus = MapDataExists(&itemIndex, &mapExample);
// Then
ASSERT_EQ(false, mapExistsStatus);
}
TEST(CommonFunctions, GivenMapExistsStatusIsTrueAndItemIndexIs2414WhenMapDataExistsIsCalledThenConfirmItemIndex2414DoesntExist)
{
// Tests for checking that map data exists.
// Given
mapExistsStatus = true;
itemIndex = 2414;
// When
mapExistsStatus = MapDataExists(&itemIndex, &mapExample);
// Then
ASSERT_EQ(false, mapExistsStatus);
}
TEST(CommonFunctions, GivenMapExistsStatusIsFalseAndItemIndexIs2415WhenMapDataExistsIsCalledThenConfirmItemIndex2415DoesExist)
{
// Tests for checking that map data exists.
// Given
mapExistsStatus = false;
itemIndex = 2415;
// When
mapExistsStatus = MapDataExists(&itemIndex, &mapExample);
// Then
ASSERT_EQ(true, mapExistsStatus);
}
TEST(CommonFunctions, GivenMapExistsStatusIsTrueAndItemIndexIs2416WhenMapDataExistsIsCalledThenConfirmItemIndex2416DoesntExist)
{
// Tests for checking that map data exists.
// Given
mapExistsStatus = true;
itemIndex = 2416;
// When
mapExistsStatus = MapDataExists(&itemIndex, &mapExample);
// Then
ASSERT_EQ(false, mapExistsStatus);
}