Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
Added the SplitPathFilename subroutine and unit tests
[xestiacalendar/.git] / source / tests / xestiacalendar_commonfunctions.h
1 // xestiacalendar_commonfunctions.h - Xestia Calendar Common Functions Unit Tests
2 //
3 // (c) 2016 Xestia Software Development.
4 //
5 // This file is part of Xestia Calendar.
6 //
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.
10 //
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.
15 //
16 // You should have received a copy of the GNU General Public License along
17 // with Xestia Calendar. If not, see <http://www.gnu.org/licenses/>
19 #include "../common/file.h"
20 #include "../common/text.h"
21 #include "../common/colour.h"
23 TEST(CommonFunctions, FileTests){
24         
25         ASSERT_EQ(false, FileExists("iCalendarEvent-Missing.vcf"));
26         ASSERT_EQ(true, FileExists("iCalendarEvent-InvalidPermissions.vcf"));
27         
28 }
30 TEST(CommonFunctions, ProcessTextVectorsTests){
31         
32         // Setup the objects to be used for processing.
33         
34         vector<string> TextPropertiesExample1;
35         vector<string> TextValueExample1;
36         multimap<string, string> TextExample1TestResult;
37         
38         TextPropertiesExample1.push_back("ATTENDEE");
39         TextValueExample1.push_back("Example Attendee 1");
41         TextPropertiesExample1.push_back("ATTENDEE");
42         TextValueExample1.push_back("Example Attendee 2");
43         
44         TextPropertiesExample1.push_back("ATTENDEE");
45         TextValueExample1.push_back("Example Attendee 3");
46         
47         TextPropertiesExample1.push_back("CATEGORIES");
48         TextValueExample1.push_back("CATEGORY 1");
50         TextPropertiesExample1.push_back("CATEGORIES");
51         TextValueExample1.push_back("CATEGORY 2");
52         
53         TextPropertiesExample1.push_back("CATEGORIES");
54         TextValueExample1.push_back("CATEGORY 3");
56         TextPropertiesExample1.push_back("COMMENT");
57         TextValueExample1.push_back("This is the first comment.");
59         TextPropertiesExample1.push_back("COMMENT");
60         TextValueExample1.push_back("This is the second comment.");
61         
62         TextPropertiesExample1.push_back("COMMENT");
63         TextValueExample1.push_back("This is the third comment.");
65         TextPropertiesExample1.push_back("CONTACT;TEST=VALUE");
66         TextValueExample1.push_back("First Contact");
68         TextPropertiesExample1.push_back("CONTACT;LAZY=NOPE");
69         TextValueExample1.push_back("Second Contact");
71         TextPropertiesExample1.push_back("CONTACT;SETUP=NO");
72         TextValueExample1.push_back("Third Contact");
73         
74         TextPropertiesExample1.push_back("RESOURCES;ROOM=YES");
75         TextValueExample1.push_back("First Resource Widget");
77         TextPropertiesExample1.push_back("RESOURCES;ROOM=NO");
78         TextValueExample1.push_back("Second Resource Widget");
80         TextPropertiesExample1.push_back("RESOURCES;ROOM=UNKNOWN");
81         TextValueExample1.push_back("Third Resource Widget");
83         TextPropertiesExample1.push_back("RELATED;RELATION=NO");
84         TextValueExample1.push_back("First Relation");
86         TextPropertiesExample1.push_back("RELATED;RELATION=YES");
87         TextValueExample1.push_back("Second Relation");
89         TextPropertiesExample1.push_back("RELATED;RELATION=MAYBE");
90         TextValueExample1.push_back("Third Relation");
92         // Examples 1 & 2: ATTENDEE
94         TextExample1TestResult.insert(make_pair("ATTENDEE", "Example Attendee 1"));
95         TextExample1TestResult.insert(make_pair("ATTENDEE", "Example Attendee 2"));
96         TextExample1TestResult.insert(make_pair("ATTENDEE", "Example Attendee 3"));
97         
98         ASSERT_EQ(TextExample1TestResult, ProcessTextVectors(&TextPropertiesExample1, &TextValueExample1, true, "ATTENDEE"));
100         TextExample1TestResult.clear();
101         TextExample1TestResult.insert(make_pair("ATTENDEE", "Example Attendee 1"));
103         ASSERT_EQ(TextExample1TestResult, ProcessTextVectors(&TextPropertiesExample1, &TextValueExample1, false, "ATTENDEE"));
105         // Examples 3 & 4: CATEGORIES
107         TextExample1TestResult.clear();
108         TextExample1TestResult.insert(make_pair("CATEGORIES", "CATEGORY 1"));
109         TextExample1TestResult.insert(make_pair("CATEGORIES", "CATEGORY 2"));
110         TextExample1TestResult.insert(make_pair("CATEGORIES", "CATEGORY 3"));
112         ASSERT_EQ(TextExample1TestResult, ProcessTextVectors(&TextPropertiesExample1, &TextValueExample1, true, "CATEGORIES"));
114         TextExample1TestResult.clear();
115         TextExample1TestResult.insert(make_pair("CATEGORIES", "CATEGORY 1"));
117         // Examples 5 & 6: COMMENT
119         ASSERT_EQ(TextExample1TestResult, ProcessTextVectors(&TextPropertiesExample1, &TextValueExample1, false, "CATEGORIES"));
121         TextExample1TestResult.clear();
122         TextExample1TestResult.insert(make_pair("COMMENT", "This is the first comment."));
123         TextExample1TestResult.insert(make_pair("COMMENT", "This is the second comment."));
124         TextExample1TestResult.insert(make_pair("COMMENT", "This is the third comment."));
125         
126         ASSERT_EQ(TextExample1TestResult, ProcessTextVectors(&TextPropertiesExample1, &TextValueExample1, true, "COMMENT"));
128         TextExample1TestResult.clear();
129         TextExample1TestResult.insert(make_pair("COMMENT", "This is the first comment."));
131         // Examples 7 & 8: CONTACT;(properties)
133         ASSERT_EQ(TextExample1TestResult, ProcessTextVectors(&TextPropertiesExample1, &TextValueExample1, false, "COMMENT"));
135         TextExample1TestResult.clear();
136         TextExample1TestResult.insert(make_pair("CONTACT;TEST=VALUE", "First Contact"));
137         TextExample1TestResult.insert(make_pair("CONTACT;LAZY=NOPE", "Second Contact"));
138         TextExample1TestResult.insert(make_pair("CONTACT;SETUP=NO", "Third Contact"));
139         
140         ASSERT_EQ(TextExample1TestResult, ProcessTextVectors(&TextPropertiesExample1, &TextValueExample1, true, "CONTACT"));
142         TextExample1TestResult.clear();
143         TextExample1TestResult.insert(make_pair("CONTACT;TEST=VALUE", "First Contact"));
145         // Examples 9 & 10: RESOURCES;(properties)
147         ASSERT_EQ(TextExample1TestResult, ProcessTextVectors(&TextPropertiesExample1, &TextValueExample1, false, "CONTACT"));
149         TextExample1TestResult.clear();
150         TextExample1TestResult.insert(make_pair("RESOURCES;ROOM=YES", "First Resource Widget"));
151         TextExample1TestResult.insert(make_pair("RESOURCES;ROOM=NO", "Second Resource Widget"));
152         TextExample1TestResult.insert(make_pair("RESOURCES;ROOM=UNKNOWN", "Third Resource Widget"));
154         ASSERT_EQ(TextExample1TestResult, ProcessTextVectors(&TextPropertiesExample1, &TextValueExample1, true, "RESOURCES"));
156         TextExample1TestResult.clear();
157         TextExample1TestResult.insert(make_pair("RESOURCES;ROOM=YES", "First Resource Widget"));
159         ASSERT_EQ(TextExample1TestResult, ProcessTextVectors(&TextPropertiesExample1, &TextValueExample1, false, "RESOURCES"));
161         // Examples 11 & 12: RELATED;(properties)
163         TextExample1TestResult.clear();
164         TextExample1TestResult.insert(make_pair("RELATED;RELATION=NO", "First Relation"));
165         TextExample1TestResult.insert(make_pair("RELATED;RELATION=YES", "Second Relation"));
166         TextExample1TestResult.insert(make_pair("RELATED;RELATION=MAYBE", "Third Relation"));
168         ASSERT_EQ(TextExample1TestResult, ProcessTextVectors(&TextPropertiesExample1, &TextValueExample1, true, "RELATED"));
170         TextExample1TestResult.clear();
171         TextExample1TestResult.insert(make_pair("RELATED;RELATION=NO", "First Relation"));
173         ASSERT_EQ(TextExample1TestResult, ProcessTextVectors(&TextPropertiesExample1, &TextValueExample1, false, "RELATED"));
177 TEST(CommonFunctions, SplitValuesTests){
178         
179         map<string, string> TextExample1TestResult;
180         
181         TextExample1TestResult.insert(make_pair("RELATION", "NO"));
182         TextExample1TestResult.insert(make_pair("TEST", "YES"));
183         TextExample1TestResult.insert(make_pair("DATA", "SOMEDATA"));
184         
185         ASSERT_EQ(TextExample1TestResult, SplitValues("TEST;RELATION=NO;TEST=YES;DATA=SOMEDATA"));
186         
189 TEST(CommonFunctions, SplitNameValueTests){
190         
191         PropertyNameValue NameValueResult;
192                 
193         NameValueResult = SplitNameValue("TEST=OK");
194         
195         string PropertyName = NameValueResult.Name;
196         string PropertyValue = NameValueResult.Value;
197         
198         ASSERT_EQ(PropertyName, "TEST");
199         ASSERT_EQ(PropertyValue, "OK");
200         
203 TEST(CommonFunctions, HexToInt){
204         
205         string Value1 = "10";           // 16
206         string Value2 = "50";           // 80
207         string Value3 = "4F";           // 79
208         string Value4 = "FF";           // 255
209         string Value5 = "FFF";          // 4095
210         string Value6 = "FFFF";         // 65535
211         string Value7 = "75AB";         // 30123
212         string Value8 = "2AC";          // 684
213         string Value9 = "!";            // Fail
214         string Value10 = "4BZ";         // Fail
215         string Value11 = "Z?!$";        // Fail
216         
217         int OutputValue = 0;
218         bool Result = false;
219         
220         Result = HexToInt(&Value1, &OutputValue);
221         
222         ASSERT_EQ(Result, true);
223         ASSERT_EQ(OutputValue, 16);
225         Result = HexToInt(&Value2, &OutputValue);       
226         ASSERT_EQ(Result, true);
227         ASSERT_EQ(OutputValue, 80);
229         Result = HexToInt(&Value3, &OutputValue);       
230         ASSERT_EQ(Result, true);
231         ASSERT_EQ(OutputValue, 79);
232         
233         Result = HexToInt(&Value4, &OutputValue);       
234         ASSERT_EQ(Result, true);
235         ASSERT_EQ(OutputValue, 255);
236         
237         Result = HexToInt(&Value5, &OutputValue);       
238         ASSERT_EQ(Result, true);
239         ASSERT_EQ(OutputValue, 4095);
241         Result = HexToInt(&Value6, &OutputValue);       
242         ASSERT_EQ(Result, true);
243         ASSERT_EQ(OutputValue, 65535);
244         
245         Result = HexToInt(&Value7, &OutputValue);       
246         ASSERT_EQ(Result, true);
247         ASSERT_EQ(OutputValue, 30123);
248         
249         Result = HexToInt(&Value8, &OutputValue);       
250         ASSERT_EQ(Result, true);
251         ASSERT_EQ(OutputValue, 684);
252         
253         Result = HexToInt(&Value9, &OutputValue);
254         ASSERT_EQ(Result, false);
256         Result = HexToInt(&Value10, &OutputValue);      
257         ASSERT_EQ(Result, false);
258         
259         Result = HexToInt(&Value11, &OutputValue);
260         ASSERT_EQ(Result, false);
264 TEST(CommonFunctions, SplitPathFilename){
265         
266         // Setup the file split.
267         
268         string PathFilenameOriginal = "/example/file/yay.txt";
269         string Path = "";
270         string File = "";
271         
272         SplitPathFilename(&PathFilenameOriginal, &Path, &File);
273         
274         ASSERT_EQ("/example/file/", Path);
275         ASSERT_EQ("yay.txt", File);
276         
277         PathFilenameOriginal = "/a/path/with/lots/of/bits/in/andthenthis.html";
278         Path.clear();
279         File.clear();
280         
281         SplitPathFilename(&PathFilenameOriginal, &Path, &File);
282         
283         ASSERT_EQ("/a/path/with/lots/of/bits/in/", Path);
284         ASSERT_EQ("andthenthis.html", File);
286         PathFilenameOriginal = "/one/more/for/a/laugh/hahaha.zip";
287         Path.clear();
288         File.clear();
289         
290         SplitPathFilename(&PathFilenameOriginal, &Path, &File);
291         
292         ASSERT_EQ("/one/more/for/a/laugh/", Path);
293         ASSERT_EQ("hahaha.zip", File);
297 TEST(CommonFunctions, ColourStruct){
298         
299         Colour Colour1;
300         Colour Colour2;
301         Colour Colour3;
302         Colour Colour4;
303         
304         Colour1.red = 0;
305         Colour1.green = 0;
306         Colour1.blue = 0;
307         Colour1.alpha = 0;
309         Colour2.red = 512;
310         Colour2.green = 512;
311         Colour2.blue = 512;
312         Colour2.alpha = 512;
314         Colour3.red = 16;
315         Colour3.green = 16;
316         Colour3.blue = 16;
317         Colour3.alpha = 16;
319         Colour4.red = 80;
320         Colour4.green = 80;
321         Colour4.blue = 80;
322         Colour4.alpha = 80;
324         ASSERT_EQ("#00000000", (string)Colour1);
325         ASSERT_EQ("#FFFFFFFF", (string)Colour2);
326         ASSERT_EQ("#10101010", (string)Colour3);
327         ASSERT_EQ("#50505050", (string)Colour4);
328         
Xestia Software Development
Yn Maystri
© 2006 - 2019 Xestia Software Development
Software

Xestia Address Book
Xestia Calendar
Development

Xestia Gelforn
Everything else

About
News
Privacy Policy