1 // xestiaab_common.h - Xestia Address Book Common Functions Unit Tests.
3 // (c) 2012-2015 Xestia Software Development.
5 // This file is part of Xestia Address Book.
7 // Xestia Address Book is free software: you can redistribute it and/or modify
8 // it under the terms of the GNU General Public License as published by the
9 // Free Software Foundation, version 3 of the license.
11 // Xestia Address Book is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
16 // You should have received a copy of the GNU General Public License along
17 // with Xestia Address Book. If not, see <http://www.gnu.org/licenses/>
19 #include <gtest/gtest.h>
20 #include "../common/dirs.h"
21 #include "../common/filename.h"
22 #include "../common/mime.h"
23 #include "../common/svrblist.h"
24 #include "../common/textprocessing.h"
26 TEST(CommonFunctions, GetUserDir){
28 // Run the unit tests depending on the operating system being used.
30 #if defined(__WIN32__)
32 #elif defined(__APPLE__)
36 // Setup for comparison purposes. Should be /home/<user>/.xestiaab
38 wxString UserDirCheck = "";
39 UserDirCheck.Append(wxString::FromUTF8(getenv("HOME")));
40 UserDirCheck.Append(wxT("/.xestiaab/"));
42 wxString UserDir = GetUserDir();
44 ASSERT_EQ(UserDir, UserDirCheck);
50 TEST(CommonFunctions, GetUserPrefDir){
52 // Run the unit tests depending on the operating system being used.
54 #if defined(__WIN32__)
56 #elif defined(__APPLE__)
60 // Setup for comparison purposes. Should be /home/<user>/.xestiaab/preferences
62 wxString UserDirCheck = "";
63 UserDirCheck.Append(wxString::FromUTF8(getenv("HOME")));
64 UserDirCheck.Append(wxT("/.xestiaab/preferences/"));
66 wxString UserDir = GetUserPrefDir();
67 ASSERT_EQ(UserDir, UserDirCheck);
73 TEST(CommonFunctions, GetAccountDir){
75 // Run the unit tests depending on the operating system being used.
77 #if defined(__WIN32__)
79 #elif defined(__APPLE__)
83 // Setup for comparison purposes. Should be /home/<user>/.xestiaab/preferences
85 wxString AccountDirCheck1 = "";
86 wxString AccountDirCheck2 = "";
87 wxString AccountDirCheck3 = "";
89 wxString AccountDirInput1 = "Example1";
90 wxString AccountDirInput2 = "Example2";
91 wxString AccountDirInput3 = "Example3";
93 AccountDirCheck1.Append(wxString::FromUTF8(getenv("HOME")));
94 AccountDirCheck1.Append(wxT("/.xestiaab/accounts/"));
95 AccountDirCheck1.Append("Example1");
96 AccountDirCheck1.Append(wxT("/"));
98 AccountDirCheck2.Append(wxString::FromUTF8(getenv("HOME")));
99 AccountDirCheck2.Append(wxT("/.xestiaab/accounts/"));
100 AccountDirCheck2.Append("Example2");
101 AccountDirCheck2.Append(wxT("/"));
103 AccountDirCheck3.Append(wxString::FromUTF8(getenv("HOME")));
104 AccountDirCheck3.Append(wxT("/.xestiaab/accounts/"));
105 AccountDirCheck3.Append("Example3");
106 AccountDirCheck3.Append(wxT("/"));
108 wxString AccountDir1 = GetAccountDir(AccountDirInput1, false);
109 wxString AccountDir2 = GetAccountDir(AccountDirInput2, false);
110 wxString AccountDir3 = GetAccountDir(AccountDirInput3, false);
112 ASSERT_EQ(AccountDir1, AccountDirCheck1);
113 ASSERT_EQ(AccountDir2, AccountDirCheck2);
114 ASSERT_EQ(AccountDir3, AccountDirCheck3);
120 TEST(CommonFunctions, GetAccountDirCertificate){
122 // Run the unit tests depending on the operating system being used.
124 #if defined(__WIN32__)
126 #elif defined(__APPLE__)
130 // Setup for comparison purposes. Should be /home/<user>/.xestiaab/preferences
132 wxString AccountDirCheck1 = "";
133 wxString AccountDirCheck2 = "";
134 wxString AccountDirCheck3 = "";
136 wxString AccountDirInput1 = "Example1";
137 wxString AccountDirInput2 = "Example2";
138 wxString AccountDirInput3 = "Example3";
140 AccountDirCheck1.Append(wxString::FromUTF8(getenv("HOME")));
141 AccountDirCheck1.Append(wxT("/.xestiaab/accounts/"));
142 AccountDirCheck1.Append("Example1");
143 AccountDirCheck1.Append(wxT("/server.crt"));
145 AccountDirCheck2.Append(wxString::FromUTF8(getenv("HOME")));
146 AccountDirCheck2.Append(wxT("/.xestiaab/accounts/"));
147 AccountDirCheck2.Append("Example2");
148 AccountDirCheck2.Append(wxT("/server.crt"));
150 AccountDirCheck3.Append(wxString::FromUTF8(getenv("HOME")));
151 AccountDirCheck3.Append(wxT("/.xestiaab/accounts/"));
152 AccountDirCheck3.Append("Example3");
153 AccountDirCheck3.Append(wxT("/server.crt"));
155 wxString AccountDir1 = GetAccountDir(AccountDirInput1, true);
156 wxString AccountDir2 = GetAccountDir(AccountDirInput2, true);
157 wxString AccountDir3 = GetAccountDir(AccountDirInput3, true);
159 ASSERT_EQ(AccountDir1, AccountDirCheck1);
160 ASSERT_EQ(AccountDir2, AccountDirCheck2);
161 ASSERT_EQ(AccountDir3, AccountDirCheck3);
167 TEST(CommonFunctions, GetAccountsFile){
169 // Run the unit tests depending on the operating system being used.
171 #if defined(__WIN32__)
173 #elif defined(__APPLE__)
177 // Setup for comparison purposes. Should be
178 // /home/<user>/.xestiaab/preferences/accounts
180 wxString AccountsFileCheck = "";
181 AccountsFileCheck.Clear();
182 AccountsFileCheck.Append(wxString::FromUTF8(getenv("HOME")));
183 AccountsFileCheck.Append(wxT("/.xestiaab/preferences/accounts"));
185 wxString AccountsFile = GetAccountsFile();
187 ASSERT_EQ(AccountsFile, AccountsFileCheck);
193 TEST(CommonFunctions, GetSettingsFile){
195 // Run the unit tests depending on the operating system being used.
197 #if defined(__WIN32__)
199 #elif defined(__APPLE__)
203 // Setup for comparison purposes. Should be
204 // /home/<user>/.xestiaab/preferences/accounts
206 wxString SettingsFileCheck = "";
207 SettingsFileCheck.Clear();
208 SettingsFileCheck.Append(wxString::FromUTF8(getenv("HOME")));
209 SettingsFileCheck.Append(wxT("/.xestiaab/preferences/settings"));
211 wxString SettingsFile = GetSettingsFile();
213 ASSERT_EQ(SettingsFile, SettingsFileCheck);
219 TEST(CommonFunctions, CreateFilenamePath){
221 // Run the unit tests depending on the operating system being used.
223 #if defined(__WIN32__)
225 #elif defined(__APPLE__)
229 ASSERT_EQ("/test", CreateFilenamePath("", "test"));
230 ASSERT_EQ("/example/test", CreateFilenamePath("/example", "test"));
231 ASSERT_EQ("/home/meep/test", CreateFilenamePath("/home/meep", "test"));
232 ASSERT_EQ("/home/meep/moo/test", CreateFilenamePath("/home/meep/moo", "test"));
233 ASSERT_EQ("/home/meep/moo/yargh/test", CreateFilenamePath("/home/meep/moo/yargh", "test"));
239 TEST(CommonFunctions, GetMIME){
241 // Get the MIME type based on the files given.
243 ASSERT_EQ("text/plain", GetMIME("TextMIMEExample.txt"));
244 ASSERT_EQ("image/png", GetMIME("PictureMIMEExample.png"));
248 TEST(CommonFunctions, CheckBlacklist){
250 // Test that the blacklist is actually working.
252 ASSERT_EQ(false, CheckBlacklist("example.com"));
253 ASSERT_EQ(true, CheckBlacklist("google.com"));
257 TEST(CommonFunctions, EscapeString){
259 // Test the escape string function.
261 wxString EscapeStringData = "Example";
262 EscapeString(&EscapeStringData, false);
263 ASSERT_EQ("Example", EscapeStringData.ToStdString());
265 EscapeStringData = "Here we go, an \"example\" of escaping string.";
266 EscapeString(&EscapeStringData, false);
267 ASSERT_EQ("Here we go\\, an \"example\" of escaping string.", EscapeStringData.ToStdString());
269 EscapeStringData = "Lets put some \nnew \nlines \nin \nhere.";
270 EscapeString(&EscapeStringData, false);
271 ASSERT_EQ("Lets put some \\nnew \\nlines \\nin \\nhere.", EscapeStringData.ToStdString());
273 EscapeStringData = "Lets put some \r\nnew \r\nlines \r\nin \r\nhere.";
274 EscapeString(&EscapeStringData, false);
275 ASSERT_EQ("Lets put some \\nnew \\nlines \\nin \\nhere.", EscapeStringData.ToStdString());
277 EscapeStringData = "A:\\path\\example\\lets\\have\\some\\fun";
278 EscapeString(&EscapeStringData, false);
279 ASSERT_EQ("A:\\\\path\\\\example\\\\lets\\\\have\\\\some\\\\fun", EscapeStringData.ToStdString());
283 TEST(CommonFunctions, CaptureString){
285 // Test the capture string function.
287 wxString CaptureStringData = "Example";
288 CaptureString(&CaptureStringData, false);
289 ASSERT_EQ("Example", CaptureStringData.ToStdString());
291 CaptureStringData = "Here we go\\, an \"example\" of escaping string.";
292 CaptureString(&CaptureStringData, false);
293 ASSERT_EQ("Here we go, an \"example\" of escaping string.", CaptureStringData.ToStdString());
295 CaptureStringData = "Lets put some \\nnew \\nlines \\nin \\nhere.";
296 CaptureString(&CaptureStringData, false);
297 ASSERT_EQ("Lets put some \nnew \nlines \nin \nhere.", CaptureStringData.ToStdString());
299 CaptureStringData = "A:\\\\path\\\\example\\\\lets\\\\have\\\\some\\\\fun";
300 CaptureString(&CaptureStringData, false);
301 ASSERT_EQ("A:\\path\\example\\lets\\have\\some\\fun", CaptureStringData.ToStdString());
305 TEST(CommonFunctions, ResetUnusedString){
307 // Tests for resetting an unused string.
309 wxString ResetUnusedStringData = "Random string with a \\\\\\\\serverpath\\\\location";
310 ResetUnusedString(&ResetUnusedStringData);
311 ASSERT_EQ("Random string with a \\\\serverpath\\location", ResetUnusedStringData.ToStdString());
313 ResetUnusedStringData = "Some text \\nwith new \\nlines!";
314 ResetUnusedString(&ResetUnusedStringData);
315 ASSERT_EQ("Some text \nwith new \nlines!", ResetUnusedStringData.ToStdString());
317 ResetUnusedStringData = "Some text \\nwith new \\nlines!";
318 ResetUnusedString(&ResetUnusedStringData);
319 ASSERT_EQ("Some text \nwith new \nlines!", ResetUnusedStringData.ToStdString());
321 ResetUnusedStringData = "And now the list of characters: \\\\ \\n \\; \\,";
322 ResetUnusedString(&ResetUnusedStringData);
323 ASSERT_EQ("And now the list of characters: \\ \n ; ,", ResetUnusedStringData.ToStdString());
327 TEST(CommonFunctions, ConvertToHTML){
329 // Tests for converting data for inserting into a HTML
330 // formatted document.
332 wxString ConvertToHTMLData = "The test line where < is probably better than >!";
333 ConvertToHTML(&ConvertToHTMLData);
334 ASSERT_EQ("The test line where < is probably better than >!", ConvertToHTMLData.ToStdString());
336 ConvertToHTMLData = "More testing &<>\n";
337 ConvertToHTML(&ConvertToHTMLData);
338 ASSERT_EQ("More testing &<><br>", ConvertToHTMLData.ToStdString());
340 ConvertToHTMLData = "This is the first line.\nThis is the second line.\nThis is the third line.";
341 ConvertToHTML(&ConvertToHTMLData);
342 ASSERT_EQ("This is the first line.<br>This is the second line.<br>This is the third line.", ConvertToHTMLData.ToStdString());
346 TEST(CommonFunctions, MapDataExists){
348 // Tests for checking that map data exists.
350 std::map<int,int> MapExample;
353 MapExample.insert(std::make_pair(0,1));
354 MapExample.insert(std::make_pair(1,1));
355 MapExample.insert(std::make_pair(2,1));
356 MapExample.insert(std::make_pair(5,1));
357 MapExample.insert(std::make_pair(500,1));
358 MapExample.insert(std::make_pair(2415,1));
360 ASSERT_EQ(true, MapDataExists(&ItemIndex, &MapExample));
363 ASSERT_EQ(true, MapDataExists(&ItemIndex, &MapExample));
366 ASSERT_EQ(true, MapDataExists(&ItemIndex, &MapExample));
369 ASSERT_EQ(false, MapDataExists(&ItemIndex, &MapExample));
372 ASSERT_EQ(true, MapDataExists(&ItemIndex, &MapExample));
375 ASSERT_EQ(false, MapDataExists(&ItemIndex, &MapExample));
378 ASSERT_EQ(false, MapDataExists(&ItemIndex, &MapExample));
381 ASSERT_EQ(true, MapDataExists(&ItemIndex, &MapExample));
384 ASSERT_EQ(false, MapDataExists(&ItemIndex, &MapExample));
387 ASSERT_EQ(false, MapDataExists(&ItemIndex, &MapExample));
390 ASSERT_EQ(true, MapDataExists(&ItemIndex, &MapExample));
393 ASSERT_EQ(false, MapDataExists(&ItemIndex, &MapExample));