Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
64678168122799f6da7fd6d00eaff09f7937127f
[xestiaab/.git] / source / tests / xestiaab_contactload.h
1 // xestiaab_contactload.h - Xestia Address Book Contact Load Unit Tests.
2 //
3 // (c) 2012-2017 Xestia Software Development.
4 //
5 // This file is part of Xestia Address Book.
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 Address Book. If not, see <http://www.gnu.org/licenses/>
19 #include <gtest/gtest.h>
20 #include "../contacteditor/cdo/ContactDataObject.h"
22 TEST(ContactLoad, GivenContactDataObjectWhenLoadFileIsCalledWithMissingFileThenReturnFileMissingError)
23 {
25         // Given
27         ContactDataObject testFile;
28         
29         // When
31         ContactLoadStatus testFileLoadStatus = CONTACTLOAD_UNITTESTFAIL;
32         testFileLoadStatus = testFile.LoadFile("MissingFile.vcf");
33         
34         // Then
36         ASSERT_EQ(CONTACTLOAD_FILEMISSING, testFileLoadStatus);
38 }
40 TEST(ContactLoad, GivenContactDataObjectWhenLoadFileIsCalledWithInvalidPermissionsSetThenReturnInvalidPermissionsError)
41 {
43         // Given
44         
45         ContactDataObject testFile;
46         
47         // When
49         ContactLoadStatus testFileLoadStatus = CONTACTLOAD_UNITTESTFAIL;
50         testFileLoadStatus = testFile.LoadFile("InvalidPermissions.vcf");
51         
52         // Then
54         ASSERT_EQ(CONTACTLOAD_FILEERROR, testFileLoadStatus);
56 }
58 TEST(ContactLoad, GivenContactDataObjectWhenLoadFileIsCalledWithInvalidFormatThenReturnInvalidFormatError)
59 {
61         // Given
62         
63         ContactDataObject testFile;
64         
65         // When
67         ContactLoadStatus testFileLoadStatus = CONTACTLOAD_UNITTESTFAIL;
68         testFileLoadStatus = testFile.LoadFile("LoadCheck-Load1-v3.vcf");
69         
70         // Then
72         ASSERT_EQ(CONTACTLOAD_FILEINVALIDFORMAT, testFileLoadStatus);
74 }
76 TEST(ContactLoad, GivenContactDataObjectWhenLoadFileIsCalledWithNonMeetingBaseSpecificationThenReturnFileBaseSpecificationError)
77 {
79         // Given
81         ContactDataObject testFile;
82         
83         // When
84         
85         ContactLoadStatus testFileLoadStatus = CONTACTLOAD_UNITTESTFAIL;
86         testFileLoadStatus = testFile.LoadFile("LoadCheck-Load3.vcf");
88         // Then
90         ASSERT_EQ(CONTACTLOAD_FILEBASESPECFAIL, testFileLoadStatus);
92 }
94 TEST(ContactLoad, GivenContactDataObjectWhenLoadFileIsCalledThenContactLoadedOK)
95 {
97         // Given
99         ContactDataObject testFile;
100         
101         // When
103         ContactLoadStatus testFileLoadStatus = CONTACTLOAD_UNITTESTFAIL;
104         testFileLoadStatus = testFile.LoadFile("LoadCheck-Load4.vcf");
105         
106         // Then
108         ASSERT_EQ(CONTACTLOAD_OK, testFileLoadStatus);
112 TEST(ContactLoad, GivenLoadedContactDataObjectWhenContactKindIsCheckedThenContactKindIsIndividual)
115         // Check that the kind status has been set. (KIND).
117         // Given
118         
119         ContactDataObject testFile;
120         ContactLoadStatus testFileLoadStatus = testFile.LoadFile("LoadCheck-Load4.vcf");
121         ASSERT_EQ(CONTACTLOAD_OK, testFileLoadStatus);
122                 
123         // When
124         
125         ContactKindType testFileContactKindStatus = testFile.ContactKind;
126         
127         // Then
128         // Check that the kind status has been set. (KIND).
129         
130         ASSERT_NE(CONTACTKIND_NONE, testFileContactKindStatus);
131         ASSERT_EQ(CONTACTKIND_INDIVIDUAL, testFileContactKindStatus);
132         
135 TEST(ContactLoad, GivenContactDataObjectWhenFindIsCalledOnGroupsListForFirstGroupThenOnlyFirstGroupIsReturned)
138         // Check that the groups have been read (MEMBER).
140         std::map<int,wxString>::iterator testFileIter;
142         // Given
144         ContactDataObject testFile;
145         ContactLoadStatus testFileLoadStatus = testFile.LoadFile("LoadCheck-Load4.vcf");
146         ASSERT_EQ(CONTACTLOAD_OK, testFileLoadStatus);
147         
148         // When
150         testFileIter = testFile.GroupsList.find(0);
151         
152         // Then
153         
154         ASSERT_NE(testFile.GroupsList.end(), testFileIter);
155         ASSERT_EQ("7a2af44d-6431-4797-a55f-d86d56304fda", testFileIter->second);
159 TEST(ContactLoad, GivenContactDataObjectWhenFindIsCalledOnGroupsListAltIDForFirstGroupThenOnlyFirstGroupAltIDIsReturned)
162         // Check the ALTID parameter for MEMBER.
164         std::map<int,wxString>::iterator testFileIter;
166         // Given
167         
168         ContactDataObject testFile;
169         ContactLoadStatus testFileLoadStatus = testFile.LoadFile("LoadCheck-Load4.vcf");
170         ASSERT_EQ(CONTACTLOAD_OK, testFileLoadStatus);
171         
172         // When
173         
174         testFileIter = testFile.GroupsListAltID.find(0);
175         
176         // Then 
178         ASSERT_NE(testFile.GroupsListAltID.end(), testFileIter);
179         ASSERT_EQ("35", testFileIter->second);
183 TEST(ContactLoad, GivenContactDataObjectWhenFindIsCalledOnGroupsListPIDForFirstGroupThenOnlyFirstGroupPIDIsReturned)
186         // Check the PID parameter for MEMBER.
188         std::map<int,wxString>::iterator testFileIter;
189         std::map<int,int>::iterator testFileIntIter;
190         ContactDataObject testFile;
192         // Given
193         
194         ContactLoadStatus testFileLoadStatus = testFile.LoadFile("LoadCheck-Load4.vcf");
195         ASSERT_EQ(CONTACTLOAD_OK, testFileLoadStatus);
196         
197         // When
198                 
199         testFileIter = testFile.GroupsListPID.find(0);
200         
201         // Then
203         ASSERT_NE(testFile.GroupsListPID.end(), testFileIter);
204         ASSERT_EQ("40", testFileIter->second);
208 TEST(ContactLoad, GivenContactDataObjectWhenFindIsCalledOnGroupsListPreferenceForFirstGroupThenOnlyFirstGroupPreferenceIsReturned)
211         // Check the PREF parameter for MEMBER.
213         std::map<int,wxString>::iterator testFileIter;
214         std::map<int,int>::iterator testFileIntIter;
215         ContactDataObject testFile;
217         // Given
219         ContactLoadStatus testFileLoadStatus = testFile.LoadFile("LoadCheck-Load4.vcf");
220         ASSERT_EQ(CONTACTLOAD_OK, testFileLoadStatus);
221         
222         // When
224         testFileIntIter = testFile.GroupsListPref.find(0);
225         
226         // Then
228         ASSERT_NE(testFile.GroupsListPref.end(), testFileIntIter);
229         ASSERT_EQ(45, testFileIntIter->second);
233 TEST(ContactLoad, GivenContactDataObjectWhenFindIsCalledOnGroupsListMediatypeForFirstGroupThenOnlyFirstGroupMediatypeIsReturned)
236         // Check the MEDIATYPE parameter for MEMBER.
238         std::map<int,wxString>::iterator testFileIter;
239         std::map<int,int>::iterator testFileIntIter;
240         ContactDataObject testFile;
242         // Given
244         ContactLoadStatus testFileLoadStatus = testFile.LoadFile("LoadCheck-Load4.vcf");
245         ASSERT_EQ(CONTACTLOAD_OK, testFileLoadStatus);
246         
247         // When
248         
249         testFileIter = testFile.GroupsListMediaType.find(0);
250         
251         // Then
253         ASSERT_NE(testFile.GroupsListMediaType.end(), testFileIter);
254         ASSERT_EQ("text/plain", testFileIter->second);
258 TEST(ContactLoad, GivenContactDataObjectWhenFindIsCalledOnGroupsListExtraTokensForFirstGroupThenOnlyFirstGroupExtraTokensIsReturned)
261         // Check the extra tokens parameter for MEMBER.
263         std::map<int,wxString>::iterator testFileIter;
264         std::map<int,int>::iterator testFileIntIter;
265         ContactDataObject testFile;
267         // Given
269         ContactLoadStatus testFileLoadStatus = testFile.LoadFile("LoadCheck-Load4.vcf");
270         ASSERT_EQ(CONTACTLOAD_OK, testFileLoadStatus);
271         
272         // When
273         
274         testFileIter = testFile.GroupsListTokens.find(0);
275         
276         // Then
278         ASSERT_NE(testFile.GroupsListTokens.end(), testFileIter);
279         ASSERT_EQ("EXAMPLE=Meep", testFileIter->second);
283 TEST(ContactLoad, GivenContactDataObjectWhenFindIsCalledOnFullNameForFirstFullNameThenOnlyFirstFullNameIsReturned)
286         // Check that the formatted name has been read (FN).
288         std::map<int,wxString>::iterator testFileIter;
289         std::map<int,int>::iterator testFileIntIter;
290         ContactDataObject testFile;
292         // Given
294         ContactLoadStatus testFileLoadStatus = testFile.LoadFile("LoadCheck-Load4.vcf");
295         ASSERT_EQ(CONTACTLOAD_OK, testFileLoadStatus);
296         
297         // When
298         
299         testFileIter = testFile.FullNamesList.find(0);
301         // Then
303         ASSERT_NE(testFile.FullNamesList.end(), testFileIter);
304         ASSERT_EQ("Test Contact", testFileIter->second);
308 TEST(ContactLoad, GivenContactDataObjectWhenFindIsCalledOnFullNameTypeForFirstFullNameThenOnlyFirstFullNameTypeIsReturned)
311         // Check the TYPE parameter for FN.
313         std::map<int,wxString>::iterator testFileIter;
314         std::map<int,int>::iterator testFileIntIter;
315         ContactDataObject testFile;
317         // Given
319         ContactLoadStatus testFileLoadStatus = testFile.LoadFile("LoadCheck-Load4.vcf");
320         ASSERT_EQ(CONTACTLOAD_OK, testFileLoadStatus);
322         // When
324         testFileIter = testFile.FullNamesListType.find(0);
326         // Then
328         ASSERT_NE(testFile.FullNamesListType.end(), testFileIter);
329         ASSERT_EQ("work", testFileIter->second);
333 TEST(ContactLoad, GivenContactDataObjectWhenFindIsCalledOnFullNameLanguageForFirstFullNameThenOnlyFirstFullNameLanguageIsReturned)
336         // Check the LANGUAGE parameter for FN.
338         std::map<int,wxString>::iterator testFileIter;
339         std::map<int,int>::iterator testFileIntIter;
340         ContactDataObject testFile;
342         // Given
344         ContactLoadStatus testFileLoadStatus = testFile.LoadFile("LoadCheck-Load4.vcf");
345         ASSERT_EQ(CONTACTLOAD_OK, testFileLoadStatus);
346         
347         // When
349         testFileIter = testFile.FullNamesListLanguage.find(0);
351         // Then         
353         ASSERT_NE(testFile.FullNamesListLanguage.end(), testFileIter);
354         ASSERT_EQ("kw", testFileIter->second);
358 TEST(ContactLoad, GivenContactDataObjectWhenFindIsCalledOnFullNameAltIDForFirstFullNameThenOnlyFirstFullNameAltIDIsReturned)
361         // Check the ALTID parameter for FN.
363         std::map<int,wxString>::iterator testFileIter;
364         std::map<int,int>::iterator testFileIntIter;
365         ContactDataObject testFile;
367         // Given
369         ContactLoadStatus testFileLoadStatus = testFile.LoadFile("LoadCheck-Load4.vcf");
370         ASSERT_EQ(CONTACTLOAD_OK, testFileLoadStatus);
371         
372         // When
373         
374         testFileIter = testFile.FullNamesListAltID.find(0);
375                 
376         // Then
377         
378         ASSERT_NE(testFile.FullNamesListAltID.end(), testFileIter);
379         ASSERT_EQ("500", testFileIter->second);
383 TEST(ContactLoad, GivenContactDataObjectWhenFindIsCalledOnFullNamePIDForFirstFullNameThenOnlyFirstFullNamePIDIsReturned)
386         // Check the PID parameter for FN.
388         std::map<int,wxString>::iterator testFileIter;
389         std::map<int,int>::iterator testFileIntIter;
390         ContactDataObject testFile;
392         // Given
394         ContactLoadStatus testFileLoadStatus = testFile.LoadFile("LoadCheck-Load4.vcf");
395         ASSERT_EQ(CONTACTLOAD_OK, testFileLoadStatus);
396         
397         // When
398         
399         testFileIter = testFile.FullNamesListPID.find(0);
400                 
401         // Then
403         ASSERT_NE(testFile.FullNamesListPID.end(), testFileIter);
404         ASSERT_EQ("40", testFileIter->second);
408 TEST(ContactLoad, GivenContactDataObjectWhenFindIsCalledOnFullNamePrefForFirstFullNameThenOnlyFirstFullNamePrefIsReturned)
411         // Check the PREF parameter for FN.
413         std::map<int,wxString>::iterator testFileIter;
414         std::map<int,int>::iterator testFileIntIter;
415         ContactDataObject testFile;
417         // Given
419         ContactLoadStatus testFileLoadStatus = testFile.LoadFile("LoadCheck-Load4.vcf");
420         ASSERT_EQ(CONTACTLOAD_OK, testFileLoadStatus);
421         
422         // When
424         testFileIntIter = testFile.FullNamesListPref.find(0);
425         
426         // Then
428         ASSERT_NE(testFile.FullNamesListPref.end(), testFileIntIter);
429         ASSERT_EQ(45, testFileIntIter->second);
433 TEST(ContactLoad, GivenContactDataObjectWhenFindIsCalledOnFullNameExtraTokensForFirstFullNameThenOnlyFirstFullNameExtraTokensIsReturned)
436         // Check for the extra tokens parameter for FN.
438         std::map<int,wxString>::iterator testFileIter;
439         std::map<int,int>::iterator testFileIntIter;
440         ContactDataObject testFile;
442         // Given
444         ContactLoadStatus testFileLoadStatus = testFile.LoadFile("LoadCheck-Load4.vcf");
445         ASSERT_EQ(CONTACTLOAD_OK, testFileLoadStatus);
446         
447         // When
448         
449         testFileIter = testFile.FullNamesListTokens.find(0);
450         
451         // Then
452         
453         ASSERT_NE(testFile.FullNamesListTokens.end(), testFileIter);
454         ASSERT_EQ("EXAMPLE=Baaa", testFileIter->second);
455         
458 TEST(ContactLoad, GivenContactDataObjectWhenNameValuesAreRetrievedThenValuesForNameIsReturned)
461         // Check that the name has been read for N.
463         std::map<int,wxString>::iterator testFileIter;
464         std::map<int,int>::iterator testFileIntIter;
465         ContactDataObject testFile;
467         // Given
469         ContactLoadStatus testFileLoadStatus = testFile.LoadFile("LoadCheck-Load4.vcf");
470         ASSERT_EQ(CONTACTLOAD_OK, testFileLoadStatus);
471         
472         // When
473         
474         wxString nameSurname = testFile.NameSurname;
475         wxString nameForename = testFile.NameForename;
476         wxString nameOtherNames = testFile.NameOtherNames;
477         wxString nameTitle = testFile.NameTitle; 
478         wxString nameSuffix = testFile.NameSuffix;
479         
480         // Then
481         
482         ASSERT_EQ("Contact", nameSurname);
483         ASSERT_EQ("Test", nameForename);
484         ASSERT_EQ("Example", nameOtherNames);
485         ASSERT_EQ("Robot", nameTitle);
486         ASSERT_EQ("LOONY", nameSuffix);
490 TEST(ContactLoad, GivenContactDataObjectWhenNameAltIDIsRetrievedThenValueforNameAltIDIsReturned)
493         // Check the ALTID parameter for N.
495         std::map<int,wxString>::iterator testFileIter;
496         std::map<int,int>::iterator testFileIntIter;
497         ContactDataObject testFile;
499         // Given
501         ContactLoadStatus testFileLoadStatus = testFile.LoadFile("LoadCheck-Load4.vcf");
502         ASSERT_EQ(CONTACTLOAD_OK, testFileLoadStatus);
503         
504         // When
506         wxString nameAltID = testFile.NameAltID;
507         
508         // Then
509         
510         ASSERT_EQ("3", nameAltID);
514 TEST(ContactLoad, GivenContactDataObjectWhenNameLanguageIsRetrievedThenValueforNameLanguageIsReturned)
517         // Check the LANGUAGE parameter for N.
519         std::map<int,wxString>::iterator testFileIter;
520         std::map<int,int>::iterator testFileIntIter;
521         ContactDataObject testFile;
523         // Given
525         ContactLoadStatus testFileLoadStatus = testFile.LoadFile("LoadCheck-Load4.vcf");
526         ASSERT_EQ(CONTACTLOAD_OK, testFileLoadStatus);
527         
528         // When
529         
530         wxString nameLanguage = testFile.NameLanguage;
531         
532         // Then
533         
534         ASSERT_EQ("kw", nameLanguage);
538 TEST(ContactLoad, GivenContactDataObjectWhenNameDisplayAsIsRetrievedThenValueforNameDisplayAsIsReturned)
541         // Check the SORT-AS parameter for N.
543         std::map<int,wxString>::iterator testFileIter;
544         std::map<int,int>::iterator testFileIntIter;
545         ContactDataObject testFile;
547         // Given
549         ContactLoadStatus testFileLoadStatus = testFile.LoadFile("LoadCheck-Load4.vcf");
550         ASSERT_EQ(CONTACTLOAD_OK, testFileLoadStatus);
551         
552         // When
553         
554         wxString nameDisplayAs = testFile.NameDisplayAs;
555         
556         // Then 
557          
558         ASSERT_EQ("Contact,Test", nameDisplayAs);
562 TEST(ContactLoad, GivenContactDataObjectWhenNameExtraTokensIsRetrievedThenValueforNameExtraTokensIsReturned)
565         // Check the extra tokens parameter for N.
567         std::map<int,wxString>::iterator testFileIter;
568         std::map<int,int>::iterator testFileIntIter;
569         ContactDataObject testFile;
571         // Given
573         ContactLoadStatus testFileLoadStatus = testFile.LoadFile("LoadCheck-Load4.vcf");
574         ASSERT_EQ(CONTACTLOAD_OK, testFileLoadStatus);
575         
576         // When
577         
578         wxString nameTokens = testFile.NameTokens;
579         
580         // Then 
582         ASSERT_EQ("TEST=Yes", nameTokens);
586 /* TEMPLATE: PLEASE COPY BEFORE USING IT. */
588 TEST(ContactLoad, GivenWhenThen)
591         std::map<int,wxString>::iterator testFileIter;
592         std::map<int,int>::iterator testFileIntIter;
593         ContactDataObject testFile;
595         // Given
597         ContactLoadStatus testFileLoadStatus = testFile.LoadFile("LoadCheck-Load4.vcf");
598         ASSERT_EQ(CONTACTLOAD_OK, testFileLoadStatus);
599         
600         // When
601         
602         // Then 
606 /* END OF TEMPLATE: LOOK UP */
608 TEST(ContactLoad, UIDTest){
610         ContactDataObject TestFile;
612         // Check that the vCard 4.0 file loads OK.
614         ASSERT_EQ(CONTACTLOAD_OK, TestFile.LoadFile("LoadCheck-Load4.vcf"));
615         
616         ASSERT_EQ("903588-9082374-989120310-AAFECDBCDF", TestFile.UIDToken);
620 TEST(ContactLoad, ClientPIDMapTests){
622         ContactDataObject TestFile;
624         ASSERT_EQ(CONTACTLOAD_OK, TestFile.LoadFile("LoadCheck-Load4.vcf"));
626         std::map<int,wxString>::iterator TestFileIter;
628         // Test the first Client PID Map.
630         TestFileIter = TestFile.ClientPIDList.find(0);
631         ASSERT_NE(TestFile.ClientPIDList.end(), TestFileIter);
632         ASSERT_EQ("1;urn;uuid:aaaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa", TestFileIter->second);    
634         TestFileIter = TestFile.ClientPIDListTokens.find(0);
635         ASSERT_EQ(TestFile.ClientPIDListTokens.end(), TestFileIter);
637         // Test the second Client PID Map.
639         TestFileIter = TestFile.ClientPIDList.find(1);
640         ASSERT_NE(TestFile.ClientPIDList.end(), TestFileIter);
641         ASSERT_EQ("2;urn;uuid:ccccccccc-cccc-cccc-cccc-cccccccccccc", TestFileIter->second);
643         TestFileIter = TestFile.ClientPIDListTokens.find(1);
644         ASSERT_EQ(TestFile.ClientPIDListTokens.end(), TestFileIter);
645         
646         // Test the third Client PID Map.
647         
648         TestFileIter = TestFile.ClientPIDListTokens.find(2);
649         ASSERT_NE(TestFile.ClientPIDListTokens.end(), TestFileIter);
650         ASSERT_EQ("MEEP=MOO;WOOP=WOO", TestFileIter->second);
652         TestFileIter = TestFile.ClientPIDList.find(2);
653         ASSERT_NE(TestFile.ClientPIDList.end(), TestFileIter);
654         ASSERT_EQ("3;urn;uuid:bbbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb", TestFileIter->second);
658 TEST(ContactLoad, RevisionTests){
660         ContactDataObject TestFile;
662         ASSERT_EQ(CONTACTLOAD_OK, TestFile.LoadFile("LoadCheck-Load4.vcf"));
663         
664         ASSERT_EQ("20151227T033000Z", TestFile.Revision);
665         ASSERT_EQ("TEST=YES;DATA=NO;MORE=MAYBE", TestFile.RevisionTokens);
669 TEST(ContactLoad, SourceTests){
671         ContactDataObject TestFile;
673         // Check that the vCard 4.0 file loads OK.
675         ASSERT_EQ(CONTACTLOAD_OK, TestFile.LoadFile("LoadCheck-Load4.vcf"));
677         std::map<int,wxString>::iterator TestFileIter;
678         std::map<int,int>::iterator TestFileIntIter;
679         
680         // Start with a general source address.
681         
682         TestFileIter = TestFile.SourceList.find(0);
683         ASSERT_NE(TestFile.SourceList.end(), TestFileIter);
684         ASSERT_EQ("http://example.com/source/sourcea.vcf", TestFileIter->second);
685         
686         // Check the TYPE section.
687         
688         TestFileIter = TestFile.SourceListType.find(0);
689         ASSERT_EQ(TestFile.SourceListType.end(), TestFileIter);
690         
691         // Check the ALTID section.
692         
693         TestFileIter = TestFile.SourceListAltID.find(0);
694         ASSERT_NE(TestFile.SourceListAltID.end(), TestFileIter);
695         ASSERT_EQ("74", TestFileIter->second);
696         
697         // Check the PID section.
698         
699         TestFileIter = TestFile.SourceListPID.find(0);
700         ASSERT_NE(TestFile.SourceListPID.end(), TestFileIter);
701         ASSERT_EQ("71", TestFileIter->second);
702         
703         // Check the MEDIATYPE section.
704         
705         TestFileIter = TestFile.SourceListMediatype.find(0);
706         ASSERT_NE(TestFile.SourceListMediatype.end(), TestFileIter);
707         ASSERT_EQ("text/plain", TestFileIter->second);
708         
709         // Check the PREF section.
710         
711         TestFileIntIter = TestFile.SourceListPref.find(0);
712         ASSERT_NE(TestFile.SourceListPref.end(), TestFileIntIter);
713         ASSERT_EQ(72, TestFileIntIter->second);
714         
715         // Check the extra tokens.
716         
717         TestFileIter = TestFile.SourceListTokens.find(0);
718         ASSERT_NE(TestFile.SourceListTokens.end(), TestFileIter);
719         ASSERT_EQ("STATUS=FEED", TestFileIter->second);
720         
721         // Start with the home source address.
723         TestFileIter = TestFile.SourceList.find(1);
724         ASSERT_NE(TestFile.SourceList.end(), TestFileIter);
725         ASSERT_EQ("http://example.com/source/sourceb.vcf", TestFileIter->second);
726         
727         // Check the TYPE section.
728         
729         TestFileIter = TestFile.SourceListType.find(1);
730         ASSERT_NE(TestFile.SourceListType.end(), TestFileIter);
731         ASSERT_EQ("home", TestFileIter->second);
732         
733         // Check the ALTID section.
734         
735         TestFileIter = TestFile.SourceListAltID.find(1);
736         ASSERT_NE(TestFile.SourceListAltID.end(), TestFileIter);
737         ASSERT_EQ("84", TestFileIter->second);
738         
739         // Check the PID section.
740         
741         TestFileIter = TestFile.SourceListPID.find(1);
742         ASSERT_NE(TestFile.SourceListPID.end(), TestFileIter);
743         ASSERT_EQ("81", TestFileIter->second);
744         
745         // Check the MEDIATYPE section.
746         
747         TestFileIter = TestFile.SourceListMediatype.find(1);
748         ASSERT_NE(TestFile.SourceListMediatype.end(), TestFileIter);
749         ASSERT_EQ("text/plainpaper", TestFileIter->second);
750         
751         // Check the PREF section.
752         
753         TestFileIntIter = TestFile.SourceListPref.find(1);
754         ASSERT_NE(TestFile.SourceListPref.end(), TestFileIntIter);
755         ASSERT_EQ(82, TestFileIntIter->second);
757         // Check the extra tokens.
758         
759         TestFileIter = TestFile.SourceListTokens.find(1);
760         ASSERT_NE(TestFile.SourceListTokens.end(), TestFileIter);
761         ASSERT_EQ("STATUS=ONLINE", TestFileIter->second);
763         // Start with the home source address.
765         TestFileIter = TestFile.SourceList.find(2);
766         ASSERT_NE(TestFile.SourceList.end(), TestFileIter);
767         ASSERT_EQ("http://example.com/source/sourcec.vcf", TestFileIter->second);
768         
769         // Check the TYPE section.
770         
771         TestFileIter = TestFile.SourceListType.find(2);
772         ASSERT_NE(TestFile.SourceListType.end(), TestFileIter);
773         ASSERT_EQ("work", TestFileIter->second);
774         
775         // Check the ALTID section.
776         
777         TestFileIter = TestFile.SourceListAltID.find(2);
778         ASSERT_NE(TestFile.SourceListAltID.end(), TestFileIter);
779         ASSERT_EQ("94", TestFileIter->second);
780         
781         // Check the PID section.
782         
783         TestFileIter = TestFile.SourceListPID.find(2);
784         ASSERT_NE(TestFile.SourceListPID.end(), TestFileIter);
785         ASSERT_EQ("91", TestFileIter->second);
786         
787         // Check the MEDIATYPE section.
788         
789         TestFileIter = TestFile.SourceListMediatype.find(2);
790         ASSERT_NE(TestFile.SourceListMediatype.end(), TestFileIter);
791         ASSERT_EQ("text/sandpaper", TestFileIter->second);
792         
793         // Check the PREF section.
794         
795         TestFileIntIter = TestFile.SourceListPref.find(2);
796         ASSERT_NE(TestFile.SourceListPref.end(), TestFileIntIter);
797         ASSERT_EQ(92, TestFileIntIter->second);
799         // Check the extra tokens.
800         
801         TestFileIter = TestFile.SourceListTokens.find(2);
802         ASSERT_NE(TestFile.SourceListTokens.end(), TestFileIter);
803         ASSERT_EQ("STATUS=OFFLINE", TestFileIter->second);
807 TEST(ContactLoad, XMLTest){
809         ContactDataObject TestFile;
811         // Check that the vCard 4.0 file loads OK.
813         ASSERT_EQ(CONTACTLOAD_OK, TestFile.LoadFile("LoadCheck-Load4.vcf"));
815         std::map<int,wxString>::iterator TestFileIter;
816         std::map<int,int>::iterator TestFileIntIter;
817         
818         // Start with the first XML property.
819         
820         // Start with a general source address.
821         
822         TestFileIter = TestFile.XMLList.find(0);
823         ASSERT_NE(TestFile.XMLList.end(), TestFileIter);
824         ASSERT_EQ("<a xmlns=\"http://www.w3.org/1999/xhtml\"\\n"
825     "   href=\"http://example.com/\">Example Page 1</a>", TestFileIter->second);
827         TestFileIter = TestFile.XMLList.find(1);
828         ASSERT_NE(TestFile.XMLList.end(), TestFileIter);
829         ASSERT_EQ("<a xmlns=\"http://www.w3.org/1999/xhtml\"\\n"
830     "   href=\"http://example.com/page2.html\">Example Page 2</a>", TestFileIter->second);
832         TestFileIter = TestFile.XMLList.find(2);
833         ASSERT_NE(TestFile.XMLList.end(), TestFileIter);
834         ASSERT_EQ("<a xmlns=\"http://www.w3.org/1999/xhtml\"\\n"
835     "   href=\"http://example.com/page3.html\">Example Page 3</a>", TestFileIter->second);
839 TEST(ContactLoad, NicknameTests){
841         ContactDataObject TestFile;
843         // Check that the vCard 4.0 file loads OK.
845         ASSERT_EQ(CONTACTLOAD_OK, TestFile.LoadFile("LoadCheck-Load4.vcf"));
847         std::map<int,wxString>::iterator TestFileIter;
848         std::map<int,int>::iterator TestFileIntIter;
850         // Check that the nickname has been read (NICKNAME). General.
851         
852         TestFileIter = TestFile.GeneralNicknamesList.find(0);
853         ASSERT_NE(TestFile.GeneralNicknamesList.end(), TestFileIter);   
854         ASSERT_EQ("Tester", TestFileIter->second);
855         
856         // Check the ALTID parameter.
857         
858         TestFileIter = TestFile.GeneralNicknamesListAltID.find(0);
859         ASSERT_NE(TestFile.GeneralNicknamesListAltID.end(), TestFileIter);
860         ASSERT_EQ("35", TestFileIter->second);
861         
862         // Check the PID parameter.
863         
864         TestFileIter = TestFile.GeneralNicknamesListPID.find(0);
865         ASSERT_NE(TestFile.GeneralNicknamesListPID.end(), TestFileIter);
866         ASSERT_EQ("50", TestFileIter->second);
867         
868         // Check the PREF parameter.
870         TestFileIntIter = TestFile.GeneralNicknamesListPref.find(0);
871         ASSERT_NE(TestFile.GeneralNicknamesListPref.end(), TestFileIntIter);
872         ASSERT_EQ(40, TestFileIntIter->second);
874         // Check the LANGUAGE parameter.
876         TestFileIter = TestFile.GeneralNicknamesListLanguage.find(0);
877         ASSERT_NE(TestFile.GeneralNicknamesListLanguage.end(), TestFileIter);
878         ASSERT_EQ("kw", TestFileIter->second);
879         
880         // Check the extra tokens parameter.
881         
882         TestFileIter = TestFile.GeneralNicknamesListTokens.find(0);
883         ASSERT_NE(TestFile.GeneralNicknamesListTokens.end(), TestFileIter);
884         ASSERT_EQ("YAY=Nope;Beep=Boop", TestFileIter->second);
885         
886         // Repeat for the home type.
887         
888         TestFileIter = TestFile.HomeNicknamesList.find(1);
889         ASSERT_NE(TestFile.HomeNicknamesList.end(), TestFileIter);      
890         ASSERT_EQ("Testy", TestFileIter->second);
891         
892         // Check the ALTID parameter.
893         
894         TestFileIter = TestFile.HomeNicknamesListAltID.find(1);
895         ASSERT_NE(TestFile.HomeNicknamesListAltID.end(), TestFileIter);
896         ASSERT_EQ("17", TestFileIter->second);
897         
898         // Check the PID parameter.
899         
900         TestFileIter = TestFile.HomeNicknamesListPID.find(1);
901         ASSERT_NE(TestFile.HomeNicknamesListPID.end(), TestFileIter);
902         ASSERT_EQ("39", TestFileIter->second);
903         
904         // Check the PREF parameter.
906         TestFileIntIter = TestFile.HomeNicknamesListPref.find(1);
907         ASSERT_NE(TestFile.HomeNicknamesListPref.end(), TestFileIntIter);
908         ASSERT_EQ(78, TestFileIntIter->second);
910         // Check the LANGUAGE parameter.
912         TestFileIter = TestFile.HomeNicknamesListLanguage.find(1);
913         ASSERT_NE(TestFile.HomeNicknamesListLanguage.end(), TestFileIter);
914         ASSERT_EQ("en", TestFileIter->second);
915         
916         // Check the extra tokens parameter.
917         
918         TestFileIter = TestFile.HomeNicknamesListTokens.find(1);
919         ASSERT_NE(TestFile.HomeNicknamesListTokens.end(), TestFileIter);
920         ASSERT_EQ("YAY=Yep;Beep=Boop", TestFileIter->second);
921         
922         // Repeat for the work type.
923         
924         TestFileIter = TestFile.BusinessNicknamesList.find(2);
925         ASSERT_NE(TestFile.BusinessNicknamesList.end(), TestFileIter);  
926         ASSERT_EQ("The Testing One", TestFileIter->second);
927         
928         // Check the ALTID parameter.
929         
930         TestFileIter = TestFile.BusinessNicknamesListAltID.find(2);
931         ASSERT_NE(TestFile.BusinessNicknamesListAltID.end(), TestFileIter);
932         ASSERT_EQ("99", TestFileIter->second);
933         
934         // Check the PID parameter.
935         
936         TestFileIter = TestFile.BusinessNicknamesListPID.find(2);
937         ASSERT_NE(TestFile.BusinessNicknamesListPID.end(), TestFileIter);
938         ASSERT_EQ("10", TestFileIter->second);
939         
940         // Check the PREF parameter.
942         TestFileIntIter = TestFile.BusinessNicknamesListPref.find(2);
943         ASSERT_NE(TestFile.BusinessNicknamesListPref.end(), TestFileIntIter);
944         ASSERT_EQ(1, TestFileIntIter->second);
946         // Check the LANGUAGE parameter.
948         TestFileIter = TestFile.BusinessNicknamesListLanguage.find(2);
949         ASSERT_NE(TestFile.BusinessNicknamesListLanguage.end(), TestFileIter);
950         ASSERT_EQ("en-GB", TestFileIter->second);
951         
952         // Check the extra tokens parameter.
953         
954         TestFileIter = TestFile.BusinessNicknamesListTokens.find(2);
955         ASSERT_NE(TestFile.BusinessNicknamesListTokens.end(), TestFileIter);
956         ASSERT_EQ("YAY=Maybe;Boop=Boing", TestFileIter->second);
960 TEST(ContactLoad, GenderTests){
962         // Check that the gender has been read.
964         ContactDataObject TestFile;
966         // Check that the vCard 4.0 file loads OK.
968         ASSERT_EQ(CONTACTLOAD_OK, TestFile.LoadFile("LoadCheck-Load4.vcf"));
970         std::map<int,wxString>::iterator TestFileIter;
971         std::map<int,int>::iterator TestFileIntIter;
972         
973         ASSERT_NE("", TestFile.Gender);
974         ASSERT_EQ("F", TestFile.Gender);
975         ASSERT_EQ("Example Text", TestFile.GenderDetails);
976         ASSERT_EQ("BEEP=Boop", TestFile.GenderTokens);
980 TEST(ContactLoad, BirthdayTests){
982         // Check that the birthday has been read.
984         ContactDataObject TestFile;
986         // Check that the vCard 4.0 file loads OK.
988         ASSERT_EQ(CONTACTLOAD_OK, TestFile.LoadFile("LoadCheck-Load4.vcf"));
990         std::map<int,wxString>::iterator TestFileIter;
991         std::map<int,int>::iterator TestFileIntIter;
992         
993         ASSERT_NE("", TestFile.Birthday);
994         ASSERT_EQ("20040101", TestFile.Birthday);
995         
996         // Check the ALTID parameter.
997         
998         ASSERT_EQ("35", TestFile.BirthdayAltID);
999         
1000         // Check the CALSCALE parameter.
1001         
1002         ASSERT_EQ("georgian", TestFile.BirthdayCalScale);
1003         
1004         // Check the extra tokens parameter.
1006         ASSERT_EQ("HAPPY=Days", TestFile.BirthdayTokens);
1007         
1008         // Check the VALUE parameter. (Note have to use a different file
1009         // due to the *1 rule in RFC6350.
1010         
1011         ContactDataObject TestFileValue;
1012         ASSERT_EQ(CONTACTLOAD_OK, TestFile.LoadFile("LoadCheck-Load4-BDayValue.vcf"));
1013         
1014         ASSERT_EQ("Circa 2000s", TestFile.Birthday);
1015         
1018 TEST(ContactLoad, AnniversaryTests){
1020         // Check that the anniversary has been read.
1022         ContactDataObject TestFile;
1024         // Check that the vCard 4.0 file loads OK.
1026         ASSERT_EQ(CONTACTLOAD_OK, TestFile.LoadFile("LoadCheck-Load4.vcf"));
1028         std::map<int,wxString>::iterator TestFileIter;
1029         std::map<int,int>::iterator TestFileIntIter;
1030         
1031         ASSERT_NE("", TestFile.Anniversary);
1032         ASSERT_EQ("20200516", TestFile.Anniversary);
1033         
1034         // Check the ALTID parameter.
1035         
1036         ASSERT_EQ("70", TestFile.AnniversaryAltID);
1037         
1038         // Check the CALSCALE parameter.
1039         
1040         ASSERT_EQ("georgian", TestFile.AnniversaryCalScale);
1041         
1042         // Check the extra tokens parameter.
1044         ASSERT_EQ("WONDERFUL=Day", TestFile.AnniversaryTokens);
1045         
1046         // Check the VALUE parameter. (Note have to use a different file
1047         // due to the *1 rule in RFC6350.
1048         
1049         ContactDataObject TestFileValue;
1050         ASSERT_EQ(CONTACTLOAD_OK, TestFile.LoadFile("LoadCheck-Load4-BDayValue.vcf"));
1051         
1052         ASSERT_EQ("Circa 2020s", TestFile.Anniversary); 
1056 TEST(ContactLoad, TimeZoneTests){
1058         ContactDataObject TestFile;
1060         // Check that the vCard 4.0 file loads OK.
1062         ASSERT_EQ(CONTACTLOAD_OK, TestFile.LoadFile("LoadCheck-Load4.vcf"));
1064         std::map<int,wxString>::iterator TestFileIter;
1065         std::map<int,int>::iterator TestFileIntIter;
1067         // Check that the timezone has been read (TZ). General.
1068         
1069         TestFileIter = TestFile.GeneralTZList.find(0);
1070         ASSERT_NE(TestFile.GeneralTZList.end(), TestFileIter);  
1071         ASSERT_EQ("Europe/Truro", TestFileIter->second);
1073         // Check the ALTID parameter.
1074         
1075         TestFileIter = TestFile.GeneralTZListAltID.find(0);
1076         ASSERT_NE(TestFile.GeneralTZListAltID.end(), TestFileIter);
1077         ASSERT_EQ("35", TestFileIter->second);
1078         
1079         // Check the PID parameter.
1080         
1081         TestFileIter = TestFile.GeneralTZListPID.find(0);
1082         ASSERT_NE(TestFile.GeneralTZListPID.end(), TestFileIter);
1083         ASSERT_EQ("60", TestFileIter->second);
1084         
1085         // Check the PREF parameter.
1087         TestFileIntIter = TestFile.GeneralTZListPref.find(0);
1088         ASSERT_NE(TestFile.GeneralTZListPref.end(), TestFileIntIter);
1089         ASSERT_EQ(20, TestFileIntIter->second);
1091         // Check the LANGUAGE parameter.
1093         TestFileIter = TestFile.GeneralTZListMediatype.find(0);
1094         ASSERT_NE(TestFile.GeneralTZListMediatype.end(), TestFileIter);
1095         ASSERT_EQ("text/plain", TestFileIter->second);
1096         
1097         // Check the extra tokens parameter.
1098         
1099         TestFileIter = TestFile.GeneralTZListTokens.find(0);
1100         ASSERT_NE(TestFile.GeneralTZListTokens.end(), TestFileIter);
1101         ASSERT_EQ("WHATS=This;A=Potato", TestFileIter->second);
1102         
1103         // Check that the timezone has been read (TZ). Home.
1104         
1105         TestFileIter = TestFile.HomeTZList.find(1);
1106         ASSERT_NE(TestFile.HomeTZList.end(), TestFileIter);     
1107         ASSERT_EQ("Europe/Penzance", TestFileIter->second);
1109         // Check the ALTID parameter.
1110         
1111         TestFileIter = TestFile.HomeTZListAltID.find(1);
1112         ASSERT_NE(TestFile.HomeTZListAltID.end(), TestFileIter);
1113         ASSERT_EQ("15", TestFileIter->second);
1114         
1115         // Check the PID parameter.
1116         
1117         TestFileIter = TestFile.HomeTZListPID.find(1);
1118         ASSERT_NE(TestFile.HomeTZListPID.end(), TestFileIter);
1119         ASSERT_EQ("20", TestFileIter->second);
1120         
1121         // Check the PREF parameter.
1123         TestFileIntIter = TestFile.HomeTZListPref.find(1);
1124         ASSERT_NE(TestFile.HomeTZListPref.end(), TestFileIntIter);
1125         ASSERT_EQ(40, TestFileIntIter->second);
1127         // Check the LANGUAGE parameter.
1129         TestFileIter = TestFile.HomeTZListMediatype.find(1);
1130         ASSERT_NE(TestFile.HomeTZListMediatype.end(), TestFileIter);
1131         ASSERT_EQ("text/plain", TestFileIter->second);
1132         
1133         // Check the extra tokens parameter.
1134         
1135         TestFileIter = TestFile.HomeTZListTokens.find(1);
1136         ASSERT_NE(TestFile.HomeTZListTokens.end(), TestFileIter);
1137         ASSERT_EQ("MAYBE=not", TestFileIter->second);
1138         
1139         // Check that the timezone has been read (TZ). Business.
1140         
1141         TestFileIter = TestFile.BusinessTZList.find(2);
1142         ASSERT_NE(TestFile.BusinessTZList.end(), TestFileIter);
1143         ASSERT_EQ("Europe/St Austell", TestFileIter->second);
1145         // Check the ALTID parameter.
1146         
1147         TestFileIter = TestFile.BusinessTZListAltID.find(2);
1148         ASSERT_NE(TestFile.BusinessTZListAltID.end(), TestFileIter);
1149         ASSERT_EQ("45", TestFileIter->second);
1150         
1151         // Check the PID parameter.
1152         
1153         TestFileIter = TestFile.BusinessTZListPID.find(2);
1154         ASSERT_NE(TestFile.BusinessTZListPID.end(), TestFileIter);
1155         ASSERT_EQ("70", TestFileIter->second);
1156         
1157         // Check the PREF parameter.
1159         TestFileIntIter = TestFile.BusinessTZListPref.find(2);
1160         ASSERT_NE(TestFile.BusinessTZListPref.end(), TestFileIntIter);
1161         ASSERT_EQ(80, TestFileIntIter->second);
1163         // Check the LANGUAGE parameter.
1165         TestFileIter = TestFile.BusinessTZListMediatype.find(2);
1166         ASSERT_NE(TestFile.BusinessTZListMediatype.end(), TestFileIter);
1167         ASSERT_EQ("text/plain", TestFileIter->second);
1168         
1169         // Check the extra tokens parameter.
1170         
1171         TestFileIter = TestFile.BusinessTZListTokens.find(2);
1172         ASSERT_NE(TestFile.BusinessTZListTokens.end(), TestFileIter);
1173         ASSERT_EQ("MAYBE=yes", TestFileIter->second);
1174         
1177 TEST(ContactLoad, AddressTests){
1179         ContactDataObject TestFile;
1181         // Check that the vCard 4.0 file loads OK.
1183         ASSERT_EQ(CONTACTLOAD_OK, TestFile.LoadFile("LoadCheck-Load4.vcf"));
1185         std::map<int,wxString>::iterator TestFileIter;
1186         std::map<int,int>::iterator TestFileIntIter;
1188         // Start with the general address.
1190         // Check the address street section.
1192         TestFileIter = TestFile.GeneralAddressList.find(0);
1193         ASSERT_NE(TestFile.GeneralAddressList.end(), TestFileIter);
1194         ASSERT_EQ("1 Lovely Lane", TestFileIter->second);
1196         // Check the address town section.
1198         TestFileIter = TestFile.GeneralAddressListTown.find(0);
1199         ASSERT_NE(TestFile.GeneralAddressListTown.end(), TestFileIter);
1200         ASSERT_EQ("Rodney", TestFileIter->second);
1201         
1202         // Check the address county section.
1204         TestFileIter = TestFile.GeneralAddressListCounty.find(0);
1205         ASSERT_NE(TestFile.GeneralAddressListCounty.end(), TestFileIter);
1206         ASSERT_EQ("Cornwall", TestFileIter->second);
1208         // Check the address post code section.
1210         TestFileIter = TestFile.GeneralAddressListPostCode.find(0);
1211         ASSERT_NE(TestFile.GeneralAddressListPostCode.end(), TestFileIter);
1212         ASSERT_EQ("PL99 1AA", TestFileIter->second);
1214         // Check the address country section.
1216         TestFileIter = TestFile.GeneralAddressListCountry.find(0);
1217         ASSERT_NE(TestFile.GeneralAddressListCountry.end(), TestFileIter);
1218         ASSERT_EQ("United Kingdom", TestFileIter->second);
1219         
1220         // Check the LABEL section.
1222         TestFileIter = TestFile.GeneralAddressListLabel.find(0);
1223         ASSERT_NE(TestFile.GeneralAddressListLabel.end(), TestFileIter);
1224         ASSERT_EQ("\"1 Lovely Lane\nRodney\nCornwall\nPL99 1AA\nCornwall\nUnited Kingdom\"", TestFileIter->second);
1226         // Check the LANGUAGE section.
1227         
1228         TestFileIter = TestFile.GeneralAddressListLang.find(0);
1229         ASSERT_NE(TestFile.GeneralAddressListLang.end(), TestFileIter);
1230         ASSERT_EQ("kw", TestFileIter->second);
1231         
1232         // Check the ALTID section.
1233         
1234         TestFileIter = TestFile.GeneralAddressListAltID.find(0);
1235         ASSERT_NE(TestFile.GeneralAddressListAltID.end(), TestFileIter);
1236         ASSERT_EQ("15", TestFileIter->second);
1237         
1238         // Check the PID section.
1239         
1240         TestFileIter = TestFile.GeneralAddressListPID.find(0);
1241         ASSERT_NE(TestFile.GeneralAddressListPID.end(), TestFileIter);
1242         ASSERT_EQ("81", TestFileIter->second);
1243         
1244         // Check the GEO section.
1245         
1246         TestFileIter = TestFile.GeneralAddressListGeo.find(0);
1247         ASSERT_NE(TestFile.GeneralAddressListGeo.end(), TestFileIter);
1248         ASSERT_EQ("geo:1.0, 1.0", TestFileIter->second);
1250         // Check the TZ section.
1251         
1252         TestFileIter = TestFile.GeneralAddressListTimezone.find(0);
1253         ASSERT_NE(TestFile.GeneralAddressListTimezone.end(), TestFileIter);
1254         ASSERT_EQ("Europe/Truro", TestFileIter->second);
1255         
1256         // Check the MEDIATYPE section.
1257         
1258         TestFileIter = TestFile.GeneralAddressListMediatype.find(0);
1259         ASSERT_NE(TestFile.GeneralAddressListMediatype.end(), TestFileIter);
1260         ASSERT_EQ("text/plain", TestFileIter->second);
1261         
1262         // Check the PREF section.
1263         
1264         TestFileIntIter = TestFile.GeneralAddressListPref.find(0);
1265         ASSERT_NE(TestFile.GeneralAddressListPref.end(), TestFileIntIter);
1266         ASSERT_EQ(98, TestFileIntIter->second);
1267         
1268         // Check the extra tokens.
1269         
1270         TestFileIter = TestFile.GeneralAddressListTokens.find(0);
1271         ASSERT_NE(TestFile.GeneralAddressListTokens.end(), TestFileIter);
1272         ASSERT_EQ("MAKES=Moo;ANIMAL=Cow", TestFileIter->second);
1273         
1274         // Process the home address
1275         
1276         // Check the address street section.
1278         TestFileIter = TestFile.HomeAddressList.find(1);
1279         ASSERT_NE(TestFile.HomeAddressList.end(), TestFileIter);
1280         ASSERT_EQ("3 Working Plaice", TestFileIter->second);
1282         // Check the address town section.
1284         TestFileIter = TestFile.HomeAddressListTown.find(1);
1285         ASSERT_NE(TestFile.HomeAddressListTown.end(), TestFileIter);
1286         ASSERT_EQ("Roger", TestFileIter->second);
1287         
1288         // Check the address county section.
1290         TestFileIter = TestFile.HomeAddressListCounty.find(1);
1291         ASSERT_NE(TestFile.HomeAddressListCounty.end(), TestFileIter);
1292         ASSERT_EQ("Cornwall", TestFileIter->second);
1294         // Check the address post code section.
1296         TestFileIter = TestFile.HomeAddressListPostCode.find(1);
1297         ASSERT_NE(TestFile.HomeAddressListPostCode.end(), TestFileIter);
1298         ASSERT_EQ("PL75 4ZZ", TestFileIter->second);
1300         // Check the address country section.
1302         TestFileIter = TestFile.HomeAddressListCountry.find(1);
1303         ASSERT_NE(TestFile.HomeAddressListCountry.end(), TestFileIter);
1304         ASSERT_EQ("United Kingdom", TestFileIter->second);
1305         
1306         // Check the LABEL section.
1308         TestFileIter = TestFile.HomeAddressListLabel.find(1);
1309         ASSERT_NE(TestFile.HomeAddressListLabel.end(), TestFileIter);
1310         ASSERT_EQ("\"3 Working Plaice\nRoger\nCornwall\nPL75 4ZZ\nCornwall\nUnited Kingdom\"", TestFileIter->second);
1312         // Check the LANGUAGE section.
1313         
1314         TestFileIter = TestFile.HomeAddressListLang.find(1);
1315         ASSERT_NE(TestFile.HomeAddressListLang.end(), TestFileIter);
1316         ASSERT_EQ("en", TestFileIter->second);
1317         
1318         // Check the ALTID section.
1319         
1320         TestFileIter = TestFile.HomeAddressListAltID.find(1);
1321         ASSERT_NE(TestFile.HomeAddressListAltID.end(), TestFileIter);
1322         ASSERT_EQ("40", TestFileIter->second);
1323         
1324         // Check the PID section.
1325         
1326         TestFileIter = TestFile.HomeAddressListPID.find(1);
1327         ASSERT_NE(TestFile.HomeAddressListPID.end(), TestFileIter);
1328         ASSERT_EQ("13", TestFileIter->second);
1329         
1330         // Check the GEO section.
1331         
1332         TestFileIter = TestFile.HomeAddressListGeo.find(1);
1333         ASSERT_NE(TestFile.HomeAddressListGeo.end(), TestFileIter);
1334         ASSERT_EQ("geo:4.0, 4.0", TestFileIter->second);
1336         // Check the TZ section.
1337         
1338         TestFileIter = TestFile.HomeAddressListTimezone.find(1);
1339         ASSERT_NE(TestFile.HomeAddressListTimezone.end(), TestFileIter);
1340         ASSERT_EQ("Europe/St Ives", TestFileIter->second);
1341         
1342         // Check the MEDIATYPE section.
1343         
1344         TestFileIter = TestFile.HomeAddressListMediatype.find(1);
1345         ASSERT_NE(TestFile.HomeAddressListMediatype.end(), TestFileIter);
1346         ASSERT_EQ("text/plain", TestFileIter->second);
1347         
1348         // Check the PREF section.
1349         
1350         TestFileIntIter = TestFile.HomeAddressListPref.find(1);
1351         ASSERT_NE(TestFile.HomeAddressListPref.end(), TestFileIntIter);
1352         ASSERT_EQ(10, TestFileIntIter->second);
1353         
1354         // Check the extra tokens.
1355         
1356         TestFileIter = TestFile.HomeAddressListTokens.find(1);
1357         ASSERT_NE(TestFile.HomeAddressListTokens.end(), TestFileIter);
1358         ASSERT_EQ("TOAST=Butter", TestFileIter->second);
1360         // Process the business address.
1361         
1362         // Check the address street section.
1364         TestFileIter = TestFile.BusinessAddressList.find(2);
1365         ASSERT_NE(TestFile.BusinessAddressList.end(), TestFileIter);
1366         ASSERT_EQ("7 Flyby Drive", TestFileIter->second);
1368         // Check the address town section.
1370         TestFileIter = TestFile.BusinessAddressListTown.find(2);
1371         ASSERT_NE(TestFile.BusinessAddressListTown.end(), TestFileIter);
1372         ASSERT_EQ("Elaine", TestFileIter->second);
1374         // Check the address county section.
1376         TestFileIter = TestFile.BusinessAddressListCounty.find(2);
1377         ASSERT_NE(TestFile.BusinessAddressListCounty.end(), TestFileIter);
1378         ASSERT_EQ("Cornwall", TestFileIter->second);
1380         // Check the address post code section.
1382         TestFileIter = TestFile.BusinessAddressListPostCode.find(2);
1383         ASSERT_NE(TestFile.BusinessAddressListPostCode.end(), TestFileIter);
1384         ASSERT_EQ("PL84 9YE", TestFileIter->second);
1386         // Check the address country section.
1388         TestFileIter = TestFile.BusinessAddressListCountry.find(2);
1389         ASSERT_NE(TestFile.BusinessAddressListCountry.end(), TestFileIter);
1390         ASSERT_EQ("United Kingdom", TestFileIter->second);
1391         
1392         // Check the LABEL section.
1394         TestFileIter = TestFile.BusinessAddressListLabel.find(2);
1395         ASSERT_NE(TestFile.BusinessAddressListLabel.end(), TestFileIter);
1396         ASSERT_EQ("\"7 Flyby Drive\nElaine\nCornwall\nPL84 9YE\nCornwall\nUnited Kingdom\"", TestFileIter->second);
1398         // Check the LANGUAGE section.
1399         
1400         TestFileIter = TestFile.BusinessAddressListLang.find(2);
1401         ASSERT_NE(TestFile.BusinessAddressListLang.end(), TestFileIter);
1402         ASSERT_EQ("en-GB", TestFileIter->second);
1403         
1404         // Check the ALTID section.
1405         
1406         TestFileIter = TestFile.BusinessAddressListAltID.find(2);
1407         ASSERT_NE(TestFile.BusinessAddressListAltID.end(), TestFileIter);
1408         ASSERT_EQ("45", TestFileIter->second);
1409         
1410         // Check the PID section.
1411         
1412         TestFileIter = TestFile.BusinessAddressListPID.find(2);
1413         ASSERT_NE(TestFile.BusinessAddressListPID.end(), TestFileIter);
1414         ASSERT_EQ("28", TestFileIter->second);
1415         
1416         // Check the GEO section.
1417         
1418         TestFileIter = TestFile.BusinessAddressListGeo.find(2);
1419         ASSERT_NE(TestFile.BusinessAddressListGeo.end(), TestFileIter);
1420         ASSERT_EQ("geo:7.0, 7.0", TestFileIter->second);
1422         // Check the TZ section.
1423         
1424         TestFileIter = TestFile.BusinessAddressListTimezone.find(2);
1425         ASSERT_NE(TestFile.BusinessAddressListTimezone.end(), TestFileIter);
1426         ASSERT_EQ("Europe/Newquay", TestFileIter->second);
1427         
1428         // Check the MEDIATYPE section.
1429         
1430         TestFileIter = TestFile.BusinessAddressListMediatype.find(2);
1431         ASSERT_NE(TestFile.BusinessAddressListMediatype.end(), TestFileIter);
1432         ASSERT_EQ("text/plain", TestFileIter->second);
1433         
1434         // Check the PREF section.
1435         
1436         TestFileIntIter = TestFile.BusinessAddressListPref.find(2);
1437         ASSERT_NE(TestFile.BusinessAddressListPref.end(), TestFileIntIter);
1438         ASSERT_EQ(10, TestFileIntIter->second);
1439         
1440         // Check the extra tokens.
1441         
1442         TestFileIter = TestFile.BusinessAddressListTokens.find(2);
1443         ASSERT_NE(TestFile.BusinessAddressListTokens.end(), TestFileIter);
1444         ASSERT_EQ("JAM=Red", TestFileIter->second);
1449 TEST(ContactLoad, EmailTests){
1451         ContactDataObject TestFile;
1453         // Check that the vCard 4.0 file loads OK.
1455         ASSERT_EQ(CONTACTLOAD_OK, TestFile.LoadFile("LoadCheck-Load4.vcf"));
1457         std::map<int,wxString>::iterator TestFileIter;
1458         std::map<int,int>::iterator TestFileIntIter;
1459         
1460         // Start with the general email.
1461         
1462         TestFileIter = TestFile.GeneralEmailList.find(0);
1463         ASSERT_NE(TestFile.GeneralEmailList.end(), TestFileIter);
1464         ASSERT_EQ("moo@example.com", TestFileIter->second);
1465         
1466         // Check the ALTID section.
1467         
1468         TestFileIter = TestFile.GeneralEmailListAltID.find(0);
1469         ASSERT_NE(TestFile.GeneralEmailListAltID.end(), TestFileIter);
1470         ASSERT_EQ("10", TestFileIter->second);
1471         
1472         // Check the PID section.
1473         
1474         TestFileIter = TestFile.GeneralEmailListPID.find(0);
1475         ASSERT_NE(TestFile.GeneralEmailListPID.end(), TestFileIter);
1476         ASSERT_EQ("20", TestFileIter->second);
1477         
1478         // Check the PREF section.
1479         
1480         TestFileIntIter = TestFile.GeneralEmailListPref.find(0);
1481         ASSERT_NE(TestFile.GeneralEmailListPref.end(), TestFileIntIter);
1482         ASSERT_EQ(40, TestFileIntIter->second);
1483         
1484         // Check the extra tokens.
1485         
1486         TestFileIter = TestFile.GeneralEmailListTokens.find(0);
1487         ASSERT_NE(TestFile.GeneralEmailListTokens.end(), TestFileIter);
1488         ASSERT_EQ("WONDERFUL=Colour", TestFileIter->second);
1490         // Start with the home email.
1491         
1492         TestFileIter = TestFile.HomeEmailList.find(1);
1493         ASSERT_NE(TestFile.HomeEmailList.end(), TestFileIter);
1494         ASSERT_EQ("moo.home@example.com", TestFileIter->second);
1495         
1496         // Check the ALTID section.
1497         
1498         TestFileIter = TestFile.HomeEmailListAltID.find(1);
1499         ASSERT_NE(TestFile.HomeEmailListAltID.end(), TestFileIter);
1500         ASSERT_EQ("5", TestFileIter->second);
1501         
1502         // Check the PID section.
1503         
1504         TestFileIter = TestFile.HomeEmailListPID.find(1);
1505         ASSERT_NE(TestFile.HomeEmailListPID.end(), TestFileIter);
1506         ASSERT_EQ("10", TestFileIter->second);
1507         
1508         // Check the PREF section.
1509         
1510         TestFileIntIter = TestFile.HomeEmailListPref.find(1);
1511         ASSERT_NE(TestFile.HomeEmailListPref.end(), TestFileIntIter);
1512         ASSERT_EQ(20, TestFileIntIter->second);
1513         
1514         // Check the extra tokens.
1515         
1516         TestFileIter = TestFile.HomeEmailListTokens.find(1);
1517         ASSERT_NE(TestFile.HomeEmailListTokens.end(), TestFileIter);
1518         ASSERT_EQ("PEACE=quiet", TestFileIter->second);
1520         // Start with the business email.
1521         
1522         TestFileIter = TestFile.BusinessEmailList.find(2);
1523         ASSERT_NE(TestFile.BusinessEmailList.end(), TestFileIter);
1524         ASSERT_EQ("moo.business@example.com", TestFileIter->second);
1525         
1526         // Check the ALTID section.
1527         
1528         TestFileIter = TestFile.BusinessEmailListAltID.find(2);
1529         ASSERT_NE(TestFile.BusinessEmailListAltID.end(), TestFileIter);
1530         ASSERT_EQ("1", TestFileIter->second);
1531         
1532         // Check the PID section.
1533         
1534         TestFileIter = TestFile.BusinessEmailListPID.find(2);
1535         ASSERT_NE(TestFile.BusinessEmailListPID.end(), TestFileIter);
1536         ASSERT_EQ("2", TestFileIter->second);
1537         
1538         // Check the PREF section.
1539         
1540         TestFileIntIter = TestFile.BusinessEmailListPref.find(2);
1541         ASSERT_NE(TestFile.BusinessEmailListPref.end(), TestFileIntIter);
1542         ASSERT_EQ(3, TestFileIntIter->second);
1543         
1544         // Check the extra tokens.
1545         
1546         TestFileIter = TestFile.BusinessEmailListTokens.find(2);
1547         ASSERT_NE(TestFile.BusinessEmailListTokens.end(), TestFileIter);
1548         ASSERT_EQ("BUSINESS=Money", TestFileIter->second);
1552 TEST(ContactLoad, IMTests){
1554         ContactDataObject TestFile;
1556         // Check that the vCard 4.0 file loads OK.
1558         ASSERT_EQ(CONTACTLOAD_OK, TestFile.LoadFile("LoadCheck-Load4.vcf"));
1560         std::map<int,wxString>::iterator TestFileIter;
1561         std::map<int,int>::iterator TestFileIntIter;
1562         
1563         // Start with the general IM.
1564         
1565         TestFileIter = TestFile.GeneralIMList.find(0);
1566         ASSERT_NE(TestFile.GeneralIMList.end(), TestFileIter);
1567         ASSERT_EQ("moo@example.com", TestFileIter->second);
1568         
1569         // Check the ALTID section.
1570         
1571         TestFileIter = TestFile.GeneralIMListAltID.find(0);
1572         ASSERT_NE(TestFile.GeneralIMListAltID.end(), TestFileIter);
1573         ASSERT_EQ("10", TestFileIter->second);
1574         
1575         // Check the PID section.
1576         
1577         TestFileIter = TestFile.GeneralIMListPID.find(0);
1578         ASSERT_NE(TestFile.GeneralIMListPID.end(), TestFileIter);
1579         ASSERT_EQ("20", TestFileIter->second);
1581         // Check the MEDIATYPE section.
1582         
1583         TestFileIter = TestFile.GeneralIMListMediatype.find(0);
1584         ASSERT_NE(TestFile.GeneralIMListMediatype.end(), TestFileIter);
1585         ASSERT_EQ("text/plain", TestFileIter->second);
1586         
1587         // Check the PREF section.
1588         
1589         TestFileIntIter = TestFile.GeneralIMListPref.find(0);
1590         ASSERT_NE(TestFile.GeneralIMListPref.end(), TestFileIntIter);
1591         ASSERT_EQ(40, TestFileIntIter->second);
1592         
1593         // Check the extra tokens.
1594         
1595         TestFileIter = TestFile.GeneralIMListTokens.find(0);
1596         ASSERT_NE(TestFile.GeneralIMListTokens.end(), TestFileIter);
1597         ASSERT_EQ("WONDERFUL=Colour", TestFileIter->second);
1599         // Start with the home IM.
1600         
1601         TestFileIter = TestFile.HomeIMList.find(1);
1602         ASSERT_NE(TestFile.HomeIMList.end(), TestFileIter);
1603         ASSERT_EQ("moo.home@example.com", TestFileIter->second);
1604         
1605         // Check the ALTID section.
1606         
1607         TestFileIter = TestFile.HomeIMListAltID.find(1);
1608         ASSERT_NE(TestFile.HomeIMListAltID.end(), TestFileIter);
1609         ASSERT_EQ("20", TestFileIter->second);
1610         
1611         // Check the PID section.
1612         
1613         TestFileIter = TestFile.HomeIMListPID.find(1);
1614         ASSERT_NE(TestFile.HomeIMListPID.end(), TestFileIter);
1615         ASSERT_EQ("40", TestFileIter->second);
1616         
1617         // Check the MEDIATYPE section.
1618         
1619         TestFileIter = TestFile.HomeIMListMediatype.find(1);
1620         ASSERT_NE(TestFile.HomeIMListMediatype.end(), TestFileIter);
1621         ASSERT_EQ("text/reallyplain", TestFileIter->second);
1622         
1623         // Check the PREF section.
1624         
1625         TestFileIntIter = TestFile.HomeIMListPref.find(1);
1626         ASSERT_NE(TestFile.HomeIMListPref.end(), TestFileIntIter);
1627         ASSERT_EQ(80, TestFileIntIter->second);
1628         
1629         // Check the extra tokens.
1630         
1631         TestFileIter = TestFile.HomeIMListTokens.find(1);
1632         ASSERT_NE(TestFile.HomeIMListTokens.end(), TestFileIter);
1633         ASSERT_EQ("PEACE=quiet", TestFileIter->second);
1635         // Start with the business IM.
1636         
1637         TestFileIter = TestFile.BusinessIMList.find(2);
1638         ASSERT_NE(TestFile.BusinessIMList.end(), TestFileIter);
1639         ASSERT_EQ("moo.business@example.com", TestFileIter->second);
1640         
1641         // Check the ALTID section.
1642         
1643         TestFileIter = TestFile.BusinessIMListAltID.find(2);
1644         ASSERT_NE(TestFile.BusinessIMListAltID.end(), TestFileIter);
1645         ASSERT_EQ("98", TestFileIter->second);
1646         
1647         // Check the PID section.
1648         
1649         TestFileIter = TestFile.BusinessIMListPID.find(2);
1650         ASSERT_NE(TestFile.BusinessIMListPID.end(), TestFileIter);
1651         ASSERT_EQ("99", TestFileIter->second);
1652         
1653         // Check the MEDIATYPE section.
1654         
1655         TestFileIter = TestFile.BusinessIMListMediatype.find(2);
1656         ASSERT_NE(TestFile.BusinessIMListMediatype.end(), TestFileIter);
1657         ASSERT_EQ("text/superplain", TestFileIter->second);
1658         
1659         // Check the PREF section.
1660         
1661         TestFileIntIter = TestFile.BusinessIMListPref.find(2);
1662         ASSERT_NE(TestFile.BusinessIMListPref.end(), TestFileIntIter);
1663         ASSERT_EQ(50, TestFileIntIter->second);
1664         
1665         // Check the extra tokens.
1666         
1667         TestFileIter = TestFile.BusinessIMListTokens.find(2);
1668         ASSERT_NE(TestFile.BusinessIMListTokens.end(), TestFileIter);
1669         ASSERT_EQ("BUSINESS=Money", TestFileIter->second);
1673 TEST(ContactLoad, TelephoneTests){
1675         ContactDataObject TestFile;
1677         // Check that the vCard 4.0 file loads OK.
1679         ASSERT_EQ(CONTACTLOAD_OK, TestFile.LoadFile("LoadCheck-Load4.vcf"));
1681         std::map<int,wxString>::iterator TestFileIter;
1682         std::map<int,int>::iterator TestFileIntIter;
1683         
1684         // Start with the general Telephone.
1685         
1686         TestFileIter = TestFile.GeneralTelephoneList.find(0);
1687         ASSERT_NE(TestFile.GeneralTelephoneList.end(), TestFileIter);
1688         ASSERT_EQ("00000000", TestFileIter->second);
1689         
1690         // Check the data type section.
1692         TestFileIter = TestFile.GeneralTelephoneListDataType.find(0);
1693         ASSERT_NE(TestFile.GeneralTelephoneListDataType.end(), TestFileIter);
1694         ASSERT_EQ("tel", TestFileIter->second); 
1695         
1696         // Check the type section.
1697         
1698         TestFileIter = TestFile.GeneralTelephoneListTypeInfo.find(0);
1699         ASSERT_NE(TestFile.GeneralTelephoneListTypeInfo.end(), TestFileIter);
1700         ASSERT_EQ("fax,cell", TestFileIter->second.ToStdString());      
1701         
1702         // Check the ALTID section.
1703         
1704         TestFileIter = TestFile.GeneralTelephoneListAltID.find(0);
1705         ASSERT_NE(TestFile.GeneralTelephoneListAltID.end(), TestFileIter);
1706         ASSERT_EQ("10", TestFileIter->second);
1707         
1708         // Check the PID section.
1709         
1710         TestFileIter = TestFile.GeneralTelephoneListPID.find(0);
1711         ASSERT_NE(TestFile.GeneralTelephoneListPID.end(), TestFileIter);
1712         ASSERT_EQ("20", TestFileIter->second);
1713         
1714         // Check the PREF section.
1715         
1716         TestFileIntIter = TestFile.GeneralTelephoneListPref.find(0);
1717         ASSERT_NE(TestFile.GeneralTelephoneListPref.end(), TestFileIntIter);
1718         ASSERT_EQ(40, TestFileIntIter->second);
1719         
1720         // Check the extra tokens.
1721         
1722         TestFileIter = TestFile.GeneralTelephoneListTokens.find(0);
1723         ASSERT_NE(TestFile.GeneralTelephoneListTokens.end(), TestFileIter);
1724         ASSERT_EQ("WONDERFUL=Colour", TestFileIter->second);
1725         
1726         // Start with the home Telephone.
1727         
1728         TestFileIter = TestFile.HomeTelephoneList.find(1);
1729         ASSERT_NE(TestFile.HomeTelephoneList.end(), TestFileIter);
1730         ASSERT_EQ("00001111", TestFileIter->second);
1731         
1732         // Check the data type section.
1734         TestFileIter = TestFile.HomeTelephoneListDataType.find(1);
1735         ASSERT_NE(TestFile.HomeTelephoneListDataType.end(), TestFileIter);
1736         ASSERT_EQ("tel", TestFileIter->second); 
1737         
1738         // Check the type section.
1739         
1740         TestFileIter = TestFile.HomeTelephoneListTypeInfo.find(1);
1741         ASSERT_NE(TestFile.HomeTelephoneListTypeInfo.end(), TestFileIter);
1742         ASSERT_EQ("fax", TestFileIter->second); 
1743         
1744         // Check the ALTID section.
1745         
1746         TestFileIter = TestFile.HomeTelephoneListAltID.find(1);
1747         ASSERT_NE(TestFile.HomeTelephoneListAltID.end(), TestFileIter);
1748         ASSERT_EQ("10", TestFileIter->second);
1749         
1750         // Check the PID section.
1751         
1752         TestFileIter = TestFile.HomeTelephoneListPID.find(1);
1753         ASSERT_NE(TestFile.HomeTelephoneListPID.end(), TestFileIter);
1754         ASSERT_EQ("20", TestFileIter->second);
1755         
1756         // Check the PREF section.
1757         
1758         TestFileIntIter = TestFile.HomeTelephoneListPref.find(1);
1759         ASSERT_NE(TestFile.HomeTelephoneListPref.end(), TestFileIntIter);
1760         ASSERT_EQ(40, TestFileIntIter->second);
1761         
1762         // Check the extra tokens.
1763         
1764         TestFileIter = TestFile.HomeTelephoneListTokens.find(1);
1765         ASSERT_NE(TestFile.HomeTelephoneListTokens.end(), TestFileIter);
1766         ASSERT_EQ("BUSINESS=Money", TestFileIter->second);
1768         // Start with the business Telephone.
1769         
1770         TestFileIter = TestFile.BusinessTelephoneList.find(2);
1771         ASSERT_NE(TestFile.BusinessTelephoneList.end(), TestFileIter);
1772         ASSERT_EQ("22221111", TestFileIter->second);
1773         
1774         // Check the data type section.
1776         TestFileIter = TestFile.BusinessTelephoneListDataType.find(2);
1777         ASSERT_NE(TestFile.BusinessTelephoneListDataType.end(), TestFileIter);
1778         ASSERT_EQ("tel", TestFileIter->second);
1779         
1780         // Check the type section.
1781         
1782         TestFileIter = TestFile.BusinessTelephoneListTypeInfo.find(2);
1783         ASSERT_NE(TestFile.BusinessTelephoneListTypeInfo.end(), TestFileIter);
1784         ASSERT_EQ("voice", TestFileIter->second);       
1785         
1786         // Check the ALTID section.
1787         
1788         TestFileIter = TestFile.BusinessTelephoneListAltID.find(2);
1789         ASSERT_NE(TestFile.BusinessTelephoneListAltID.end(), TestFileIter);
1790         ASSERT_EQ("25", TestFileIter->second);
1791         
1792         // Check the PID section.
1793         
1794         TestFileIter = TestFile.BusinessTelephoneListPID.find(2);
1795         ASSERT_NE(TestFile.BusinessTelephoneListPID.end(), TestFileIter);
1796         ASSERT_EQ("50", TestFileIter->second);
1797         
1798         // Check the PREF section.
1799         
1800         TestFileIntIter = TestFile.BusinessTelephoneListPref.find(2);
1801         ASSERT_NE(TestFile.BusinessTelephoneListPref.end(), TestFileIntIter);
1802         ASSERT_EQ(75, TestFileIntIter->second);
1803         
1804         // Check the extra tokens.
1805         
1806         TestFileIter = TestFile.BusinessTelephoneListTokens.find(2);
1807         ASSERT_NE(TestFile.BusinessTelephoneListTokens.end(), TestFileIter);
1808         ASSERT_EQ("BEEP=Boop", TestFileIter->second);
1812 TEST(ContactLoad, LanguageTests){
1814         ContactDataObject TestFile;
1816         // Check that the vCard 4.0 file loads OK.
1818         ASSERT_EQ(CONTACTLOAD_OK, TestFile.LoadFile("LoadCheck-Load4.vcf"));
1820         std::map<int,wxString>::iterator TestFileIter;
1821         std::map<int,int>::iterator TestFileIntIter;
1822         
1823         // Start with the general language.
1824         
1825         TestFileIter = TestFile.GeneralLanguageList.find(0);
1826         ASSERT_NE(TestFile.GeneralLanguageList.end(), TestFileIter);
1827         ASSERT_EQ("kw", TestFileIter->second);
1828         
1829         // Check the ALTID section.
1830         
1831         TestFileIter = TestFile.GeneralLanguageListAltID.find(0);
1832         ASSERT_NE(TestFile.GeneralLanguageListAltID.end(), TestFileIter);
1833         ASSERT_EQ("20", TestFileIter->second);
1834         
1835         // Check the PID section.
1836         
1837         TestFileIter = TestFile.GeneralLanguageListPID.find(0);
1838         ASSERT_NE(TestFile.GeneralLanguageListPID.end(), TestFileIter);
1839         ASSERT_EQ("40", TestFileIter->second);
1840         
1841         // Check the PREF section.
1842         
1843         TestFileIntIter = TestFile.GeneralLanguageListPref.find(0);
1844         ASSERT_NE(TestFile.GeneralLanguageListPref.end(), TestFileIntIter);
1845         ASSERT_EQ(80, TestFileIntIter->second);
1846         
1847         // Check the extra tokens.
1848         
1849         TestFileIter = TestFile.GeneralLanguageListTokens.find(0);
1850         ASSERT_NE(TestFile.GeneralLanguageListTokens.end(), TestFileIter);
1851         ASSERT_EQ("GELFORN=Great", TestFileIter->second);
1852         
1853         // Start with the home language.
1854         
1855         TestFileIter = TestFile.HomeLanguageList.find(1);
1856         ASSERT_NE(TestFile.HomeLanguageList.end(), TestFileIter);
1857         ASSERT_EQ("en", TestFileIter->second);
1858         
1859         // Check the ALTID section.
1860         
1861         TestFileIter = TestFile.HomeLanguageListAltID.find(1);
1862         ASSERT_NE(TestFile.HomeLanguageListAltID.end(), TestFileIter);
1863         ASSERT_EQ("22", TestFileIter->second);
1864         
1865         // Check the PID section.
1866         
1867         TestFileIter = TestFile.HomeLanguageListPID.find(1);
1868         ASSERT_NE(TestFile.HomeLanguageListPID.end(), TestFileIter);
1869         ASSERT_EQ("45", TestFileIter->second);
1870         
1871         // Check the PREF section.
1872         
1873         TestFileIntIter = TestFile.HomeLanguageListPref.find(1);
1874         ASSERT_NE(TestFile.HomeLanguageListPref.end(), TestFileIntIter);
1875         ASSERT_EQ(90, TestFileIntIter->second);
1876         
1877         // Check the extra tokens.
1878         
1879         TestFileIter = TestFile.HomeLanguageListTokens.find(1);
1880         ASSERT_NE(TestFile.HomeLanguageListTokens.end(), TestFileIter);
1881         ASSERT_EQ("LANGUAGE=yes", TestFileIter->second);
1883         // Start with the business language.
1884         
1885         TestFileIter = TestFile.BusinessLanguageList.find(2);
1886         ASSERT_NE(TestFile.BusinessLanguageList.end(), TestFileIter);
1887         ASSERT_EQ("cy", TestFileIter->second);
1888         
1889         // Check the ALTID section.
1890         
1891         TestFileIter = TestFile.BusinessLanguageListAltID.find(2);
1892         ASSERT_NE(TestFile.BusinessLanguageListAltID.end(), TestFileIter);
1893         ASSERT_EQ("10", TestFileIter->second);
1894         
1895         // Check the PID section.
1896         
1897         TestFileIter = TestFile.BusinessLanguageListPID.find(2);
1898         ASSERT_NE(TestFile.BusinessLanguageListPID.end(), TestFileIter);
1899         ASSERT_EQ("15", TestFileIter->second);
1900         
1901         // Check the PREF section.
1902         
1903         TestFileIntIter = TestFile.BusinessLanguageListPref.find(2);
1904         ASSERT_NE(TestFile.BusinessLanguageListPref.end(), TestFileIntIter);
1905         ASSERT_EQ(20, TestFileIntIter->second);
1906         
1907         // Check the extra tokens.
1908         
1909         TestFileIter = TestFile.BusinessLanguageListTokens.find(2);
1910         ASSERT_NE(TestFile.BusinessLanguageListTokens.end(), TestFileIter);
1911         ASSERT_EQ("FFENSTRI=ie", TestFileIter->second);
1915 TEST(ContactLoad, GeographicTests){
1917         ContactDataObject TestFile;
1919         // Check that the vCard 4.0 file loads OK.
1921         ASSERT_EQ(CONTACTLOAD_OK, TestFile.LoadFile("LoadCheck-Load4.vcf"));
1923         std::map<int,wxString>::iterator TestFileIter;
1924         std::map<int,int>::iterator TestFileIntIter;
1925         
1926         // Start with the general Geoposition.
1927         
1928         TestFileIter = TestFile.GeneralGeographyList.find(0);
1929         ASSERT_NE(TestFile.GeneralGeographyList.end(), TestFileIter);
1930         ASSERT_EQ("3.5,3.5", TestFileIter->second);
1931         
1932         // Check the ALTID section.
1933         
1934         TestFileIter = TestFile.GeneralGeographyListAltID.find(0);
1935         ASSERT_NE(TestFile.GeneralGeographyListAltID.end(), TestFileIter);
1936         ASSERT_EQ("13", TestFileIter->second);
1937         
1938         // Check the PID section.
1939         
1940         TestFileIter = TestFile.GeneralGeographyListPID.find(0);
1941         ASSERT_NE(TestFile.GeneralGeographyListPID.end(), TestFileIter);
1942         ASSERT_EQ("26", TestFileIter->second);
1943         
1944         // Check the MEDIATYPE section.
1945         
1946         TestFileIter = TestFile.GeneralGeographyListMediatype.find(0);
1947         ASSERT_NE(TestFile.GeneralGeographyListMediatype.end(), TestFileIter);
1948         ASSERT_EQ("text/plain", TestFileIter->second);
1949         
1950         // Check the PREF section.
1951         
1952         TestFileIntIter = TestFile.GeneralGeographyListPref.find(0);
1953         ASSERT_NE(TestFile.GeneralGeographyListPref.end(), TestFileIntIter);
1954         ASSERT_EQ(39, TestFileIntIter->second);
1955         
1956         // Check the extra tokens.
1957         
1958         TestFileIter = TestFile.GeneralGeographyListTokens.find(0);
1959         ASSERT_NE(TestFile.GeneralGeographyListTokens.end(), TestFileIter);
1960         ASSERT_EQ("POS=Yep", TestFileIter->second);
1962         // Start with the home Geoposition.
1963         
1964         TestFileIter = TestFile.HomeGeographyList.find(1);
1965         ASSERT_NE(TestFile.HomeGeographyList.end(), TestFileIter);
1966         ASSERT_EQ("7.0,7.0", TestFileIter->second);
1967         
1968         // Check the ALTID section.
1969         
1970         TestFileIter = TestFile.HomeGeographyListAltID.find(1);
1971         ASSERT_NE(TestFile.HomeGeographyListAltID.end(), TestFileIter);
1972         ASSERT_EQ("140", TestFileIter->second);
1973         
1974         // Check the PID section.
1975         
1976         TestFileIter = TestFile.HomeGeographyListPID.find(1);
1977         ASSERT_NE(TestFile.HomeGeographyListPID.end(), TestFileIter);
1978         ASSERT_EQ("70", TestFileIter->second);
1979         
1980         // Check the MEDIATYPE section.
1981         
1982         TestFileIter = TestFile.HomeGeographyListMediatype.find(1);
1983         ASSERT_NE(TestFile.HomeGeographyListMediatype.end(), TestFileIter);
1984         ASSERT_EQ("text/ratherplain", TestFileIter->second);
1985         
1986         // Check the PREF section.
1987         
1988         TestFileIntIter = TestFile.HomeGeographyListPref.find(1);
1989         ASSERT_NE(TestFile.HomeGeographyListPref.end(), TestFileIntIter);
1990         ASSERT_EQ(1, TestFileIntIter->second);
1991         
1992         // Check the extra tokens.
1993         
1994         TestFileIter = TestFile.HomeGeographyListTokens.find(1);
1995         ASSERT_NE(TestFile.HomeGeographyListTokens.end(), TestFileIter);
1996         ASSERT_EQ("POS=Nope", TestFileIter->second);
1998         // Start with the business Geoposition.
1999         
2000         TestFileIter = TestFile.BusinessGeographyList.find(2);
2001         ASSERT_NE(TestFile.BusinessGeographyList.end(), TestFileIter);
2002         ASSERT_EQ("14.0,14.0", TestFileIter->second);
2003         
2004         // Check the ALTID section.
2005         
2006         TestFileIter = TestFile.BusinessGeographyListAltID.find(2);
2007         ASSERT_NE(TestFile.BusinessGeographyListAltID.end(), TestFileIter);
2008         ASSERT_EQ("75", TestFileIter->second);
2009         
2010         // Check the PID section.
2011         
2012         TestFileIter = TestFile.BusinessGeographyListPID.find(2);
2013         ASSERT_NE(TestFile.BusinessGeographyListPID.end(), TestFileIter);
2014         ASSERT_EQ("32", TestFileIter->second);
2015         
2016         // Check the MEDIATYPE section.
2017         
2018         TestFileIter = TestFile.BusinessGeographyListMediatype.find(2);
2019         ASSERT_NE(TestFile.BusinessGeographyListMediatype.end(), TestFileIter);
2020         ASSERT_EQ("text/greenplain", TestFileIter->second);
2021         
2022         // Check the PREF section.
2023         
2024         TestFileIntIter = TestFile.BusinessGeographyListPref.find(2);
2025         ASSERT_NE(TestFile.BusinessGeographyListPref.end(), TestFileIntIter);
2026         ASSERT_EQ(4, TestFileIntIter->second);
2027         
2028         // Check the extra tokens.
2029         
2030         TestFileIter = TestFile.BusinessGeographyListTokens.find(2);
2031         ASSERT_NE(TestFile.BusinessGeographyListTokens.end(), TestFileIter);
2032         ASSERT_EQ("POS=Money", TestFileIter->second);
2036 TEST(ContactLoad, RelatedTests){
2038         ContactDataObject TestFile;
2040         // Check that the vCard 4.0 file loads OK.
2042         ASSERT_EQ(CONTACTLOAD_OK, TestFile.LoadFile("LoadCheck-Load4.vcf"));
2044         std::map<int,wxString>::iterator TestFileIter;
2045         std::map<int,int>::iterator TestFileIntIter;
2046         
2047         // Start with the first relation.
2048         
2049         TestFileIter = TestFile.GeneralRelatedList.find(0);
2050         ASSERT_NE(TestFile.GeneralRelatedList.end(), TestFileIter);
2051         ASSERT_EQ("Friend Test", TestFileIter->second);
2053         // Check the TYPE section.
2054         
2055         TestFileIter = TestFile.GeneralRelatedListType.find(0);
2056         ASSERT_NE(TestFile.GeneralRelatedListType.end(), TestFileIter);
2057         ASSERT_EQ("Kin", TestFileIter->second);
2059         // Check the ALTID section.
2060         
2061         TestFileIter = TestFile.GeneralRelatedListAltID.find(0);
2062         ASSERT_NE(TestFile.GeneralRelatedListAltID.end(), TestFileIter);
2063         ASSERT_EQ("5", TestFileIter->second);
2064         
2065         // Check the PID section.
2066         
2067         TestFileIter = TestFile.GeneralRelatedListPID.find(0);
2068         ASSERT_NE(TestFile.GeneralRelatedListPID.end(), TestFileIter);
2069         ASSERT_EQ("10", TestFileIter->second);
2070                 
2071         // Check the PREF section.
2072         
2073         TestFileIntIter = TestFile.GeneralRelatedListPref.find(0);
2074         ASSERT_NE(TestFile.GeneralRelatedListPref.end(), TestFileIntIter);
2075         ASSERT_EQ(20, TestFileIntIter->second);
2076         
2077         // Check the extra tokens.
2078         
2079         TestFileIter = TestFile.GeneralRelatedListTokens.find(0);
2080         ASSERT_NE(TestFile.GeneralRelatedListTokens.end(), TestFileIter);
2081         ASSERT_EQ("OPTION=Yes", TestFileIter->second);
2083         // Start with the second relation.
2084         
2085         TestFileIter = TestFile.GeneralRelatedList.find(1);
2086         ASSERT_NE(TestFile.GeneralRelatedList.end(), TestFileIter);
2087         ASSERT_EQ("Friend Test Two", TestFileIter->second);
2089         // Check the TYPE section.
2090         
2091         TestFileIter = TestFile.GeneralRelatedListType.find(1);
2092         ASSERT_NE(TestFile.GeneralRelatedListType.end(), TestFileIter);
2093         ASSERT_EQ("Spouse", TestFileIter->second);
2095         // Check the ALTID section.
2096         
2097         TestFileIter = TestFile.GeneralRelatedListAltID.find(1);
2098         ASSERT_NE(TestFile.GeneralRelatedListAltID.end(), TestFileIter);
2099         ASSERT_EQ("1", TestFileIter->second);
2100         
2101         // Check the PID section.
2102         
2103         TestFileIter = TestFile.GeneralRelatedListPID.find(1);
2104         ASSERT_NE(TestFile.GeneralRelatedListPID.end(), TestFileIter);
2105         ASSERT_EQ("2", TestFileIter->second);
2106                 
2107         // Check the PREF section.
2108         
2109         TestFileIntIter = TestFile.GeneralRelatedListPref.find(1);
2110         ASSERT_NE(TestFile.GeneralRelatedListPref.end(), TestFileIntIter);
2111         ASSERT_EQ(3, TestFileIntIter->second);
2112         
2113         // Check the extra tokens.
2114         
2115         TestFileIter = TestFile.GeneralRelatedListTokens.find(1);
2116         ASSERT_NE(TestFile.GeneralRelatedListTokens.end(), TestFileIter);
2117         ASSERT_EQ("OPTION=No", TestFileIter->second);
2118         
2119         // Start with the second relation.
2120         
2121         TestFileIter = TestFile.GeneralRelatedList.find(2);
2122         ASSERT_NE(TestFile.GeneralRelatedList.end(), TestFileIter);
2123         ASSERT_EQ("Friend Test Three", TestFileIter->second);
2125         // Check the TYPE section.
2126         
2127         TestFileIter = TestFile.GeneralRelatedListType.find(2);
2128         ASSERT_NE(TestFile.GeneralRelatedListType.end(), TestFileIter);
2129         ASSERT_EQ("Muse", TestFileIter->second);
2131         // Check the ALTID section.
2132         
2133         TestFileIter = TestFile.GeneralRelatedListAltID.find(2);
2134         ASSERT_NE(TestFile.GeneralRelatedListAltID.end(), TestFileIter);
2135         ASSERT_EQ("4", TestFileIter->second);
2136         
2137         // Check the PID section.
2138         
2139         TestFileIter = TestFile.GeneralRelatedListPID.find(2);
2140         ASSERT_NE(TestFile.GeneralRelatedListPID.end(), TestFileIter);
2141         ASSERT_EQ("5", TestFileIter->second);
2142                 
2143         // Check the PREF section.
2144         
2145         TestFileIntIter = TestFile.GeneralRelatedListPref.find(2);
2146         ASSERT_NE(TestFile.GeneralRelatedListPref.end(), TestFileIntIter);
2147         ASSERT_EQ(6, TestFileIntIter->second);
2148         
2149         // Check the extra tokens.
2150         
2151         TestFileIter = TestFile.GeneralRelatedListTokens.find(2);
2152         ASSERT_NE(TestFile.GeneralRelatedListTokens.end(), TestFileIter);
2153         ASSERT_EQ("OPTION=Maybe", TestFileIter->second);
2157 TEST(ContactLoad, URLTests){
2159         ContactDataObject TestFile;
2161         // Check that the vCard 4.0 file loads OK.
2163         ASSERT_EQ(CONTACTLOAD_OK, TestFile.LoadFile("LoadCheck-Load4.vcf"));
2165         std::map<int,wxString>::iterator TestFileIter;
2166         std::map<int,int>::iterator TestFileIntIter;
2168         // Start with the general URL.
2169         
2170         TestFileIter = TestFile.GeneralWebsiteList.find(0);
2171         ASSERT_NE(TestFile.GeneralWebsiteList.end(), TestFileIter);
2172         ASSERT_EQ("http://example.com/", TestFileIter->second);
2173         
2174         // Check the ALTID section.
2175         
2176         TestFileIter = TestFile.GeneralWebsiteListAltID.find(0);
2177         ASSERT_NE(TestFile.GeneralWebsiteListAltID.end(), TestFileIter);
2178         ASSERT_EQ("0", TestFileIter->second);
2179         
2180         // Check the PID section.
2181         
2182         TestFileIter = TestFile.GeneralWebsiteListPID.find(0);
2183         ASSERT_NE(TestFile.GeneralWebsiteListPID.end(), TestFileIter);
2184         ASSERT_EQ("1", TestFileIter->second);
2185         
2186         // Check the MEDIATYPE section.
2187         
2188         TestFileIter = TestFile.GeneralWebsiteListMediatype.find(0);
2189         ASSERT_NE(TestFile.GeneralWebsiteListMediatype.end(), TestFileIter);
2190         ASSERT_EQ("text/plain", TestFileIter->second);
2191         
2192         // Check the PREF section.
2193         
2194         TestFileIntIter = TestFile.GeneralWebsiteListPref.find(0);
2195         ASSERT_NE(TestFile.GeneralWebsiteListPref.end(), TestFileIntIter);
2196         ASSERT_EQ(2, TestFileIntIter->second);
2197         
2198         // Check the extra tokens.
2199         
2200         TestFileIter = TestFile.GeneralWebsiteListTokens.find(0);
2201         ASSERT_NE(TestFile.GeneralWebsiteListTokens.end(), TestFileIter);
2202         ASSERT_EQ("MEEP=Moo", TestFileIter->second);
2204         // Start with the home URL.
2206         TestFileIter = TestFile.HomeWebsiteList.find(1);
2207         ASSERT_NE(TestFile.HomeWebsiteList.end(), TestFileIter);
2208         ASSERT_EQ("http://example.com/home/", TestFileIter->second);
2209         
2210         // Check the ALTID section.
2211         
2212         TestFileIter = TestFile.HomeWebsiteListAltID.find(1);
2213         ASSERT_NE(TestFile.HomeWebsiteListAltID.end(), TestFileIter);
2214         ASSERT_EQ("10", TestFileIter->second);
2215         
2216         // Check the PID section.
2217         
2218         TestFileIter = TestFile.HomeWebsiteListPID.find(1);
2219         ASSERT_NE(TestFile.HomeWebsiteListPID.end(), TestFileIter);
2220         ASSERT_EQ("11", TestFileIter->second);
2221         
2222         // Check the MEDIATYPE section.
2223         
2224         TestFileIter = TestFile.HomeWebsiteListMediatype.find(1);
2225         ASSERT_NE(TestFile.HomeWebsiteListMediatype.end(), TestFileIter);
2226         ASSERT_EQ("grass/soggy", TestFileIter->second);
2227         
2228         // Check the PREF section.
2229         
2230         TestFileIntIter = TestFile.HomeWebsiteListPref.find(1);
2231         ASSERT_NE(TestFile.HomeWebsiteListPref.end(), TestFileIntIter);
2232         ASSERT_EQ(12, TestFileIntIter->second);
2233         
2234         // Check the extra tokens.
2235         
2236         TestFileIter = TestFile.HomeWebsiteListTokens.find(1);
2237         ASSERT_NE(TestFile.HomeWebsiteListTokens.end(), TestFileIter);
2238         ASSERT_EQ("BON=Bon", TestFileIter->second);
2239         
2240         // Start with the business URL.
2242         TestFileIter = TestFile.BusinessWebsiteList.find(2);
2243         ASSERT_NE(TestFile.BusinessWebsiteList.end(), TestFileIter);
2244         ASSERT_EQ("http://example.com/business/", TestFileIter->second);
2245         
2246         // Check the ALTID section.
2247         
2248         TestFileIter = TestFile.BusinessWebsiteListAltID.find(2);
2249         ASSERT_NE(TestFile.BusinessWebsiteListAltID.end(), TestFileIter);
2250         ASSERT_EQ("20", TestFileIter->second);
2251         
2252         // Check the PID section.
2253         
2254         TestFileIter = TestFile.BusinessWebsiteListPID.find(2);
2255         ASSERT_NE(TestFile.BusinessWebsiteListPID.end(), TestFileIter);
2256         ASSERT_EQ("21", TestFileIter->second);
2257         
2258         // Check the MEDIATYPE section.
2259         
2260         TestFileIter = TestFile.BusinessWebsiteListMediatype.find(2);
2261         ASSERT_NE(TestFile.BusinessWebsiteListMediatype.end(), TestFileIter);
2262         ASSERT_EQ("chocolate/yummy", TestFileIter->second);
2263         
2264         // Check the PREF section.
2265         
2266         TestFileIntIter = TestFile.BusinessWebsiteListPref.find(2);
2267         ASSERT_NE(TestFile.BusinessWebsiteListPref.end(), TestFileIntIter);
2268         ASSERT_EQ(22, TestFileIntIter->second);
2269         
2270         // Check the extra tokens.
2271         
2272         TestFileIter = TestFile.BusinessWebsiteListTokens.find(2);
2273         ASSERT_NE(TestFile.BusinessWebsiteListTokens.end(), TestFileIter);
2274         ASSERT_EQ("YES=No", TestFileIter->second);
2278 TEST(ContactLoad, TitleTests){
2280         ContactDataObject TestFile;
2282         // Check that the vCard 4.0 file loads OK.
2284         ASSERT_EQ(CONTACTLOAD_OK, TestFile.LoadFile("LoadCheck-Load4.vcf"));
2286         std::map<int,wxString>::iterator TestFileIter;
2287         std::map<int,int>::iterator TestFileIntIter;
2289         // Start with the general title.
2290         
2291         TestFileIter = TestFile.GeneralTitleList.find(0);
2292         ASSERT_NE(TestFile.GeneralTitleList.end(), TestFileIter);
2293         ASSERT_EQ("Lord of Light", TestFileIter->second);
2294         
2295         // Check the ALTID section.
2296         
2297         TestFileIter = TestFile.GeneralTitleListAltID.find(0);
2298         ASSERT_NE(TestFile.GeneralTitleListAltID.end(), TestFileIter);
2299         ASSERT_EQ("20", TestFileIter->second);
2300         
2301         // Check the PID section.
2302         
2303         TestFileIter = TestFile.GeneralTitleListPID.find(0);
2304         ASSERT_NE(TestFile.GeneralTitleListPID.end(), TestFileIter);
2305         ASSERT_EQ("21", TestFileIter->second);
2306         
2307         // Check the LANGUAGE section.
2308         
2309         TestFileIter = TestFile.GeneralTitleListLanguage.find(0);
2310         ASSERT_NE(TestFile.GeneralTitleListLanguage.end(), TestFileIter);
2311         ASSERT_EQ("text/plain", TestFileIter->second);
2312         
2313         // Check the PREF section.
2314         
2315         TestFileIntIter = TestFile.GeneralTitleListPref.find(0);
2316         ASSERT_NE(TestFile.GeneralTitleListPref.end(), TestFileIntIter);
2317         ASSERT_EQ(22, TestFileIntIter->second);
2318         
2319         // Check the extra tokens.
2320         
2321         TestFileIter = TestFile.GeneralTitleListTokens.find(0);
2322         ASSERT_NE(TestFile.GeneralTitleListTokens.end(), TestFileIter);
2323         ASSERT_EQ("EEP=LIGHT", TestFileIter->second);
2325         // Start with the home title.
2327         TestFileIter = TestFile.HomeTitleList.find(1);
2328         ASSERT_NE(TestFile.HomeTitleList.end(), TestFileIter);
2329         ASSERT_EQ("Lord of Darkness", TestFileIter->second);
2330         
2331         // Check the ALTID section.
2332         
2333         TestFileIter = TestFile.HomeTitleListAltID.find(1);
2334         ASSERT_NE(TestFile.HomeTitleListAltID.end(), TestFileIter);
2335         ASSERT_EQ("30", TestFileIter->second);
2336         
2337         // Check the PID section.
2338         
2339         TestFileIter = TestFile.HomeTitleListPID.find(1);
2340         ASSERT_NE(TestFile.HomeTitleListPID.end(), TestFileIter);
2341         ASSERT_EQ("31", TestFileIter->second);
2342         
2343         // Check the LANGUAGE section.
2344         
2345         TestFileIter = TestFile.HomeTitleListLanguage.find(1);
2346         ASSERT_NE(TestFile.HomeTitleListLanguage.end(), TestFileIter);
2347         ASSERT_EQ("grass/dry", TestFileIter->second);
2348         
2349         // Check the PREF section.
2350         
2351         TestFileIntIter = TestFile.HomeTitleListPref.find(1);
2352         ASSERT_NE(TestFile.HomeTitleListPref.end(), TestFileIntIter);
2353         ASSERT_EQ(32, TestFileIntIter->second);
2354         
2355         // Check the extra tokens.
2356         
2357         TestFileIter = TestFile.HomeTitleListTokens.find(1);
2358         ASSERT_NE(TestFile.HomeTitleListTokens.end(), TestFileIter);
2359         ASSERT_EQ("EEP=DARK", TestFileIter->second);
2360         
2361         // Start with the business title.
2363         TestFileIter = TestFile.BusinessTitleList.find(2);
2364         ASSERT_NE(TestFile.BusinessTitleList.end(), TestFileIter);
2365         ASSERT_EQ("Master of the Light & Darkness", TestFileIter->second);
2366         
2367         // Check the ALTID section.
2368         
2369         TestFileIter = TestFile.BusinessTitleListAltID.find(2);
2370         ASSERT_NE(TestFile.BusinessTitleListAltID.end(), TestFileIter);
2371         ASSERT_EQ("40", TestFileIter->second);
2372         
2373         // Check the PID section.
2374         
2375         TestFileIter = TestFile.BusinessTitleListPID.find(2);
2376         ASSERT_NE(TestFile.BusinessTitleListPID.end(), TestFileIter);
2377         ASSERT_EQ("41", TestFileIter->second);
2378         
2379         // Check the LANGUAGE section.
2380         
2381         TestFileIter = TestFile.BusinessTitleListLanguage.find(2);
2382         ASSERT_NE(TestFile.BusinessTitleListLanguage.end(), TestFileIter);
2383         ASSERT_EQ("moths/eew", TestFileIter->second);
2384         
2385         // Check the PREF section.
2386         
2387         TestFileIntIter = TestFile.BusinessTitleListPref.find(2);
2388         ASSERT_NE(TestFile.BusinessTitleListPref.end(), TestFileIntIter);
2389         ASSERT_EQ(42, TestFileIntIter->second);
2390         
2391         // Check the extra tokens.
2392         
2393         TestFileIter = TestFile.BusinessTitleListTokens.find(2);
2394         ASSERT_NE(TestFile.BusinessTitleListTokens.end(), TestFileIter);
2395         ASSERT_EQ("EEP=BOTH", TestFileIter->second);
2399 TEST(ContactLoad, RoleTests){
2401         ContactDataObject TestFile;
2403         // Check that the vCard 4.0 file loads OK.
2405         ASSERT_EQ(CONTACTLOAD_OK, TestFile.LoadFile("LoadCheck-Load4.vcf"));
2407         std::map<int,wxString>::iterator TestFileIter;
2408         std::map<int,int>::iterator TestFileIntIter;
2410         // Start with the general role.
2411         
2412         TestFileIter = TestFile.GeneralRoleList.find(0);
2413         ASSERT_NE(TestFile.GeneralRoleList.end(), TestFileIter);
2414         ASSERT_EQ("Ordinary Person", TestFileIter->second);
2415         
2416         // Check the ALTID section.
2417         
2418         TestFileIter = TestFile.GeneralRoleListAltID.find(0);
2419         ASSERT_NE(TestFile.GeneralRoleListAltID.end(), TestFileIter);
2420         ASSERT_EQ("50", TestFileIter->second);
2421         
2422         // Check the PID section.
2423         
2424         TestFileIter = TestFile.GeneralRoleListPID.find(0);
2425         ASSERT_NE(TestFile.GeneralRoleListPID.end(), TestFileIter);
2426         ASSERT_EQ("51", TestFileIter->second);
2427         
2428         // Check the LANGUAGE section.
2429         
2430         TestFileIter = TestFile.GeneralRoleListLanguage.find(0);
2431         ASSERT_NE(TestFile.GeneralRoleListLanguage.end(), TestFileIter);
2432         ASSERT_EQ("en", TestFileIter->second);
2433         
2434         // Check the PREF section.
2435         
2436         TestFileIntIter = TestFile.GeneralRoleListPref.find(0);
2437         ASSERT_NE(TestFile.GeneralRoleListPref.end(), TestFileIntIter);
2438         ASSERT_EQ(52, TestFileIntIter->second);
2439         
2440         // Check the extra tokens.
2441         
2442         TestFileIter = TestFile.GeneralRoleListTokens.find(0);
2443         ASSERT_NE(TestFile.GeneralRoleListTokens.end(), TestFileIter);
2444         ASSERT_EQ("ASTERISK=None", TestFileIter->second);
2446         // Start with the home role.
2448         TestFileIter = TestFile.HomeRoleList.find(1);
2449         ASSERT_NE(TestFile.HomeRoleList.end(), TestFileIter);
2450         ASSERT_EQ("Ordinary Lazy Person", TestFileIter->second);
2451         
2452         // Check the ALTID section.
2453         
2454         TestFileIter = TestFile.HomeRoleListAltID.find(1);
2455         ASSERT_NE(TestFile.HomeRoleListAltID.end(), TestFileIter);
2456         ASSERT_EQ("60", TestFileIter->second);
2457         
2458         // Check the PID section.
2459         
2460         TestFileIter = TestFile.HomeRoleListPID.find(1);
2461         ASSERT_NE(TestFile.HomeRoleListPID.end(), TestFileIter);
2462         ASSERT_EQ("61", TestFileIter->second);
2463         
2464         // Check the LANGUAGE section.
2465         
2466         TestFileIter = TestFile.HomeRoleListLanguage.find(1);
2467         ASSERT_NE(TestFile.HomeRoleListLanguage.end(), TestFileIter);
2468         ASSERT_EQ("en-GB", TestFileIter->second);
2469         
2470         // Check the PREF section.
2471         
2472         TestFileIntIter = TestFile.HomeRoleListPref.find(1);
2473         ASSERT_NE(TestFile.HomeRoleListPref.end(), TestFileIntIter);
2474         ASSERT_EQ(62, TestFileIntIter->second);
2475         
2476         // Check the extra tokens.
2477         
2478         TestFileIter = TestFile.HomeRoleListTokens.find(1);
2479         ASSERT_NE(TestFile.HomeRoleListTokens.end(), TestFileIter);
2480         ASSERT_EQ("SOMEWHERE=There", TestFileIter->second);
2481         
2482         // Start with the business role.
2484         TestFileIter = TestFile.BusinessRoleList.find(2);
2485         ASSERT_NE(TestFile.BusinessRoleList.end(), TestFileIter);
2486         ASSERT_EQ("Company Owner", TestFileIter->second);
2487         
2488         // Check the ALTID section.
2489         
2490         TestFileIter = TestFile.BusinessRoleListAltID.find(2);
2491         ASSERT_NE(TestFile.BusinessRoleListAltID.end(), TestFileIter);
2492         ASSERT_EQ("70", TestFileIter->second);
2493         
2494         // Check the PID section.
2495         
2496         TestFileIter = TestFile.BusinessRoleListPID.find(2);
2497         ASSERT_NE(TestFile.BusinessRoleListPID.end(), TestFileIter);
2498         ASSERT_EQ("71", TestFileIter->second);
2499         
2500         // Check the LANGUAGE section.
2501         
2502         TestFileIter = TestFile.BusinessRoleListLanguage.find(2);
2503         ASSERT_NE(TestFile.BusinessRoleListLanguage.end(), TestFileIter);
2504         ASSERT_EQ("en-AU", TestFileIter->second);
2505         
2506         // Check the PREF section.
2507         
2508         TestFileIntIter = TestFile.BusinessRoleListPref.find(2);
2509         ASSERT_NE(TestFile.BusinessRoleListPref.end(), TestFileIntIter);
2510         ASSERT_EQ(72, TestFileIntIter->second);
2511         
2512         // Check the extra tokens.
2513         
2514         TestFileIter = TestFile.BusinessRoleListTokens.find(2);
2515         ASSERT_NE(TestFile.BusinessRoleListTokens.end(), TestFileIter);
2516         ASSERT_EQ("HERE=Nope", TestFileIter->second);
2520 TEST(ContactLoad, OrganisationTests){
2522         ContactDataObject TestFile;
2524         // Check that the vCard 4.0 file loads OK.
2526         ASSERT_EQ(CONTACTLOAD_OK, TestFile.LoadFile("LoadCheck-Load4.vcf"));
2528         std::map<int,wxString>::iterator TestFileIter;
2529         std::map<int,int>::iterator TestFileIntIter;
2531         // Start with the general organisation.
2532         
2533         TestFileIter = TestFile.GeneralOrganisationsList.find(0);
2534         ASSERT_NE(TestFile.GeneralOrganisationsList.end(), TestFileIter);
2535         ASSERT_EQ("Ordinary Organisation", TestFileIter->second);
2536         
2537         // Check the SORT-AS section.
2539         TestFileIter = TestFile.GeneralOrganisationsListSortAs.find(0);
2540         ASSERT_NE(TestFile.GeneralOrganisationsListSortAs.end(), TestFileIter);
2541         ASSERT_EQ("Organisation, Ordinary", TestFileIter->second);
2542         
2543         // Check the ALTID section.
2544         
2545         TestFileIter = TestFile.GeneralOrganisationsListAltID.find(0);
2546         ASSERT_NE(TestFile.GeneralOrganisationsListAltID.end(), TestFileIter);
2547         ASSERT_EQ("50", TestFileIter->second);
2548         
2549         // Check the PID section.
2550         
2551         TestFileIter = TestFile.GeneralOrganisationsListPID.find(0);
2552         ASSERT_NE(TestFile.GeneralOrganisationsListPID.end(), TestFileIter);
2553         ASSERT_EQ("51", TestFileIter->second);
2554         
2555         // Check the LANGUAGE section.
2556         
2557         TestFileIter = TestFile.GeneralOrganisationsListLanguage.find(0);
2558         ASSERT_NE(TestFile.GeneralOrganisationsListLanguage.end(), TestFileIter);
2559         ASSERT_EQ("en", TestFileIter->second);
2560         
2561         // Check the PREF section.
2562         
2563         TestFileIntIter = TestFile.GeneralOrganisationsListPref.find(0);
2564         ASSERT_NE(TestFile.GeneralOrganisationsListPref.end(), TestFileIntIter);
2565         ASSERT_EQ(52, TestFileIntIter->second);
2566         
2567         // Check the extra tokens.
2568         
2569         TestFileIter = TestFile.GeneralOrganisationsListTokens.find(0);
2570         ASSERT_NE(TestFile.GeneralOrganisationsListTokens.end(), TestFileIter);
2571         ASSERT_EQ("ASTERISK=None", TestFileIter->second);
2573         // Start with the home Organisation.
2575         TestFileIter = TestFile.HomeOrganisationsList.find(1);
2576         ASSERT_NE(TestFile.HomeOrganisationsList.end(), TestFileIter);
2577         ASSERT_EQ("Ordinary Lazy Person", TestFileIter->second);
2578         
2579         // Check the SORT-AS section.
2580         
2581         TestFileIter = TestFile.HomeOrganisationsListSortAs.find(1);
2582         ASSERT_NE(TestFile.HomeOrganisationsListSortAs.end(), TestFileIter);
2583         ASSERT_EQ("Person, Ordinary Lazy", TestFileIter->second);
2584         
2585         // Check the ALTID section.
2586         
2587         TestFileIter = TestFile.HomeOrganisationsListAltID.find(1);
2588         ASSERT_NE(TestFile.HomeOrganisationsListAltID.end(), TestFileIter);
2589         ASSERT_EQ("60", TestFileIter->second);
2590         
2591         // Check the PID section.
2592         
2593         TestFileIter = TestFile.HomeOrganisationsListPID.find(1);
2594         ASSERT_NE(TestFile.HomeOrganisationsListPID.end(), TestFileIter);
2595         ASSERT_EQ("61", TestFileIter->second);
2596         
2597         // Check the LANGUAGE section.
2598         
2599         TestFileIter = TestFile.HomeOrganisationsListLanguage.find(1);
2600         ASSERT_NE(TestFile.HomeOrganisationsListLanguage.end(), TestFileIter);
2601         ASSERT_EQ("en-GB", TestFileIter->second);
2602         
2603         // Check the PREF section.
2604         
2605         TestFileIntIter = TestFile.HomeOrganisationsListPref.find(1);
2606         ASSERT_NE(TestFile.HomeOrganisationsListPref.end(), TestFileIntIter);
2607         ASSERT_EQ(62, TestFileIntIter->second);
2608         
2609         // Check the extra tokens.
2610         
2611         TestFileIter = TestFile.HomeOrganisationsListTokens.find(1);
2612         ASSERT_NE(TestFile.HomeOrganisationsListTokens.end(), TestFileIter);
2613         ASSERT_EQ("SOMEWHERE=There", TestFileIter->second);
2614         
2615         // Start with the business Organisation.
2617         TestFileIter = TestFile.BusinessOrganisationsList.find(2);
2618         ASSERT_NE(TestFile.BusinessOrganisationsList.end(), TestFileIter);
2619         ASSERT_EQ("Company Owner", TestFileIter->second);
2620         
2621         // Check the SORT-AS section.
2622         
2623         TestFileIter = TestFile.BusinessOrganisationsListSortAs.find(2);
2624         ASSERT_NE(TestFile.BusinessOrganisationsListSortAs.end(), TestFileIter);
2625         ASSERT_EQ("Owner, Company", TestFileIter->second);
2626         
2627         // Check the ALTID section.
2628         
2629         TestFileIter = TestFile.BusinessOrganisationsListAltID.find(2);
2630         ASSERT_NE(TestFile.BusinessOrganisationsListAltID.end(), TestFileIter);
2631         ASSERT_EQ("70", TestFileIter->second);
2632         
2633         // Check the PID section.
2634         
2635         TestFileIter = TestFile.BusinessOrganisationsListPID.find(2);
2636         ASSERT_NE(TestFile.BusinessOrganisationsListPID.end(), TestFileIter);
2637         ASSERT_EQ("71", TestFileIter->second);
2638         
2639         // Check the LANGUAGE section.
2640         
2641         TestFileIter = TestFile.BusinessOrganisationsListLanguage.find(2);
2642         ASSERT_NE(TestFile.BusinessOrganisationsListLanguage.end(), TestFileIter);
2643         ASSERT_EQ("en-AU", TestFileIter->second);
2644         
2645         // Check the PREF section.
2646         
2647         TestFileIntIter = TestFile.BusinessOrganisationsListPref.find(2);
2648         ASSERT_NE(TestFile.BusinessOrganisationsListPref.end(), TestFileIntIter);
2649         ASSERT_EQ(72, TestFileIntIter->second);
2650         
2651         // Check the extra tokens.
2652         
2653         TestFileIter = TestFile.BusinessOrganisationsListTokens.find(2);
2654         ASSERT_NE(TestFile.BusinessOrganisationsListTokens.end(), TestFileIter);
2655         ASSERT_EQ("HERE=Nope", TestFileIter->second);
2659 TEST(ContactLoad, NoteTests){
2661         ContactDataObject TestFile;
2663         // Check that the vCard 4.0 file loads OK.
2665         ASSERT_EQ(CONTACTLOAD_OK, TestFile.LoadFile("LoadCheck-Load4.vcf"));
2667         std::map<int,wxString>::iterator TestFileIter;
2668         std::map<int,int>::iterator TestFileIntIter;
2669         
2670         // Start with the general note.
2671         
2672         TestFileIter = TestFile.GeneralNoteList.find(0);
2673         ASSERT_NE(TestFile.GeneralNoteList.end(), TestFileIter);
2674         ASSERT_EQ("Note\n\nLine 3\nLine 4\nLine 5", TestFileIter->second);
2675         
2676         // Check the ALTID section.
2677         
2678         TestFileIter = TestFile.GeneralNoteListAltID.find(0);
2679         ASSERT_NE(TestFile.GeneralNoteListAltID.end(), TestFileIter);
2680         ASSERT_EQ("90", TestFileIter->second);
2681         
2682         // Check the PID section.
2683         
2684         TestFileIter = TestFile.GeneralNoteListPID.find(0);
2685         ASSERT_NE(TestFile.GeneralNoteListPID.end(), TestFileIter);
2686         ASSERT_EQ("91", TestFileIter->second);
2687         
2688         // Check the LANGUAGE section.
2689         
2690         TestFileIter = TestFile.GeneralNoteListLanguage.find(0);
2691         ASSERT_NE(TestFile.GeneralNoteListLanguage.end(), TestFileIter);
2692         ASSERT_EQ("en", TestFileIter->second);
2693         
2694         // Check the PREF section.
2695         
2696         TestFileIntIter = TestFile.GeneralNoteListPref.find(0);
2697         ASSERT_NE(TestFile.GeneralNoteListPref.end(), TestFileIntIter);
2698         ASSERT_EQ(92, TestFileIntIter->second);
2699         
2700         // Check the extra tokens.
2701         
2702         TestFileIter = TestFile.GeneralNoteListTokens.find(0);
2703         ASSERT_NE(TestFile.GeneralNoteListTokens.end(), TestFileIter);
2704         ASSERT_EQ("WOO=WOOP", TestFileIter->second);
2706         // Start with the home note.
2707         
2708         TestFileIter = TestFile.HomeNoteList.find(1);
2709         ASSERT_NE(TestFile.HomeNoteList.end(), TestFileIter);
2710         ASSERT_EQ("Note\n\n\n\nLine 5\nLine 6\nLine 7", TestFileIter->second);
2711         
2712         // Check the ALTID section.
2713         
2714         TestFileIter = TestFile.HomeNoteListAltID.find(1);
2715         ASSERT_NE(TestFile.HomeNoteListAltID.end(), TestFileIter);
2716         ASSERT_EQ("80", TestFileIter->second);
2717         
2718         // Check the PID section.
2719         
2720         TestFileIter = TestFile.HomeNoteListPID.find(1);
2721         ASSERT_NE(TestFile.HomeNoteListPID.end(), TestFileIter);
2722         ASSERT_EQ("81", TestFileIter->second);
2723         
2724         // Check the LANGUAGE section.
2725         
2726         TestFileIter = TestFile.HomeNoteListLanguage.find(1);
2727         ASSERT_NE(TestFile.HomeNoteListLanguage.end(), TestFileIter);
2728         ASSERT_EQ("kw", TestFileIter->second);
2729         
2730         // Check the PREF section.
2731         
2732         TestFileIntIter = TestFile.HomeNoteListPref.find(1);
2733         ASSERT_NE(TestFile.HomeNoteListPref.end(), TestFileIntIter);
2734         ASSERT_EQ(82, TestFileIntIter->second);
2735         
2736         // Check the extra tokens.
2737         
2738         TestFileIter = TestFile.HomeNoteListTokens.find(1);
2739         ASSERT_NE(TestFile.HomeNoteListTokens.end(), TestFileIter);
2740         ASSERT_EQ("MOO=MEEP", TestFileIter->second);
2742         // Start with the business note.
2743         
2744         TestFileIter = TestFile.BusinessNoteList.find(2);
2745         ASSERT_NE(TestFile.BusinessNoteList.end(), TestFileIter);
2746         ASSERT_EQ("Note\n\n\n\nLine 8\nLine 9\nLine 10", TestFileIter->second);
2747         
2748         // Check the ALTID section.
2749         
2750         TestFileIter = TestFile.BusinessNoteListAltID.find(2);
2751         ASSERT_NE(TestFile.BusinessNoteListAltID.end(), TestFileIter);
2752         ASSERT_EQ("70", TestFileIter->second);
2753         
2754         // Check the PID section.
2755         
2756         TestFileIter = TestFile.BusinessNoteListPID.find(2);
2757         ASSERT_NE(TestFile.BusinessNoteListPID.end(), TestFileIter);
2758         ASSERT_EQ("71", TestFileIter->second);
2759         
2760         // Check the LANGUAGE section.
2761         
2762         TestFileIter = TestFile.BusinessNoteListLanguage.find(2);
2763         ASSERT_NE(TestFile.BusinessNoteListLanguage.end(), TestFileIter);
2764         ASSERT_EQ("fr", TestFileIter->second);
2765         
2766         // Check the PREF section.
2767         
2768         TestFileIntIter = TestFile.BusinessNoteListPref.find(2);
2769         ASSERT_NE(TestFile.BusinessNoteListPref.end(), TestFileIntIter);
2770         ASSERT_EQ(72, TestFileIntIter->second);
2771         
2772         // Check the extra tokens.
2773         
2774         TestFileIter = TestFile.BusinessNoteListTokens.find(2);
2775         ASSERT_NE(TestFile.BusinessNoteListTokens.end(), TestFileIter);
2776         ASSERT_EQ("BOING=BOOP", TestFileIter->second);
2780 TEST(ContactLoad, CategoryTests){
2782         ContactDataObject TestFile;
2784         // Check that the vCard 4.0 file loads OK.
2786         ASSERT_EQ(CONTACTLOAD_OK, TestFile.LoadFile("LoadCheck-Load4.vcf"));
2788         std::map<int,wxString>::iterator TestFileIter;
2789         std::map<int,int>::iterator TestFileIntIter;    
2791         // Start with the first category.
2792         
2793         TestFileIter = TestFile.CategoriesList.find(0);
2794         ASSERT_NE(TestFile.CategoriesList.end(), TestFileIter);
2795         ASSERT_EQ("Category One", TestFileIter->second);
2796         
2797         // Check the TYPE section.
2798         
2799         TestFileIter = TestFile.CategoriesListType.find(0);
2800         ASSERT_EQ(TestFile.CategoriesListType.end(), TestFileIter);
2801         
2802         // Check the ALTID section.
2803         
2804         TestFileIter = TestFile.CategoriesListAltID.find(0);
2805         ASSERT_NE(TestFile.CategoriesListAltID.end(), TestFileIter);
2806         ASSERT_EQ("40", TestFileIter->second);
2807         
2808         // Check the PID section.
2809         
2810         TestFileIter = TestFile.CategoriesListPID.find(0);
2811         ASSERT_NE(TestFile.CategoriesListPID.end(), TestFileIter);
2812         ASSERT_EQ("41", TestFileIter->second);
2813         
2814         // Check the LANGUAGE section.
2815         
2816         TestFileIter = TestFile.CategoriesListLanguage.find(0);
2817         ASSERT_NE(TestFile.CategoriesListLanguage.end(), TestFileIter);
2818         ASSERT_EQ("en", TestFileIter->second);
2819         
2820         // Check the PREF section.
2821         
2822         TestFileIntIter = TestFile.CategoriesListPref.find(0);
2823         ASSERT_NE(TestFile.CategoriesListPref.end(), TestFileIntIter);
2824         ASSERT_EQ(42, TestFileIntIter->second);
2825         
2826         // Check the extra tokens.
2827         
2828         TestFileIter = TestFile.CategoriesListTokens.find(0);
2829         ASSERT_NE(TestFile.CategoriesListTokens.end(), TestFileIter);
2830         ASSERT_EQ("CAT=TAC", TestFileIter->second);
2831         
2832         // Start with the second & third category.
2833         // (Category Two, Category Three).
2834         
2835         TestFileIter = TestFile.CategoriesList.find(1);
2836         ASSERT_NE(TestFile.CategoriesList.end(), TestFileIter);
2837         ASSERT_EQ("Category Two", TestFileIter->second);
2838         
2839         TestFileIter = TestFile.CategoriesList.find(2);
2840         ASSERT_NE(TestFile.CategoriesList.end(), TestFileIter);
2841         ASSERT_EQ("Category Three", TestFileIter->second);
2843         // Check the TYPE section.
2844         
2845         TestFileIter = TestFile.CategoriesListType.find(1);
2846         ASSERT_NE(TestFile.CategoriesListType.end(), TestFileIter);
2847         ASSERT_EQ("home", TestFileIter->second);
2849         TestFileIter = TestFile.CategoriesListType.find(2);
2850         ASSERT_NE(TestFile.CategoriesListType.end(), TestFileIter);
2851         ASSERT_EQ("home", TestFileIter->second);
2852         
2853         // Check the ALTID section.
2854         
2855         TestFileIter = TestFile.CategoriesListAltID.find(1);
2856         ASSERT_NE(TestFile.CategoriesListAltID.end(), TestFileIter);
2857         ASSERT_EQ("44", TestFileIter->second);
2859         TestFileIter = TestFile.CategoriesListAltID.find(2);
2860         ASSERT_NE(TestFile.CategoriesListAltID.end(), TestFileIter);
2861         ASSERT_EQ("44", TestFileIter->second);
2862         
2863         // Check the PID section.
2864         
2865         TestFileIter = TestFile.CategoriesListPID.find(1);
2866         ASSERT_NE(TestFile.CategoriesListPID.end(), TestFileIter);
2867         ASSERT_EQ("46", TestFileIter->second);
2869         TestFileIter = TestFile.CategoriesListPID.find(2);
2870         ASSERT_NE(TestFile.CategoriesListPID.end(), TestFileIter);
2871         ASSERT_EQ("46", TestFileIter->second);
2872         
2873         // Check the LANGUAGE section.
2874         
2875         TestFileIter = TestFile.CategoriesListLanguage.find(1);
2876         ASSERT_NE(TestFile.CategoriesListLanguage.end(), TestFileIter);
2877         ASSERT_EQ("kw", TestFileIter->second);
2878         
2879         TestFileIter = TestFile.CategoriesListLanguage.find(2);
2880         ASSERT_NE(TestFile.CategoriesListLanguage.end(), TestFileIter);
2881         ASSERT_EQ("kw", TestFileIter->second);
2882         
2883         // Check the PREF section.
2884         
2885         TestFileIntIter = TestFile.CategoriesListPref.find(1);
2886         ASSERT_NE(TestFile.CategoriesListPref.end(), TestFileIntIter);
2887         ASSERT_EQ(48, TestFileIntIter->second);
2888         
2889         TestFileIntIter = TestFile.CategoriesListPref.find(2);
2890         ASSERT_NE(TestFile.CategoriesListPref.end(), TestFileIntIter);
2891         ASSERT_EQ(48, TestFileIntIter->second);
2892         
2893         // Check the extra tokens.
2894         
2895         TestFileIter = TestFile.CategoriesListTokens.find(1);
2896         ASSERT_NE(TestFile.CategoriesListTokens.end(), TestFileIter);
2897         ASSERT_EQ("TAC=CAT", TestFileIter->second);
2899         TestFileIter = TestFile.CategoriesListTokens.find(2);
2900         ASSERT_NE(TestFile.CategoriesListTokens.end(), TestFileIter);
2901         ASSERT_EQ("TAC=CAT", TestFileIter->second);
2903         // Start with the third, fourth & fifth category.
2904         // (Category Three,Category Four,Category Five).
2905         
2906         TestFileIter = TestFile.CategoriesList.find(3);
2907         ASSERT_NE(TestFile.CategoriesList.end(), TestFileIter);
2908         ASSERT_EQ("Category Four", TestFileIter->second.ToStdString());
2909         
2910         TestFileIter = TestFile.CategoriesList.find(4);
2911         ASSERT_NE(TestFile.CategoriesList.end(), TestFileIter);
2912         ASSERT_EQ("Category Five", TestFileIter->second.ToStdString());
2914         TestFileIter = TestFile.CategoriesList.find(5);
2915         ASSERT_NE(TestFile.CategoriesList.end(), TestFileIter);
2916         ASSERT_EQ("Category Six", TestFileIter->second);
2918         // Check the TYPE section.
2919         
2920         TestFileIter = TestFile.CategoriesListType.find(3);
2921         ASSERT_NE(TestFile.CategoriesListType.end(), TestFileIter);
2922         ASSERT_EQ("work", TestFileIter->second);
2924         TestFileIter = TestFile.CategoriesListType.find(4);
2925         ASSERT_NE(TestFile.CategoriesListType.end(), TestFileIter);
2926         ASSERT_EQ("work", TestFileIter->second);
2927         
2928         TestFileIter = TestFile.CategoriesListType.find(5);
2929         ASSERT_NE(TestFile.CategoriesListType.end(), TestFileIter);
2930         ASSERT_EQ("work", TestFileIter->second);
2931         
2932         // Check the ALTID section.
2933         
2934         TestFileIter = TestFile.CategoriesListAltID.find(3);
2935         ASSERT_NE(TestFile.CategoriesListAltID.end(), TestFileIter);
2936         ASSERT_EQ("84", TestFileIter->second);
2938         TestFileIter = TestFile.CategoriesListAltID.find(4);
2939         ASSERT_NE(TestFile.CategoriesListAltID.end(), TestFileIter);
2940         ASSERT_EQ("84", TestFileIter->second);
2942         TestFileIter = TestFile.CategoriesListAltID.find(5);
2943         ASSERT_NE(TestFile.CategoriesListAltID.end(), TestFileIter);
2944         ASSERT_EQ("84", TestFileIter->second);
2945         
2946         // Check the PID section.
2947         
2948         TestFileIter = TestFile.CategoriesListPID.find(3);
2949         ASSERT_NE(TestFile.CategoriesListPID.end(), TestFileIter);
2950         ASSERT_EQ("86", TestFileIter->second);
2952         TestFileIter = TestFile.CategoriesListPID.find(4);
2953         ASSERT_NE(TestFile.CategoriesListPID.end(), TestFileIter);
2954         ASSERT_EQ("86", TestFileIter->second);
2956         TestFileIter = TestFile.CategoriesListPID.find(5);
2957         ASSERT_NE(TestFile.CategoriesListPID.end(), TestFileIter);
2958         ASSERT_EQ("86", TestFileIter->second);
2959         
2960         // Check the LANGUAGE section.
2961         
2962         TestFileIter = TestFile.CategoriesListLanguage.find(3);
2963         ASSERT_NE(TestFile.CategoriesListLanguage.end(), TestFileIter);
2964         ASSERT_EQ("kw", TestFileIter->second);
2965         
2966         TestFileIter = TestFile.CategoriesListLanguage.find(4);
2967         ASSERT_NE(TestFile.CategoriesListLanguage.end(), TestFileIter);
2968         ASSERT_EQ("kw", TestFileIter->second);
2969         
2970         TestFileIter = TestFile.CategoriesListLanguage.find(5);
2971         ASSERT_NE(TestFile.CategoriesListLanguage.end(), TestFileIter);
2972         ASSERT_EQ("kw", TestFileIter->second);
2973         
2974         // Check the PREF section.
2975         
2976         TestFileIntIter = TestFile.CategoriesListPref.find(3);
2977         ASSERT_NE(TestFile.CategoriesListPref.end(), TestFileIntIter);
2978         ASSERT_EQ(88, TestFileIntIter->second);
2979         
2980         TestFileIntIter = TestFile.CategoriesListPref.find(4);
2981         ASSERT_NE(TestFile.CategoriesListPref.end(), TestFileIntIter);
2982         ASSERT_EQ(88, TestFileIntIter->second);
2983         
2984         TestFileIntIter = TestFile.CategoriesListPref.find(5);
2985         ASSERT_NE(TestFile.CategoriesListPref.end(), TestFileIntIter);
2986         ASSERT_EQ(88, TestFileIntIter->second);
2987         
2988         // Check the extra tokens.
2989         
2990         TestFileIter = TestFile.CategoriesListTokens.find(3);
2991         ASSERT_NE(TestFile.CategoriesListTokens.end(), TestFileIter);
2992         ASSERT_EQ("AAA=BBB", TestFileIter->second);
2994         TestFileIter = TestFile.CategoriesListTokens.find(4);
2995         ASSERT_NE(TestFile.CategoriesListTokens.end(), TestFileIter);
2996         ASSERT_EQ("AAA=BBB", TestFileIter->second);
2998         TestFileIter = TestFile.CategoriesListTokens.find(4);
2999         ASSERT_NE(TestFile.CategoriesListTokens.end(), TestFileIter);
3000         ASSERT_EQ("AAA=BBB", TestFileIter->second);
3004 TEST(ContactLoad, PhotoTests){
3006         ContactDataObject TestFile;
3008         // Check that the vCard 4.0 file loads OK.
3010         ASSERT_EQ(CONTACTLOAD_OK, TestFile.LoadFile("LoadCheck-Load4.vcf"));
3012         std::map<int,std::string>::iterator TestStrIter;
3013         std::map<int,wxString>::iterator TestFileIter;
3014         std::map<int,int>::iterator TestFileIntIter;    
3016         // Start with the first photo.
3017         
3018         TestStrIter = TestFile.PicturesList.find(0);
3019         ASSERT_NE(TestFile.PicturesList.end(), TestStrIter);
3020         ASSERT_EQ("iVBORw0KGgoAAAANSUhEUgAAABEAAAAKCAIAAADdHiL1AAAAJUlEQVQoz2NkwAb+//8PYTAyMmLKMjGQDuilhxHudBrbM8zCDQCxHQkPeaUvawAAAABJRU5ErkJggg==", 
3021                 TestStrIter->second);
3023         // Check that it has the correct encoding.
3024         
3025         TestFileIter = TestFile.PicturesListPicEncType.find(0);
3026         ASSERT_NE(TestFile.PicturesListPicEncType.end(), TestFileIter);
3027         ASSERT_EQ("base64", TestFileIter->second);
3028         
3029         // Check that it has the correct image type.
3031         TestFileIter = TestFile.PicturesListPictureType.find(0);
3032         ASSERT_NE(TestFile.PicturesListPictureType.end(), TestFileIter);
3033         ASSERT_EQ("image/png", TestFileIter->second);
3034         
3035         // Check the ALTID section.
3036         
3037         TestFileIter = TestFile.PicturesListAltID.find(0);
3038         ASSERT_NE(TestFile.PicturesListAltID.end(), TestFileIter);
3039         ASSERT_EQ("70", TestFileIter->second);
3040         
3041         // Check the PID section.
3042         
3043         TestFileIter = TestFile.PicturesListPID.find(0);
3044         ASSERT_NE(TestFile.PicturesListPID.end(), TestFileIter);
3045         ASSERT_EQ("71", TestFileIter->second);
3046         
3047         // Check the TYPE section.
3048         
3049         TestFileIter = TestFile.PicturesListType.find(0);
3050         ASSERT_EQ(TestFile.PicturesListType.end(), TestFileIter);
3051         
3052         // Check the MEDIATYPE section.
3053         
3054         TestFileIter = TestFile.PicturesListMediatype.find(0);
3055         ASSERT_NE(TestFile.PicturesListMediatype.end(), TestFileIter);
3056         ASSERT_EQ("image/png", TestFileIter->second);
3057         
3058         // Check the PREF section.
3059         
3060         TestFileIntIter = TestFile.PicturesListPref.find(0);
3061         ASSERT_NE(TestFile.PicturesListPref.end(), TestFileIntIter);
3062         ASSERT_EQ(72, TestFileIntIter->second);
3063         
3064         // Check the extra tokens.
3065         
3066         TestFileIter = TestFile.PicturesListTokens.find(0);
3067         ASSERT_NE(TestFile.PicturesListTokens.end(), TestFileIter);
3068         ASSERT_EQ("MEEP=MOO", TestFileIter->second);
3069         
3070         // Start with the second photo.
3071         
3072         TestStrIter = TestFile.PicturesList.find(1);
3073         ASSERT_NE(TestFile.PicturesList.end(), TestStrIter);
3074         ASSERT_EQ("iVBORw0KGgoAAAANSUhEUgAAABEAAAAKCAIAAADdHiL1AAAAHklEQVQoz2NkYPjPgAr+owkwMqIpYGIgHYzqGdx6AAKNAxMN5P6+AAAAAElFTkSuQmCC", 
3075                 TestStrIter->second);
3077         // Check that it has the correct encoding.
3078         
3079         TestFileIter = TestFile.PicturesListPicEncType.find(1);
3080         ASSERT_NE(TestFile.PicturesListPicEncType.end(), TestFileIter);
3081         ASSERT_EQ("base64", TestFileIter->second);
3082         
3083         // Check that it has the correct image type.
3085         TestFileIter = TestFile.PicturesListPictureType.find(1);
3086         ASSERT_NE(TestFile.PicturesListPictureType.end(), TestFileIter);
3087         ASSERT_EQ("image/png", TestFileIter->second);
3088         
3089         // Check the ALTID section.
3090         
3091         TestFileIter = TestFile.PicturesListAltID.find(1);
3092         ASSERT_NE(TestFile.PicturesListAltID.end(), TestFileIter);
3093         ASSERT_EQ("20", TestFileIter->second);
3094         
3095         // Check the PID section.
3096         
3097         TestFileIter = TestFile.PicturesListPID.find(1);
3098         ASSERT_NE(TestFile.PicturesListPID.end(), TestFileIter);
3099         ASSERT_EQ("21", TestFileIter->second);
3100         
3101         // Check the TYPE section.
3102         
3103         TestFileIter = TestFile.PicturesListType.find(1);
3104         ASSERT_NE(TestFile.PicturesListType.end(), TestFileIter);
3105         ASSERT_EQ("home", TestFileIter->second);
3106         
3107         // Check the MEDIATYPE section.
3108         
3109         TestFileIter = TestFile.PicturesListMediatype.find(1);
3110         ASSERT_NE(TestFile.PicturesListMediatype.end(), TestFileIter);
3111         ASSERT_EQ("image/png", TestFileIter->second);
3112         
3113         // Check the PREF section.
3114         
3115         TestFileIntIter = TestFile.PicturesListPref.find(1);
3116         ASSERT_NE(TestFile.PicturesListPref.end(), TestFileIntIter);
3117         ASSERT_EQ(22, TestFileIntIter->second);
3118         
3119         // Check the extra tokens.
3120         
3121         TestFileIter = TestFile.PicturesListTokens.find(1);
3122         ASSERT_NE(TestFile.PicturesListTokens.end(), TestFileIter);
3123         ASSERT_EQ("BEEP=BOOP", TestFileIter->second);
3125         // Start with the second photo.
3126         
3127         TestStrIter = TestFile.PicturesList.find(2);
3128         ASSERT_NE(TestFile.PicturesList.end(), TestStrIter);
3129         ASSERT_EQ("iVBORw0KGgoAAAANSUhEUgAAABEAAAAKCAIAAADdHiL1AAAAIElEQVQoz2MUm53EgApepsxF4XfaoylgYiAdjOoZ3HoAeuQD2WdxRzcAAAAASUVORK5CYII=", 
3130                 TestStrIter->second);
3132         // Check that it has the correct encoding.
3133         
3134         TestFileIter = TestFile.PicturesListPicEncType.find(2);
3135         ASSERT_NE(TestFile.PicturesListPicEncType.end(), TestFileIter);
3136         ASSERT_EQ("base64", TestFileIter->second);
3137         
3138         // Check that it has the correct image type.
3140         TestFileIter = TestFile.PicturesListPictureType.find(2);
3141         ASSERT_NE(TestFile.PicturesListPictureType.end(), TestFileIter);
3142         ASSERT_EQ("image/png", TestFileIter->second);
3143         
3144         // Check the ALTID section.
3145         
3146         TestFileIter = TestFile.PicturesListAltID.find(2);
3147         ASSERT_NE(TestFile.PicturesListAltID.end(), TestFileIter);
3148         ASSERT_EQ("90", TestFileIter->second);
3149         
3150         // Check the PID section.
3151         
3152         TestFileIter = TestFile.PicturesListPID.find(2);
3153         ASSERT_NE(TestFile.PicturesListPID.end(), TestFileIter);
3154         ASSERT_EQ("91", TestFileIter->second);
3155         
3156         // Check the TYPE section.
3157         
3158         TestFileIter = TestFile.PicturesListType.find(2);
3159         ASSERT_NE(TestFile.PicturesListType.end(), TestFileIter);
3160         ASSERT_EQ("work", TestFileIter->second);
3161         
3162         // Check the MEDIATYPE section.
3163         
3164         TestFileIter = TestFile.PicturesListMediatype.find(2);
3165         ASSERT_NE(TestFile.PicturesListMediatype.end(), TestFileIter);
3166         ASSERT_EQ("image/png", TestFileIter->second);
3167         
3168         // Check the PREF section.
3169         
3170         TestFileIntIter = TestFile.PicturesListPref.find(2);
3171         ASSERT_NE(TestFile.PicturesListPref.end(), TestFileIntIter);
3172         ASSERT_EQ(92, TestFileIntIter->second);
3173         
3174         // Check the extra tokens.
3175         
3176         TestFileIter = TestFile.PicturesListTokens.find(2);
3177         ASSERT_NE(TestFile.PicturesListTokens.end(), TestFileIter);
3178         ASSERT_EQ("PHOTO=YUP", TestFileIter->second);
3179         
3182 TEST(ContactLoad, LogoTests){
3184         ContactDataObject TestFile;
3186         // Check that the vCard 4.0 file loads OK.
3188         ASSERT_EQ(CONTACTLOAD_OK, TestFile.LoadFile("LoadCheck-Load4.vcf"));
3190         std::map<int,std::string>::iterator TestStrIter;
3191         std::map<int,wxString>::iterator TestFileIter;
3192         std::map<int,int>::iterator TestFileIntIter;    
3194         // Start with the first photo.
3195         
3196         TestStrIter = TestFile.LogosList.find(0);
3197         ASSERT_NE(TestFile.LogosList.end(), TestStrIter);
3198         ASSERT_EQ("iVBORw0KGgoAAAANSUhEUgAAABEAAAAKCAIAAADdHiL1AAAAJUlEQVQoz2NkwAb+//8PYTAyMmLKMjGQDuilhxHudBrbM8zCDQCxHQkPeaUvawAAAABJRU5ErkJggg==", 
3199                 TestStrIter->second);
3201         // Check that it has the correct encoding.
3202         
3203         TestFileIter = TestFile.LogosListPicEncType.find(0);
3204         ASSERT_NE(TestFile.LogosListPicEncType.end(), TestFileIter);
3205         ASSERT_EQ("base64", TestFileIter->second);
3206         
3207         // Check that it has the correct image type.
3209         TestFileIter = TestFile.LogosListPictureType.find(0);
3210         ASSERT_NE(TestFile.LogosListPictureType.end(), TestFileIter);
3211         ASSERT_EQ("image/png", TestFileIter->second);
3212         
3213         // Check the ALTID section.
3214         
3215         TestFileIter = TestFile.LogosListAltID.find(0);
3216         ASSERT_NE(TestFile.LogosListAltID.end(), TestFileIter);
3217         ASSERT_EQ("70", TestFileIter->second);
3218         
3219         // Check the PID section.
3220         
3221         TestFileIter = TestFile.LogosListPID.find(0);
3222         ASSERT_NE(TestFile.LogosListPID.end(), TestFileIter);
3223         ASSERT_EQ("71", TestFileIter->second);
3224         
3225         // Check the TYPE section.
3226                 
3227         // Check the MEDIATYPE section.
3228         
3229         TestFileIter = TestFile.LogosListMediatype.find(0);
3230         ASSERT_NE(TestFile.LogosListMediatype.end(), TestFileIter);
3231         ASSERT_EQ("image/png", TestFileIter->second);
3232         
3233         // Check the PREF section.
3234         
3235         TestFileIntIter = TestFile.LogosListPref.find(0);
3236         ASSERT_NE(TestFile.LogosListPref.end(), TestFileIntIter);
3237         ASSERT_EQ(72, TestFileIntIter->second);
3238         
3239         // Check the extra tokens.
3240         
3241         TestFileIter = TestFile.LogosListTokens.find(0);
3242         ASSERT_NE(TestFile.LogosListTokens.end(), TestFileIter);
3243         ASSERT_EQ("MEEP=MOO", TestFileIter->second);
3244         
3245         // Start with the second photo.
3246         
3247         TestStrIter = TestFile.LogosList.find(1);
3248         ASSERT_NE(TestFile.LogosList.end(), TestStrIter);
3249         ASSERT_EQ("iVBORw0KGgoAAAANSUhEUgAAABEAAAAKCAIAAADdHiL1AAAAHklEQVQoz2NkYPjPgAr+owkwMqIpYGIgHYzqGdx6AAKNAxMN5P6+AAAAAElFTkSuQmCC", 
3250                 TestStrIter->second);
3252         // Check that it has the correct encoding.
3253         
3254         TestFileIter = TestFile.LogosListPicEncType.find(1);
3255         ASSERT_NE(TestFile.LogosListPicEncType.end(), TestFileIter);
3256         ASSERT_EQ("base64", TestFileIter->second);
3257         
3258         // Check that it has the correct image type.
3260         TestFileIter = TestFile.LogosListPictureType.find(1);
3261         ASSERT_NE(TestFile.LogosListPictureType.end(), TestFileIter);
3262         ASSERT_EQ("image/png", TestFileIter->second);
3263         
3264         // Check the ALTID section.
3265         
3266         TestFileIter = TestFile.LogosListAltID.find(1);
3267         ASSERT_NE(TestFile.LogosListAltID.end(), TestFileIter);
3268         ASSERT_EQ("20", TestFileIter->second);
3269         
3270         // Check the PID section.
3271         
3272         TestFileIter = TestFile.LogosListPID.find(1);
3273         ASSERT_NE(TestFile.LogosListPID.end(), TestFileIter);
3274         ASSERT_EQ("21", TestFileIter->second);
3276         // Check the TYPE section.
3277         
3278         TestFileIter = TestFile.LogosListType.find(1);
3279         ASSERT_NE(TestFile.LogosListType.end(), TestFileIter);
3280         ASSERT_EQ("home", TestFileIter->second);
3281         
3282         // Check the MEDIATYPE section.
3283         
3284         TestFileIter = TestFile.LogosListMediatype.find(1);
3285         ASSERT_NE(TestFile.LogosListMediatype.end(), TestFileIter);
3286         ASSERT_EQ("image/png", TestFileIter->second);
3287         
3288         // Check the PREF section.
3289         
3290         TestFileIntIter = TestFile.LogosListPref.find(1);
3291         ASSERT_NE(TestFile.LogosListPref.end(), TestFileIntIter);
3292         ASSERT_EQ(22, TestFileIntIter->second);
3293         
3294         // Check the extra tokens.
3295         
3296         TestFileIter = TestFile.LogosListTokens.find(1);
3297         ASSERT_NE(TestFile.LogosListTokens.end(), TestFileIter);
3298         ASSERT_EQ("BEEP=BOOP", TestFileIter->second);
3300         // Start with the second photo.
3301         
3302         TestStrIter = TestFile.LogosList.find(2);
3303         ASSERT_NE(TestFile.LogosList.end(), TestStrIter);
3304         ASSERT_EQ("iVBORw0KGgoAAAANSUhEUgAAABEAAAAKCAIAAADdHiL1AAAAIElEQVQoz2MUm53EgApepsxF4XfaoylgYiAdjOoZ3HoAeuQD2WdxRzcAAAAASUVORK5CYII=", 
3305                 TestStrIter->second);
3307         // Check that it has the correct encoding.
3308         
3309         TestFileIter = TestFile.LogosListPicEncType.find(2);
3310         ASSERT_NE(TestFile.LogosListPicEncType.end(), TestFileIter);
3311         ASSERT_EQ("base64", TestFileIter->second);
3312         
3313         // Check that it has the correct image type.
3315         TestFileIter = TestFile.LogosListPictureType.find(2);
3316         ASSERT_NE(TestFile.LogosListPictureType.end(), TestFileIter);
3317         ASSERT_EQ("image/png", TestFileIter->second);
3318         
3319         // Check the ALTID section.
3320         
3321         TestFileIter = TestFile.LogosListAltID.find(2);
3322         ASSERT_NE(TestFile.LogosListAltID.end(), TestFileIter);
3323         ASSERT_EQ("90", TestFileIter->second);
3324         
3325         // Check the PID section.
3326         
3327         TestFileIter = TestFile.LogosListPID.find(2);
3328         ASSERT_NE(TestFile.LogosListPID.end(), TestFileIter);
3329         ASSERT_EQ("91", TestFileIter->second);
3330         
3331         // Check the TYPE section.
3332         
3333         TestFileIter = TestFile.LogosListType.find(2);
3334         ASSERT_NE(TestFile.LogosListType.end(), TestFileIter);
3335         ASSERT_EQ("work", TestFileIter->second);
3336         
3337         // Check the MEDIATYPE section.
3338         
3339         TestFileIter = TestFile.LogosListMediatype.find(2);
3340         ASSERT_NE(TestFile.LogosListMediatype.end(), TestFileIter);
3341         ASSERT_EQ("image/png", TestFileIter->second);
3342         
3343         // Check the PREF section.
3344         
3345         TestFileIntIter = TestFile.LogosListPref.find(2);
3346         ASSERT_NE(TestFile.LogosListPref.end(), TestFileIntIter);
3347         ASSERT_EQ(92, TestFileIntIter->second);
3348         
3349         // Check the extra tokens.
3350         
3351         TestFileIter = TestFile.LogosListTokens.find(2);
3352         ASSERT_NE(TestFile.LogosListTokens.end(), TestFileIter);
3353         ASSERT_EQ("LOGO=YUP", TestFileIter->second);
3354         
3357 TEST(ContactLoad, SoundTests){
3359         // Setup the sound files first.
3361         ContactDataObject TestFile;
3363         // Check that the vCard 4.0 file loads OK.
3365         ASSERT_EQ(CONTACTLOAD_OK, TestFile.LoadFile("LoadCheck-Load4.vcf"));
3367         std::map<int,std::string>::iterator TestStrIter;
3368         std::map<int,wxString>::iterator TestFileIter;
3369         std::map<int,int>::iterator TestFileIntIter;
3371         // Sound File A: Morse code X.
3373         std::string SoundA = "T2dnUwACAAAAAAAAAAAqlr5kAAAAAPjSH5UBHgF2b3"
3374  "JiaXMAAAAAAUSsAAAAAAAAgLsAAAAAAAC4AU9nZ1MAAAAAAAAAAAAAKpa+ZAEAAAAJVIuhDzz//"
3375  "///////////////MgN2b3JiaXMsAAAAWGlwaC5PcmcgbGliVm9yYmlzIEkgMjAxNTAxMDUgKOKb"
3376  "hOKbhOKbhOKbhCkAAAAAAQV2b3JiaXMfQkNWAQAAAQAYY1QpRplS0kqJGXOUMUaZYpJKiaWEFkJ"
3377  "InXMUU6k515xrrLm1IIQQGlNQKQWZUo5SaRljkCkFmVIQS0kldBI6J51jEFtJwdaYa4tBthyEDZ"
3378  "pSTCnElFKKQggZU4wpxZRSSkIHJXQOOuYcU45KKEG4nHOrtZaWY4updJJK5yRkTEJIKYWSSgelU"
3379  "05CSDWW1lIpHXNSUmpB6CCEEEK2IIQNgtCQVQAAAQDAQBAasgoAUAAAEIqhGIoChIasAgAyAAAE"
3380  "oCiO4iiOIzmSY0kWEBqyCgAAAgAQAADAcBRJkRTJsSRL0ixL00RRVX3VNlVV9nVd13Vd13UgNGQ"
3381  "VAAABAEBIp5mlGiDCDGQYCA1ZBQAgAAAARijCEANCQ1YBAAABAABiKDmIJrTmfHOOg2Y5aCrF5n"
3382  "RwItXmSW4q5uacc845J5tzxjjnnHOKcmYxaCa05pxzEoNmKWgmtOacc57E5kFrqrTmnHPGOaeDc"
3383  "UYY55xzmrTmQWo21uaccxa0pjlqLsXmnHMi5eZJbS7V5pxzzjnnnHPOOeecc6oXp3NwTjjnnHOi"
3384  "9uZabkIX55xzPhmne3NCOOecc84555xzzjnnnHOC0JBVAAAQAABBGDaGcacgSJ+jgRhFiGnIpAf"
3385  "do8MkaAxyCqlHo6ORUuoglFTGSSmdIDRkFQAACAAAIYQUUkghhRRSSCGFFFKIIYYYYsgpp5yCCi"
3386  "qppKKKMsoss8wyyyyzzDLrsLPOOuwwxBBDDK20EktNtdVYY62555xrDtJaaa211koppZRSSikID"
3387  "VkFAIAAABAIGWSQQUYhhRRSiCGmnHLKKaigAkJDVgEAgAAAAgAAADzJc0RHdERHdERHdERHdETH"
3388  "czxHlERJlERJtEzL1ExPFVXVlV1b1mXd9m1hF3bd93Xf93Xj14VhWZZlWZZlWZZlWZZlWZZlWYL"
3389  "QkFUAAAgAAIAQQgghhRRSSCGlGGPMMeegk1BCIDRkFQAACAAgAAAAwFEcxXEkR3IkyZIsSZM0S7"
3390  "M8zdM8TfREURRN01RFV3RF3bRF2ZRN13RN2XRVWbVdWbZt2dZtX5Zt3/d93/d93/d93/d93/d1H"
3391  "QgNWQUASAAA6EiOpEiKpEiO4ziSJAGhIasAABkAAAEAKIqjOI7jSJIkSZakSZ7lWaJmaqZneqqo"
3392  "AqEhqwAAQAAAAQAAAAAAKJriKabiKaLiOaIjSqJlWqKmaq4om7Lruq7ruq7ruq7ruq7ruq7ruq7"
3393  "ruq7ruq7ruq7ruq7ruq7rui4QGrIKAJAAANCRHMmRHEmRFEmRHMkBQkNWAQAyAAACAHAMx5AUyb"
3394  "EsS9M8zdM8TfRET/RMTxVd0QVCQ1YBAIAAAAIAAAAAADAkw1IsR3M0SZRUS7VUTbVUSxVVT1VVV"
3395  "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVTVN0zRNIDRkJQAABADAYo3B5SAhJSXl3hDC"
3396  "EJOeMSYhtV4hBJGS3jEGFYOeMqIMct5C4xCDHggNWREARAEAAMYgxxBzyDlHqZMSOeeodJQa5xy"
3397  "ljlJnKcWYYs0oldhSrI1zjlJHraOUYiwtdpRSjanGAgAAAhwAAAIshEJDVgQAUQAAhDFIKaQUYo"
3398  "w5p5xDjCnnmHOGMeYcc44556B0UirnnHROSsQYc445p5xzUjonlXNOSiehAACAAAcAgAALodCQF"
3399  "QFAnACAQZI8T/I0UZQ0TxRFU3RdUTRd1/I81fRMU1U90VRVU1Vt2VRVWZY8zzQ901RVzzRV1VRV"
3400  "WTZVVZZFVdVt03V123RV3ZZt2/ddWxZ2UVVt3VRd2zdV1/Zd2fZ9WdZ1Y/I8VfVM03U903Rl1XV"
3401  "tW3VdXfdMU5ZN15Vl03Vt25VlXXdl2fc103Rd01Vl2XRd2XZlV7ddWfZ903WF35VlX1dlWRh2Xf"
3402  "eFW9eV5XRd3VdlVzdWWfZ9W9eF4dZ1YZk8T1U903RdzzRdV3VdX1dd19Y105Rl03Vt2VRdWXZl2"
3403  "fddV9Z1zzRl2XRd2zZdV5ZdWfZ9V5Z13XRdX1dlWfhVV/Z1WdeV4dZt4Tdd1/dVWfaFV5Z14dZ1"
3404  "Ybl1XRg+VfV9U3aF4XRl39eF31luXTiW0XV9YZVt4VhlWTl+4ViW3feVZXRdX1ht2RhWWRaGX/i"
3405  "d5fZ943h1XRlu3efMuu8Mx++k+8rT1W1jmX3dWWZfd47hGDq/8OOpqq+brisMpywLv+3rxrP7vr"
3406  "KMruv7qiwLvyrbwrHrvvP8vrAso+z6wmrLwrDatjHcvm4sv3Acy2vryjHrvlG2dXxfeArD83R1X"
3407  "XlmXcf2dXTjRzh+ygAAgAEHAIAAE8pAoSErAoA4AQCPJImiZFmiKFmWKIqm6LqiaLqupGmmqWme"
3408  "aVqaZ5qmaaqyKZquLGmaaVqeZpqap5mmaJqua5qmrIqmKcumasqyaZqy7LqybbuubNuiacqyaZq"
3409  "ybJqmLLuyq9uu7Oq6pFmmqXmeaWqeZ5qmasqyaZquq3meanqeaKqeKKqqaqqqraqqLFueZ5qa6K"
3410  "mmJ4qqaqqmrZqqKsumqtqyaaq2bKqqbbuq7Pqybeu6aaqybaqmLZuqatuu7OqyLNu6L2maaWqeZ"
3411  "5qa55mmaZqybJqqK1uep5qeKKqq5ommaqqqLJumqsqW55mqJ4qq6omea5qqKsumatqqaZq2bKqq"
3412  "LZumKsuubfu+68qybqqqbJuqauumasqybMu+78qq7oqmKcumqtqyaaqyLduy78uyrPuiacqyaaq"
3413  "ybaqqLsuybRuzbPu6aJqybaqmLZuqKtuyLfu6LNu678qub6uqrOuyLfu67vqucOu6MLyybPuqrP"
3414  "q6K9u6b+sy2/Z9RNOUZVM1bdtUVVl2Zdn2Zdv2fdE0bVtVVVs2TdW2ZVn2fVm2bWE0Tdk2VVXWT"
3415  "dW0bVmWbWG2ZeF2Zdm3ZVv2ddeVdV/XfePXZd3murLty7Kt+6qr+rbu+8Jw667wCgAAGHAAAAgw"
3416  "oQwUGrISAIgCAACMYYwxCI1SzjkHoVHKOecgZM5BCCGVzDkIIZSSOQehlJQy5yCUklIIoZSUWgs"
3417  "hlJRSawUAABQ4AAAE2KApsThAoSErAYBUAACD41iW55miatqyY0meJ4qqqaq27UiW54miaaqqbV"
3418  "ueJ4qmqaqu6+ua54miaaqq6+q6aJqmqaqu67q6Lpqiqaqq67qyrpumqqquK7uy7Oumqqqq68quL"
3419  "PvCqrquK8uybevCsKqu68qybNu2b9y6ruu+7/vCka3rui78wjEMRwEA4AkOAEAFNqyOcFI0Flho"
3420  "yEoAIAMAgDAGIYMQQgYhhJBSSiGllBIAADDgAAAQYEIZKDRkRQAQJwAAGEMppJRSSimllFJKKaW"
3421  "UUkoppZRSSimllFJKKaWUUkgppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllF"
3422  "JKKaWUUkqppJRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSS"
3423  "imllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkop"
3424  "pZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaW"
3425  "UUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllF"
3426  "JKKaWUUkoplVJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKK"
3427  "aWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSCgCQinAAkHowoQwUGrISAEgF"
3428  "AACMUUopxpyDEDHmGGPQSSgpYsw5xhyUklLlHIQQUmktt8o5CCGk1FJtmXNSWosx5hgz56SkFFv"
3429  "NOYdSUoux5ppr7qS0VmuuNedaWqs115xzzbm0FmuuOdecc8sx15xzzjnnGHPOOeecc84FAOA0OA"
3430  "CAHtiwOsJJ0VhgoSErAYBUAAACGaUYc8456BBSjDnnHIQQIoUYc845CCFUjDnnHHQQQqgYc8w5C"
3431  "CGEkDnnHIQQQgghcw466CCEEEIHHYQQQgihlM5BCCGEEEooIYQQQgghhBA6CCGEEEIIIYQQQggh"
3432  "hFJKCCGEEEIJoZRQAABggQMAQIANqyOcFI0FFhqyEgAAAgCAHJagUs6EQY5Bjw1BylEzDUJMOdG"
3433  "ZYk5qMxVTkDkQnXQSGWpB2V4yCwAAgCAAIMAEEBggKPhCCIgxAABBiMwQCYVVsMCgDBoc5gHAA0"
3434  "SERACQmKBIu7iALgNc0MVdB0IIQhCCWBxAAQk4OOGGJ97whBucoFNU6iAAAAAAAAwA4AEA4KAAI"
3435  "iKaq7C4wMjQ2ODo8AgAAAAAABYA+AAAOD6AiIjmKiwuMDI0Njg6PAIAAAAAAAAAAICAgAAAAAAA"
3436  "QAAAAICAT2dnUwAAQIkAAAAAAAAqlr5kAgAAADGopCE+GQ8UFhsYGRoeHXZwbHNsbG55a3B1fkM"
3437  "UFxcWGx4ecmxve3ceFRcWGB0dHoBpbm1+NhUWFxcaIB+Ba3JycGW81iqhc4a/n6tYKBfmOuo7N4"
3438  "8b78moJ1YDvNgqywGA4ZHICiuTyTUPvNbFQUfDoqJW0btvwYzEZooqaha80Jmklw4w3XDamuIvQ"
3439  "58LOu+miGsDzFBd30/9hiXHZIs6HR7jiUgfWZnsKD36qnIBvFDe92q2IMJaedqhvCrWh2UDnU3X"
3440  "BoYmxE6ea9XXCdg0/63YnIlB/vwjD6Uk0XtiALxOzsGq84CkmPuVPfn+El4SCzFVvz561OEB5Ex"
3441  "YcpefTYAk+74vRV1xAYUX/yF6se8lcFQ+nxAAXFfpfvM/S5CC3T8pae02TUyXLTbmmJ6PO7JYlQ"
3442  "CaSz+CXeo6IYCQCJwUAIChlRNWgPlnGgCpotaB4y0/HGaAAVwoMNsfEIw7pevlyPCNFCrD328vi"
3443  "1XqO5vc1NsQ0snJJXa6wqlU3+VGmrhnjSWoc9faZKcBQ8ElKXQYHNdM49dyILyeZEUdmcMuQcGs"
3444  "bw0P/t4C3lvfqru0vkwPUhKcTwoAAovRNawA7gsAHA6IpX9KAKDR7DfPNJRzc+9EGLyRYVRP6yz"
3445  "CwJR7znDUpKNmFo3ddjcmCbWXfwK0NnyoJeyzOt84zB6iTzijQE5MCaZrbTrcOBr6baYeY1Fg9f"
3446  "4N3xgyAR5c3/KnrLlcB0oicFIAEKQc5rACONwGAAGAF2tMAEAJrILw4Kq8Enu0VaouaOcJDGRuX"
3447  "5jr/0J2ySBNfQM+kzXTdbczLHEJJo/LjXkijZUaJlKn+6cCOOfqKPWCHNhD2QnOXT8MWFe+r4Zu"
3448  "BR5cvyiHzL5MBS0JTicFAGAKysxhAZyPBUCMGVyJD4UAyaaJHxA3P1Fh7jkVF5N5Jn7h7yMH2dh"
3449  "7vF+HS0U94SMEhdmaHD0DvaffNP+GvCpG7m024RlftN7HvDtm2ETJgyvTjNwRpUZe4Rhwi1izX6"
3450  "ZuwgT+W98qh7Q+TQQlCQ4nBQCBCYdZAdyXAAAALL8aAYAUCMmNCmpGnk/LeU32fuXiBvx4R94II"
3451  "kSct+J6dnCxiGQWyT3XdIxnk8u0N1AqQ8QZNeJ+B8KPq3+FE+0gD29yk0W+Oa59lMBk9uEEnAHe"
3452  "Wz/VU8o8JoOWGpwUAASp5UaKCuBqCgAAYO75IADQKHbS5fHKXK/4iD9BxfPokqqBtKbA+Cw60+3"
3453  "oUSiL5krrs5fK6KGmCKuYjRkJ4VU6uFqw2rFF/LpjTjr8daBNtlHR//eNkkDT6+lo9AT+Wz+VrY"
3454  "y+TAdSAjhDwgWAQEo7YQVwPgQAxKiE/8QAgAIKlhYe9kcgMfNarZOrqVMlz7/woYJl9uYu7BmuS"
3455  "+b5N2baFJPtjvwB9yFLBB4RfErhBoUbFQmRUAQaEFVaO91z6hEypJ9EAVMfWP0RJv5b3yqHtL5M"
3456  "BSMZTpBwASBILVdOFEA/AIAYI7gvg0YANABbFGORCrsTz7m95SfuLc53u/DHrnLM4ZMsab6VrHo"
3457  "eX8QC2Tpfa1jf2O3ZwQkFjB73GCVPRLsiOBlsw0LsKzHB7MyOjMTlmsEbgZSftHw417v8zgzrWi"
3458  "weXN/yp4x5TAdGquCkACBIDXNYAdwXAYBDicXzRgCgPLtQmlAevZ4QPmcD6RbRlcfOVgSYbHgRS"
3459  "WXNWlE/wv3lfKT5byXZxD3Mt8X0rH2j4dLKyRFCzAd3FXanZW8GmK9lYt4koZGO6ExgBv5b31qH"
3460  "9LUMUMAJEi4ABKYyMrMA1hQAgMacbCgwALgPoOODgWVgiJgbKkP7VI74L2naeaYOVX7gVcg8qS5"
3461  "P/gIlk8r0ScnTj7Di2WKoYYkKVum4tK/COhxEYuQWWmvcllk0GTqb8HzUMvF6fXQe4gAe+z7sXd"
3462  "rsITc2GX/gGKDzt6cBgiYJRh0c5OE5jwxwDfCn4VfsJLlAen0SY/PID4HHrNfDqwfpFIi/2NOpO"
3463  "Y+if1xyUQSty4LcyfOAd8YeMWMXa7kTRYnn6Zpwq3WNdBqTXcmK5mahzKyqK5nfJ5SEoQkiWABe"
3464  "yP1No4RiNA4LhuEC55xzjj1nKZYCUUWA+2U/bVvtOPNr4/wcr45fDtM0oWrYbuo6HABY1lnWH4+"
3465  "14ueMdfjqJgsAwOO7MwcyGhqAZR1sXj0ans2qOQzbTRAJdyi8vgGAvYDzKjwpADAK7uRcxeTOwC"
3466  "8fUBsDt4BkbjEA5w2WyP33LF9KADeAGFWFgALuUdpiZtaOPYl2lLaYCDM1ic3M+hQmcZhqfKVx1"
3467  "ldyynt2EOAFFgASFFgAFJDAYqIA0AEKtNSB50UQ+uZqdf5nX+gByffpZAG0TuPxOaNhfx9zXIta"
3468  "P/UsOYzzQ7apAbxOw/Z5oQFJ9t15Wo/VXMxJmFgiDDoCvE7NwpnRgBS/2NstvH+9N+CXka34Lax"
3469  "MGUIrFsBKTuoxML6926z/Tuo5OjXMDVoaD2RT7Md3f2ECWF/4S2Jva2MmNjTfnideiv40tVNeB4"
3470  "Rh96NZ3/+fBEl3u6Kiob24e3QojZRBR6jmd1gSD7pLP+1T2jymgZQE55MCAJgkNcwAa7UF4OzcP"
3471  "n7y6k+LMkCSLBcCb+Ea6O32oM7pbrWTiSn1I3NV2Rp3WpaQnnSsPDoUVMlGXTJoWqJunQaTtObR"
3472  "RIPBQ0ATiz2ZI0NENRYwwoh23c5pbjpNTocZAijuPd5bP9VT6jymgpYCp5MCgEASTlgB3IcAQDg"
3473  "lHg0vAEDSWAIFA+ePwZH8nWGodEvSR0gCnfxfW8og7rnwMdaekE1c9PHwj+SBdCRuSxKUmLOMkY"
3474  "wcCjNGQZwcwnWlw0AT4YiftyjbMLvWJ6/gBB5c3/KHzHlMBC0RnE4KAAKLymgUwGCmAMABbvCaC"
3475  "QCIVJRkMgvBxKT91lAdiZ+6RJVGFikUcb3xMDFWmOuLSirETIV4WnM+HW3qFwpHc1YS0waKDEup"
3476  "CzcMEfJuS5tdpq6moU8tzXiuL6j3pZnCPR77PuxF6lrhA1MBjgH6Ny6mwVoszFEdEtC/eGYHlNY"
3477  "BML3iwqq76Ccc8PSMwuhVLjaLTxzzeUdwLOX9FkyQAFm7qtjoLLv5xvKi9HJk682tn9sMvHtPE4"
3478  "6YLi5HkTlCGNWTlQdOhFrrug9J9XDnocPlHzW16TCXnIjHA37I3cf6v1pB/OeW9LGkbPUBDSNP2"
3479  "NO5B0ACE1kV8D3zz3GTj/yT1pu2/RNAiLwtWnp0Ma8prJ03AFIeb20dYJ0zqAVQb/ga6RoqRWC5"
3480  "SKHX13cprKl6AKe7TYHjrYM7+UEBflA27wT0rdYgwKDO6f2gAKpb5TYAlsj97yxfugIOAAAAqlA"
3481  "AgQ50wAIgABp4UABMTAAkpE5R+TpIIOgt1dc91Kq/Snsp6j0NtEzL3EcAK6ZK1cs39gx3uFJRwt"
3482  "dfmAC0Tr2xrRkYxriuN/rchFMJV1w9QkkLvE4h/3mVCRBK/VhzeGV9wBq6VlqsX0UAtE5tzI5NE"
3483  "IWMrWn1pxC+yqz4K0Td3tW2JzUllwA8UUT69WcFwKpmc6HtxQvibqZjJnADdJWn06aDCYThpXv2"
3484  "XWXWAPPm/5uWysfl++u3M34QC0pOpykELLpLX62ttLWbBUdJC6eTAoBIkUZmFtkT5wOAm/js/83"
3485  "G+un/7FuWSpIECH6aidQ5ppKzvmxzospWClcfsMkU2RrGjMJ3LJxWc8zUS8T5ZXO44lBHtJiG7B"
3486  "uWFcEbTJQyGqzs8/doP+WVR5/UPnCK4r6Ekbg0iFHhdBR6iV4H1/0Bvls/1FNKP+4CJX1wUgAAM"
3487  "zjMCmBNAyBpO4hPdpoCBJPORBxuY2pTK5BS8EJ297njrCtv7bLB2NZAcgI5H4lSSuyziXKRwUR9"
3488  "eL6dxlLFGPmOBGXoyitGfcm1ro8o1L0SG38CEosyDBML/ls/lVPa3F0HSgqAhAsAgUWZGVEB3GM"
3489  "AEB2IvVcNACgAlpT3cD18bLg4G3c63OGosklPIF6xauov56U09SAg14rhvawmTGe/GUob+AiD8e"
3490  "HyHlUo3LyJmb2bnJD2eJqUBmlifQx8Q09glk7zuAQe+97VVerqoccm4w8cA/T+ryJhkTCy6lQq5"
3491  "Kl/GQMwCgCPOyhVE7BXkUu2ggnKmjtq9R2tQFlUdEKxbApc7LHvJN5uD4C0NxrPk0YZYw4qPzi1"
3492  "zit0tx5RFq1dF4x6TDaLiZwFpI6s9SukCd4DPsi9y/rDhGKD1HAB9jydxsiyJGEVClx9PbmbCl/"
3493  "2y1cvFm/uBgwZZu2VNT1erxd7a5r7H2ZQxFu2wwFSXlf0ecJQTxow8MZ6Mc9tXoDWNYW3t5MCrK"
3494  "3rogTYvQm5NSccD7vhTd68tWIWu9UVDRcJDZ5zFfygAPCB052rqGETlsj97yhfugBuAECZVVWgA"
3495  "OD/799KADCZNWvWrADu7zge4NEA4MEDCSagDgD+jlcCgEUHgCcApFD/nwjSm/41y/Fi3p5DaZrJ"
3496  "+XE+rNA6mmj0xrJ/v+TffKJ1tOeP6LYhAKxOveJ5jK5/v+k9C9+N08tuaaG3qlYCtE5b7jnTXJx"
3497  "PQ+VIWJrb/jpQm5wNkwWsTv/Bwjocv42s7EpCg1/cnQG72u8ZxVHbADxPRMd7e3cBkuM8ypvKPJ"
3498  "X0xN1RVL03e4wyP+tqjh8MhF/3bb/9xBrEsB1fly716Jq5uMES5j/DszprMhiMB5pLX+2t1LWbB"
3499  "VtKIQUSLgBEUYQrswL0cxbgJvbt29c49Wf674EkSWIdAFxSnfGsY1ZL1mWhOB1cxRlutnUnWmIy"
3500  "2XKv5rajkLadLZt+2fyc7GIhtra7sS71y9JWM6vYQ3XzSKxAJslZw5Vj725VsLAQe+fCl68Iw6G"
3501  "IAnUA70FnAd5bP5VTaj+mAy0ZDicFAEgoJ8wCGB4EgCSJQAtnChA8UxlkuCUx0l6+RUJRepdPAI"
3502  "g9DkvGKElJaz60LpVMDBMnAttIDmw9eyFXwDqRgYGbQZOcCW1cMGLOxFGS752dpoOtCDVgnuUUs"
3503  "zMbHlzfKqfMuRuggRMkXAAILBecRAbwOQ4AAHifZQAegKAKQdopOPNHOBXnkzuDGKNDq4h1Worj"
3504  "ki3j/bSpYNuncohhJCpLhFoqPji4HlIqmQTZG1D8u+gpfvoA2Y7UOLWlQ/4cBewoiltdLvQdhaU"
3505  "E5fkOHlzf8lsZc5kMUjKcTgoAkKImyApgPhUAHE4gQteYADS7MPywjvohrzTnO1UT4rR88QoWQJ"
3506  "yfNNifZ9PBvORDWst74tx+mOcIYTwEZx1uNWqb/sREKVpcyZ5ZgZNMXNdYHJtBiJeULYXBIY210"
3507  "1b2tqAAHly/KLvMfkwGAzgpAAikMJ2gAnheBkAEcEdLJQBAKHYpYoX31DLV38un+1QtzfiBlVc8"
3508  "2YJiOqnbmMnJ9yEOp7nHFpIVmw7F8XIIh7DYZvLsMjXSiBTodCFFY47NyJ4aNc35JKhg3ksaU6y"
3509  "eAPvRAd5bP61T+jwOaMBJAQBMOIwKYNgKAADcyf+mAI1p4jaAavtSDPSSdKrZ0Zpyg+Y5yDfuf8"
3510  "2d0oSRmRBM3pWjyT2SHsVwPq2TIAdjnEGlHnavJ1EigorPc3IUlTIzG/qD1ZnHwFoAT2dnUwAE6"
3511  "p8AAAAAAAAqlr5kAwAAACfk1LQGdG9rcXd63ls/1YvUeVQGIQHckHABIHBJRWYZwOcIADEC8a3a"
3512  "ADwAAb7vfXumuHq9mQgADR/QSfdfJNZrUfI3Pb0hL8eNrL8xrsiWnpuWPFcFa5uKgWqRXZaozgf"
3513  "GHHG60z7tfEq6Z3JtlQ5TZMYwm4Bg3/ARPnBo/wD+Wz/VU+rcTQAlBU4nBQCQInNYAUQbAEQUeD"
3514  "TXBCDtV2r4ouR01DFhmdi+mRS2SRJSe3Pdw3FLOzPMsHYSCryO2os/vVg2SowOI7R+qNCro1YnJ"
3515  "smgPBhED7nepyttHnc5LPo1SsMeXK2534VbxyweXL+oh8x5XAUJgIQLAEHqYGYVwHkDIILAvbII"
3516  "ABJANM2O3dTlvfXDe/Jb1+OdTOkGNnpyxNBPXkj1jXNP+cjcu8BLsNruMWML+wDDKGOdZZStM6q"
3517  "EunbNGqlfL+81Rq9kkkxqskDh4BXgGt5b36qH1D5NBi19OJ0UAAThwZwogGwLAKHOkUNKmgMAOQ"
3518  "vLdcZNeLpmqoOeb090wN29xLb3dG2qxd14u98Z3V9htiRLOiVPjhFz9SxB39lH1JlrqBunvAga3"
3519  "O+gzrG2Lns0ffw17e2HeY+CgXlCb7wO3ure7VXyWmHBADgGeL13TwIkyEITZHUQdd1DQQcY3ARs"
3520  "SDmSssCrWeoX25VF2ecFx7q2obnJFYphX7MpVxx4a113p5aJayYi2M9+z2P4hfJZ7sjeWPLkrgf"
3521  "OiqutocQWews1h8cC7UbR5EcVqdZ04JjeIWrQ6AB+yP1J7Zsns/2pgUI+LsB6mEydtEiYWQVcSz"
3522  "iOHhL/sa+//nrh7Pz5KpgmpFCzBf7yBGINzZMCz5v33LC5yULV09Hr9rpCSq8fgadW7ODN463Xb"
3523  "RYbSNagn5oxALC2vr6uE5P38IBXIdW4jdSAxJ3hAqoAjAIYBecxAA==";
3525         // Sound B: Morse Code S.
3526         
3527         std::string SoundB = "T2dnUwACAAAAAAAAAAAoPAxpAAAAAER0X7"
3528  "YBHgF2b3JiaXMAAAAAAUSsAAAAAAAAgLsAAAAAAAC4AU9nZ1MAAAAAAAAAAAAAKDwMaQEAAAA2m"
3529  "nO/Dzz/////////////////MgN2b3JiaXMsAAAAWGlwaC5PcmcgbGliVm9yYmlzIEkgMjAxNTAx"
3530  "MDUgKOKbhOKbhOKbhOKbhCkAAAAAAQV2b3JiaXMfQkNWAQAAAQAYY1QpRplS0kqJGXOUMUaZYpJ"
3531  "KiaWEFkJInXMUU6k515xrrLm1IIQQGlNQKQWZUo5SaRljkCkFmVIQS0kldBI6J51jEFtJwdaYa4"
3532  "tBthyEDZpSTCnElFKKQggZU4wpxZRSSkIHJXQOOuYcU45KKEG4nHOrtZaWY4updJJK5yRkTEJIK"
3533  "YWSSgelU05CSDWW1lIpHXNSUmpB6CCEEEK2IIQNgtCQVQAAAQDAQBAasgoAUAAAEIqhGIoChIas"
3534  "AgAyAAAEoCiO4iiOIzmSY0kWEBqyCgAAAgAQAADAcBRJkRTJsSRL0ixL00RRVX3VNlVV9nVd13V"
3535  "d13UgNGQVAAABAEBIp5mlGiDCDGQYCA1ZBQAgAAAARijCEANCQ1YBAAABAABiKDmIJrTmfHOOg2"
3536  "Y5aCrF5nRwItXmSW4q5uacc845J5tzxjjnnHOKcmYxaCa05pxzEoNmKWgmtOacc57E5kFrqrTmn"
3537  "HPGOaeDcUYY55xzmrTmQWo21uaccxa0pjlqLsXmnHMi5eZJbS7V5pxzzjnnnHPOOeecc6oXp3Nw"
3538  "TjjnnHOi9uZabkIX55xzPhmne3NCOOecc84555xzzjnnnHOC0JBVAAAQAABBGDaGcacgSJ+jgRh"
3539  "FiGnIpAfdo8MkaAxyCqlHo6ORUuoglFTGSSmdIDRkFQAACAAAIYQUUkghhRRSSCGFFFKIIYYYYs"
3540  "gpp5yCCiqppKKKMsoss8wyyyyzzDLrsLPOOuwwxBBDDK20EktNtdVYY62555xrDtJaaa211kopp"
3541  "ZRSSikIDVkFAIAAABAIGWSQQUYhhRRSiCGmnHLKKaigAkJDVgEAgAAAAgAAADzJc0RHdERHdERH"
3542  "dERHdETHczxHlERJlERJtEzL1ExPFVXVlV1b1mXd9m1hF3bd93Xf93Xj14VhWZZlWZZlWZZlWZZ"
3543  "lWZZlWYLQkFUAAAgAAIAQQgghhRRSSCGlGGPMMeegk1BCIDRkFQAACAAgAAAAwFEcxXEkR3IkyZ"
3544  "IsSZM0S7M8zdM8TfREURRN01RFV3RF3bRF2ZRN13RN2XRVWbVdWbZt2dZtX5Zt3/d93/d93/d93"
3545  "/d93/d1HQgNWQUASAAA6EiOpEiKpEiO4ziSJAGhIasAABkAAAEAKIqjOI7jSJIkSZakSZ7lWaJm"
3546  "aqZneqqoAqEhqwAAQAAAAQAAAAAAKJriKabiKaLiOaIjSqJlWqKmaq4om7Lruq7ruq7ruq7ruq7"
3547  "ruq7ruq7ruq7ruq7ruq7ruq7ruq7rui4QGrIKAJAAANCRHMmRHEmRFEmRHMkBQkNWAQAyAAACAH"
3548  "AMx5AUybEsS9M8zdM8TfRET/RMTxVd0QVCQ1YBAIAAAAIAAAAAADAkw1IsR3M0SZRUS7VUTbVUS"
3549  "xVVT1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVTVN0zRNIDRkJQAABADAYo3B5SAh"
3550  "JSXl3hDCEJOeMSYhtV4hBJGS3jEGFYOeMqIMct5C4xCDHggNWREARAEAAMYgxxBzyDlHqZMSOee"
3551  "odJQa5xyljlJnKcWYYs0oldhSrI1zjlJHraOUYiwtdpRSjanGAgAAAhwAAAIshEJDVgQAUQAAhD"
3552  "FIKaQUYow5p5xDjCnnmHOGMeYcc44556B0UirnnHROSsQYc445p5xzUjonlXNOSiehAACAAAcAg"
3553  "AALodCQFQFAnACAQZI8T/I0UZQ0TxRFU3RdUTRd1/I81fRMU1U90VRVU1Vt2VRVWZY8zzQ901RV"
3554  "zzRV1VRVWTZVVZZFVdVt03V123RV3ZZt2/ddWxZ2UVVt3VRd2zdV1/Zd2fZ9WdZ1Y/I8VfVM03U"
3555  "903Rl1XVtW3VdXfdMU5ZN15Vl03Vt25VlXXdl2fc103Rd01Vl2XRd2XZlV7ddWfZ903WF35VlX1"
3556  "dlWRh2XfeFW9eV5XRd3VdlVzdWWfZ9W9eF4dZ1YZk8T1U903RdzzRdV3VdX1dd19Y105Rl03Vt2"
3557  "VRdWXZl2fddV9Z1zzRl2XRd2zZdV5ZdWfZ9V5Z13XRdX1dlWfhVV/Z1WdeV4dZt4Tdd1/dVWfaF"
3558  "V5Z14dZ1Ybl1XRg+VfV9U3aF4XRl39eF31luXTiW0XV9YZVt4VhlWTl+4ViW3feVZXRdX1ht2Rh"
3559  "WWRaGX/id5fZ943h1XRlu3efMuu8Mx++k+8rT1W1jmX3dWWZfd47hGDq/8OOpqq+brisMpywLv+"
3560  "3rxrP7vrKMruv7qiwLvyrbwrHrvvP8vrAso+z6wmrLwrDatjHcvm4sv3Acy2vryjHrvlG2dXxfe"
3561  "ArD83R1XXlmXcf2dXTjRzh+ygAAgAEHAIAAE8pAoSErAoA4AQCPJImiZFmiKFmWKIqm6LqiaLqu"
3562  "pGmmqWmeaVqaZ5qmaaqyKZquLGmaaVqeZpqap5mmaJqua5qmrIqmKcumasqyaZqy7LqybbuubNu"
3563  "iacqyaZqybJqmLLuyq9uu7Oq6pFmmqXmeaWqeZ5qmasqyaZquq3meanqeaKqeKKqqaqqqraqqLF"
3564  "ueZ5qa6KmmJ4qqaqqmrZqqKsumqtqyaaq2bKqqbbuq7Pqybeu6aaqybaqmLZuqatuu7OqyLNu6L"
3565  "2maaWqeZ5qa55mmaZqybJqqK1uep5qeKKqq5ommaqqqLJumqsqW55mqJ4qq6omea5qqKsumatqq"
3566  "aZq2bKqqLZumKsuubfu+68qybqqqbJuqauumasqybMu+78qq7oqmKcumqtqyaaqyLduy78uyrPu"
3567  "iacqyaaqybaqqLsuybRuzbPu6aJqybaqmLZuqKtuyLfu6LNu678qub6uqrOuyLfu67vqucOu6ML"
3568  "yybPuqrPq6K9u6b+sy2/Z9RNOUZVM1bdtUVVl2Zdn2Zdv2fdE0bVtVVVs2TdW2ZVn2fVm2bWE0T"
3569  "dk2VVXWTdW0bVmWbWG2ZeF2Zdm3ZVv2ddeVdV/XfePXZd3murLty7Kt+6qr+rbu+8Jw667wCgAA"
3570  "GHAAAAgwoQwUGrISAIgCAACMYYwxCI1SzjkHoVHKOecgZM5BCCGVzDkIIZSSOQehlJQy5yCUklI"
3571  "IoZSUWgshlJRSawUAABQ4AAAE2KApsThAoSErAYBUAACD41iW55miatqyY0meJ4qqqaq27UiW54"
3572  "miaaqqbVueJ4qmqaqu6+ua54miaaqq6+q6aJqmqaqu67q6Lpqiqaqq67qyrpumqqquK7uy7Oumq"
3573  "qqq68quLPvCqrquK8uybevCsKqu68qybNu2b9y6ruu+7/vCka3rui78wjEMRwEA4AkOAEAFNqyO"
3574  "cFI0FlhoyEoAIAMAgDAGIYMQQgYhhJBSSiGllBIAADDgAAAQYEIZKDRkRQAQJwAAGEMppJRSSim"
3575  "llFJKKaWUUkoppZRSSimllFJKKaWUUkgppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZ"
3576  "RSSimllFJKKaWUUkqppJRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUU"
3577  "koppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJK"
3578  "KaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSim"
3579  "llFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZ"
3580  "RSSimllFJKKaWUUkoplVJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSS"
3581  "imllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSCgCQinAAkHowoQwU"
3582  "GrISAEgFAACMUUopxpyDEDHmGGPQSSgpYsw5xhyUklLlHIQQUmktt8o5CCGk1FJtmXNSWosx5hg"
3583  "z56SkFFvNOYdSUoux5ppr7qS0VmuuNedaWqs115xzzbm0FmuuOdecc8sx15xzzjnnGHPOOeecc8"
3584  "4FAOA0OACAHtiwOsJJ0VhgoSErAYBUAAACGaUYc8456BBSjDnnHIQQIoUYc845CCFUjDnnHHQQQ"
3585  "qgYc8w5CCGEkDnnHIQQQgghcw466CCEEEIHHYQQQgihlM5BCCGEEEooIYQQQgghhBA6CCGEEEII"
3586  "IYQQQgghhFJKCCGEEEIJoZRQAABggQMAQIANqyOcFI0FFhqyEgAAAgCAHJagUs6EQY5Bjw1BylE"
3587  "zDUJMOdGZYk5qMxVTkDkQnXQSGWpB2V4yCwAAgCAAIMAEEBggKPhCCIgxAABBiMwQCYVVsMCgDB"
3588  "oc5gHAA0SERACQmKBIu7iALgNc0MVdB0IIQhCCWBxAAQk4OOGGJ97whBucoFNU6iAAAAAAAAwA4"
3589  "AEA4KAAIiKaq7C4wMjQ2ODo8AgAAAAAABYA+AAAOD6AiIjmKiwuMDI0Njg6PAIAAAAAAAAAAICA"
3590  "gAAAAAAAQAAAAICAT2dnUwAEskwAAAAAAAAoPAxpAgAAACExbzQkFh0ebXZzdoRAFRUWFhgdHRx"
3591  "8bWtwfRQWFxgYHSAdfXFrcnoBtM5A84YAQuvVmDyVmrjgS8xvXul0ALRM2cNmZ5CCHjEGoc8m/l"
3592  "L0n5oJn6nXz0M3xc4DZFUwCfd9dQ2S2jPR1vBMF7miLDPeZD7R3PGHExsAmks/glPq2gMgLTgpA"
3593  "ICpQVYB9EdAsQOBJjlJLoVblgCVBUmlf3MyGnqZ/9rgvbOJsvq63Rn7cfTWaAyi1LdjzQVhfwix"
3594  "mtQCohmv9xUbjZpSI51UyDav2n2b0uBazyJ0G/EVcqKhoz6wJjRvAd5bP9Wt1LlMB1ISnCDhAgB"
3595  "MEsosgHsCAJyDOPu1EYBTC2h9MS4J5drEyaB85LaOeU3dZfYRxEC8fSLPaHq0YhsuZIX7nE4zSU"
3596  "ufdp242ICQs+fFRRpnP0i69fDNcG+IUZGzE7nUhnE7tzTn1wGd7xzNaBg8WwDeWz/tU8Y6Bijgd"
3597  "FIAgNAiSTMDuJoCAAREvtgGgDSTlZ9zzk1ikyx8nTgd3fibN2Ni50Tn9vn4WuFuZNwDMEGIXrdF"
3598  "BUbuTCA4zKBSi3TElYc9UjEG1WZXkQhpF0xbh2yJXS9kvSRIxnZv4RoK5QQXgnQPPgvf7UPq6a7"
3599  "Hk4TBaoCo/P9XACRIkkR1ygK6p7UrANQ/D/sqlduN9wdaZ14Ko/eVrWHuVY4p/r1f3STHJus8t2"
3600  "RcmJ8HOMZ/29gnrZ55IF28LeEibZNyVqLQmLxC3g+cCQvsWx7TNpOeodev3jxsd+rXBwLUAV7Iv"
3601  "YAqoTCOplNd3VzHxYbT2ePUCS0Kwka2iH7748/39n89Pvhy+XJ9cRgGU5jieMAriXWwo+wZeby3"
3602  "5THLK8TJDM+tYxtKum4DWpxqqUfPjQYtLX8J6F2NvltTd3J2y+0cooNb590JkKytw6KOszKGNgq"
3603  "oDrF2CigLwTSkdjp4t9w5AZbI/e8oX5oAbgASdSIUAgIKAACTWXGvjIRXXj7glGMvDmDWLP7/Vg"
3604  "N/J3Gfj/JXZ4nSswQngZMKQIBHAwpABwCs1txxOcN+mv60eQujghacg0jf3Fis0nCPhWk7N0f0p"
3605  "8phUomdgjKUfxy0zqRizvTi5ilG8ppB62ZHVwf/4HYYtFBD8RHAtP7WNUitpDWHGypjBiEVAcRO"
3606  "vWdtvgAmu1J5hfBZCvVvoEz0VYISAbROy+gd2SDKzCs9FIx5qHyin3/Tqsv97Pl3V2EBXFPyv6+"
3607  "/ECDpqFSuze9+c8VdLAobCA594+501BR8YfcN2/1fCTBt5xANcF9VH5+e3hncuX52cGMMuktf7Y"
3608  "u0/VGwpdRwPikAiBRJwiwABwDOnt4UQLTXfpoFAK6TbxjVqDizUXMmDxa29XoTsVVdJPpI7fLbo"
3609  "tFMjdhQwUlg6g51MRPLO1M7MQWjLgzQrr3k1k8/ajtn8PWcQsKMIhOC7gPFdh9rVKZNxBwxcDgn"
3610  "pe9PvoZAAN5bP9VT6txdBiUROCkACCyQw8wC+JwAiDYQX5oCAFooDj6s2KPhZpRUUhrOXHRoZ2Y"
3611  "oFiyEuXhRfeNG9aRhyaUYEGVM4R+vh5CORBKTxPCDM8aY9OHZeVJo5ADb3fZEoyqvQwcKZCTfpz"
3612  "IB3OoeXL8oq8x+QgQjNTgpAAhSpBGRBRBtAEBiA4VqAmCiNPX865xwWhJ/xXLkiOaoSLeKoAo7J"
3613  "4bib8eanVXy9kXofWlhSJ4BVNKH44/mrJNgopOvSPErgGZEip5EHPVtBwvIb5RKh9nNigfeAh77"
3614  "PuxV2urhwiFxcAzQX/w6DZCgSJhldVRQrjn3IwIIgKbnNKGKjXJfpiH2jFWpMuHEFNcoDftt9C6"
3615  "mI2tC1jueFDo11pQLq8+2b8JijOmX132afihli3MNbvU/Fu4UPKBt1+0IAChdW7K7hLDJcQNeyP"
3616  "1s+neRJ1hESSoX0DpjoGYWhqmsANXaf1v8w7vNy6ffvrhfXjs2wU7sfj1Nq7UlKX5bilnbjSkex"
3617  "4Ny6Wd7E+w/Kh1dOnA7KD7eausKwNrdsl58hEDJxRtYgxaA0wGgzjDjnz0FewGkAGs26wrwCOD0"
3618  "MeAWDQA/6LlKB5bI/e8sX5oAbgAAAAUAQAEAgPIAtFCT53OGWbrjTmc9dJjacgP7PGNkAqzODoI"
3619  "zkFjXmF7DrXmBZx+dgD/RSAcCtNA6k1MkiVGYX6kJiT9x+/pCTs8NHOIBtE4N8nsbgLXZ59+Dxt"
3620  "erhqA3OMPvEKgAtFD/wcVpEPW8vNW731h3sq8c7FzzTQZF9wPJsgEMTzjsLq4jIWk7hmmxfHzk/"
3621  "ombr0eKhwEm9Pkb030yAYzhXX3h6SergbVxm6O4MNzsMBd/ROPFnxXyzSoemks/gl3qPGYBLTWc"
3622  "jukxObLHP/zPBQhMkjCrca5kt188H6O1NigASI1ZgfAEfU2uIfxbTJuIid1GxNxtEbusZNxN3Kn"
3623  "bQ9heHo8Ry8eWMO0EEpZraNQ8DCaHfXADfL3q8dopdoZIzrihsDR3PFm6GY6JBg2vJmd794F4Lg"
3624  "HeWz/VU/raTQdKEpxPCgACJpQ5rAA2MwCADUSLy0wBgFDErT5xS9L6yeQTTOhiYiTxVW5ScMD0K"
3625  "85YLSW3fEwnqbncdmPFyT16iZTNoK7uw6fSjLGN7OzuyAgYqPbh2WWpY1zhxnOf/R1D6T9bZ1lu"
3626  "Af5bP5VT2jyuAyUZrAbwn38RQGBBOmEFXBzq/xLAQ2kaA5wxsuGxxuTT3qfTtoHTPr7HMAu3Xek"
3627  "1tRtb+tOmj7iVljlDZrllNUoC/q74nM4aC0ig3U4Pz0YaDKJq2G519hMiaLzEhC7QAbMGHgvf1U"
3628  "PqnO7CJGMHVgP01/+tAEiQhBdWnQqo3LskWAGFaEE6EZhvb16E4yWv+zuKn+ZCONkl05rp+b010"
3629  "mPrpXT5G0nganSOZ27Zrm3GjIlS0C1f1Z0xtmnoOq9AvozSG33rgQ+ebJ2JBulHz3wEcE4AXsi9"
3630  "xv4jwgQJlRNBb4w9p8cYSThyFMd5T+/p5KtR//QsJm8CAYeybVrx3qQXG149L4VXT1/lvHl36aX"
3631  "4vKVcvK0Ax6Mv3rzXEvQtBTsGRj3yvK2sJev2UvzqAWyOupMhD/DKk4L94RaAtzdpSKA1SZyzym"
3632  "YHAM4XAAAO";
3633         
3634         // Sound C: Morse Code D.
3635         
3636         std::string SoundC = "T2dnUwACAAAAAAAAAABJz/4JAAAAAOq2RJ"
3637  "UBHgF2b3JiaXMAAAAAAUSsAAAAAAAAgLsAAAAAAAC4AU9nZ1MAAAAAAAAAAAAASc/+CQEAAACmG"
3638  "2vbDzz/////////////////MgN2b3JiaXMsAAAAWGlwaC5PcmcgbGliVm9yYmlzIEkgMjAxNTAx"
3639  "MDUgKOKbhOKbhOKbhOKbhCkAAAAAAQV2b3JiaXMfQkNWAQAAAQAYY1QpRplS0kqJGXOUMUaZYpJ"
3640  "KiaWEFkJInXMUU6k515xrrLm1IIQQGlNQKQWZUo5SaRljkCkFmVIQS0kldBI6J51jEFtJwdaYa4"
3641  "tBthyEDZpSTCnElFKKQggZU4wpxZRSSkIHJXQOOuYcU45KKEG4nHOrtZaWY4updJJK5yRkTEJIK"
3642  "YWSSgelU05CSDWW1lIpHXNSUmpB6CCEEEK2IIQNgtCQVQAAAQDAQBAasgoAUAAAEIqhGIoChIas"
3643  "AgAyAAAEoCiO4iiOIzmSY0kWEBqyCgAAAgAQAADAcBRJkRTJsSRL0ixL00RRVX3VNlVV9nVd13V"
3644  "d13UgNGQVAAABAEBIp5mlGiDCDGQYCA1ZBQAgAAAARijCEANCQ1YBAAABAABiKDmIJrTmfHOOg2"
3645  "Y5aCrF5nRwItXmSW4q5uacc845J5tzxjjnnHOKcmYxaCa05pxzEoNmKWgmtOacc57E5kFrqrTmn"
3646  "HPGOaeDcUYY55xzmrTmQWo21uaccxa0pjlqLsXmnHMi5eZJbS7V5pxzzjnnnHPOOeecc6oXp3Nw"
3647  "TjjnnHOi9uZabkIX55xzPhmne3NCOOecc84555xzzjnnnHOC0JBVAAAQAABBGDaGcacgSJ+jgRh"
3648  "FiGnIpAfdo8MkaAxyCqlHo6ORUuoglFTGSSmdIDRkFQAACAAAIYQUUkghhRRSSCGFFFKIIYYYYs"
3649  "gpp5yCCiqppKKKMsoss8wyyyyzzDLrsLPOOuwwxBBDDK20EktNtdVYY62555xrDtJaaa211kopp"
3650  "ZRSSikIDVkFAIAAABAIGWSQQUYhhRRSiCGmnHLKKaigAkJDVgEAgAAAAgAAADzJc0RHdERHdERH"
3651  "dERHdETHczxHlERJlERJtEzL1ExPFVXVlV1b1mXd9m1hF3bd93Xf93Xj14VhWZZlWZZlWZZlWZZ"
3652  "lWZZlWYLQkFUAAAgAAIAQQgghhRRSSCGlGGPMMeegk1BCIDRkFQAACAAgAAAAwFEcxXEkR3IkyZ"
3653  "IsSZM0S7M8zdM8TfREURRN01RFV3RF3bRF2ZRN13RN2XRVWbVdWbZt2dZtX5Zt3/d93/d93/d93"
3654  "/d93/d1HQgNWQUASAAA6EiOpEiKpEiO4ziSJAGhIasAABkAAAEAKIqjOI7jSJIkSZakSZ7lWaJm"
3655  "aqZneqqoAqEhqwAAQAAAAQAAAAAAKJriKabiKaLiOaIjSqJlWqKmaq4om7Lruq7ruq7ruq7ruq7"
3656  "ruq7ruq7ruq7ruq7ruq7ruq7ruq7rui4QGrIKAJAAANCRHMmRHEmRFEmRHMkBQkNWAQAyAAACAH"
3657  "AMx5AUybEsS9M8zdM8TfRET/RMTxVd0QVCQ1YBAIAAAAIAAAAAADAkw1IsR3M0SZRUS7VUTbVUS"
3658  "xVVT1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVTVN0zRNIDRkJQAABADAYo3B5SAh"
3659  "JSXl3hDCEJOeMSYhtV4hBJGS3jEGFYOeMqIMct5C4xCDHggNWREARAEAAMYgxxBzyDlHqZMSOee"
3660  "odJQa5xyljlJnKcWYYs0oldhSrI1zjlJHraOUYiwtdpRSjanGAgAAAhwAAAIshEJDVgQAUQAAhD"
3661  "FIKaQUYow5p5xDjCnnmHOGMeYcc44556B0UirnnHROSsQYc445p5xzUjonlXNOSiehAACAAAcAg"
3662  "AALodCQFQFAnACAQZI8T/I0UZQ0TxRFU3RdUTRd1/I81fRMU1U90VRVU1Vt2VRVWZY8zzQ901RV"
3663  "zzRV1VRVWTZVVZZFVdVt03V123RV3ZZt2/ddWxZ2UVVt3VRd2zdV1/Zd2fZ9WdZ1Y/I8VfVM03U"
3664  "903Rl1XVtW3VdXfdMU5ZN15Vl03Vt25VlXXdl2fc103Rd01Vl2XRd2XZlV7ddWfZ903WF35VlX1"
3665  "dlWRh2XfeFW9eV5XRd3VdlVzdWWfZ9W9eF4dZ1YZk8T1U903RdzzRdV3VdX1dd19Y105Rl03Vt2"
3666  "VRdWXZl2fddV9Z1zzRl2XRd2zZdV5ZdWfZ9V5Z13XRdX1dlWfhVV/Z1WdeV4dZt4Tdd1/dVWfaF"
3667  "V5Z14dZ1Ybl1XRg+VfV9U3aF4XRl39eF31luXTiW0XV9YZVt4VhlWTl+4ViW3feVZXRdX1ht2Rh"
3668  "WWRaGX/id5fZ943h1XRlu3efMuu8Mx++k+8rT1W1jmX3dWWZfd47hGDq/8OOpqq+brisMpywLv+"
3669  "3rxrP7vrKMruv7qiwLvyrbwrHrvvP8vrAso+z6wmrLwrDatjHcvm4sv3Acy2vryjHrvlG2dXxfe"
3670  "ArD83R1XXlmXcf2dXTjRzh+ygAAgAEHAIAAE8pAoSErAoA4AQCPJImiZFmiKFmWKIqm6LqiaLqu"
3671  "pGmmqWmeaVqaZ5qmaaqyKZquLGmaaVqeZpqap5mmaJqua5qmrIqmKcumasqyaZqy7LqybbuubNu"
3672  "iacqyaZqybJqmLLuyq9uu7Oq6pFmmqXmeaWqeZ5qmasqyaZquq3meanqeaKqeKKqqaqqqraqqLF"
3673  "ueZ5qa6KmmJ4qqaqqmrZqqKsumqtqyaaq2bKqqbbuq7Pqybeu6aaqybaqmLZuqatuu7OqyLNu6L"
3674  "2maaWqeZ5qa55mmaZqybJqqK1uep5qeKKqq5ommaqqqLJumqsqW55mqJ4qq6omea5qqKsumatqq"
3675  "aZq2bKqqLZumKsuubfu+68qybqqqbJuqauumasqybMu+78qq7oqmKcumqtqyaaqyLduy78uyrPu"
3676  "iacqyaaqybaqqLsuybRuzbPu6aJqybaqmLZuqKtuyLfu6LNu678qub6uqrOuyLfu67vqucOu6ML"
3677  "yybPuqrPq6K9u6b+sy2/Z9RNOUZVM1bdtUVVl2Zdn2Zdv2fdE0bVtVVVs2TdW2ZVn2fVm2bWE0T"
3678  "dk2VVXWTdW0bVmWbWG2ZeF2Zdm3ZVv2ddeVdV/XfePXZd3murLty7Kt+6qr+rbu+8Jw667wCgAA"
3679  "GHAAAAgwoQwUGrISAIgCAACMYYwxCI1SzjkHoVHKOecgZM5BCCGVzDkIIZSSOQehlJQy5yCUklI"
3680  "IoZSUWgshlJRSawUAABQ4AAAE2KApsThAoSErAYBUAACD41iW55miatqyY0meJ4qqqaq27UiW54"
3681  "miaaqqbVueJ4qmqaqu6+ua54miaaqq6+q6aJqmqaqu67q6Lpqiqaqq67qyrpumqqquK7uy7Oumq"
3682  "qqq68quLPvCqrquK8uybevCsKqu68qybNu2b9y6ruu+7/vCka3rui78wjEMRwEA4AkOAEAFNqyO"
3683  "cFI0FlhoyEoAIAMAgDAGIYMQQgYhhJBSSiGllBIAADDgAAAQYEIZKDRkRQAQJwAAGEMppJRSSim"
3684  "llFJKKaWUUkoppZRSSimllFJKKaWUUkgppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZ"
3685  "RSSimllFJKKaWUUkqppJRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUU"
3686  "koppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJK"
3687  "KaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSim"
3688  "llFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZ"
3689  "RSSimllFJKKaWUUkoplVJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSS"
3690  "imllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSCgCQinAAkHowoQwU"
3691  "GrISAEgFAACMUUopxpyDEDHmGGPQSSgpYsw5xhyUklLlHIQQUmktt8o5CCGk1FJtmXNSWosx5hg"
3692  "z56SkFFvNOYdSUoux5ppr7qS0VmuuNedaWqs115xzzbm0FmuuOdecc8sx15xzzjnnGHPOOeecc8"
3693  "4FAOA0OACAHtiwOsJJ0VhgoSErAYBUAAACGaUYc8456BBSjDnnHIQQIoUYc845CCFUjDnnHHQQQ"
3694  "qgYc8w5CCGEkDnnHIQQQgghcw466CCEEEIHHYQQQgihlM5BCCGEEEooIYQQQgghhBA6CCGEEEII"
3695  "IYQQQgghhFJKCCGEEEIJoZRQAABggQMAQIANqyOcFI0FFhqyEgAAAgCAHJagUs6EQY5Bjw1BylE"
3696  "zDUJMOdGZYk5qMxVTkDkQnXQSGWpB2V4yCwAAgCAAIMAEEBggKPhCCIgxAABBiMwQCYVVsMCgDB"
3697  "oc5gHAA0SERACQmKBIu7iALgNc0MVdB0IIQhCCWBxAAQk4OOGGJ97whBucoFNU6iAAAAAAAAwA4"
3698  "AEA4KAAIiKaq7C4wMjQ2ODo8AgAAAAAABYA+AAAOD6AiIjmKiwuMDI0Njg6PAIAAAAAAAAAAICA"
3699  "gAAAAAAAQAAAAICAT2dnUwAEVG0AAAAAAABJz/4JAgAAAK7vGfAvERYXFhYeHnZybGx0bXBwb2V"
3700  "xhRwREhQXHx55aWtthy8WFhkXGB4gHoh2dnR8AQG01oq4BmHTs2rWN12BOBhVLKzS6V5yRvbdnX"
3701  "fmkP+1iOPH2C0tCQCs0M6COSAd13khpxQXO/7yHZpwK78jAKTQusI503w8FN83xVoetDO+MXbxd"
3702  "QG8Tlvus80CwuiqskN68tzFmny8OFMAtE7Zw682A47hbR4D1We2vunUvKDvraQ7C5971TZJZFUw"
3703  "Ce++ugZYTTraxO3ZB5WXiu631Rn1yEoVu3wTmks/gq3UdQwQ0sL1pAAAZknCCuB8BMCuTUxpkvw"
3704  "2LkuAhmNUZWNCHmzyDfR9wMxN/eeNu0W1/nFINf+s9KY0UVw0hA5i1UYy6O+64twO01aa5edk9p"
3705  "SVgp9Mkaf455AxJ5TXcvf0VODwUKFR/ztpZbtkJtG7S/5bP9WtjLkMUMDppAAgsOCKYRnAPQ0AB"
3706  "xAt3xgBQKG4XiZJKMupkQzPCGPHHB/dPYKI6SLC+EpMRLqx2eV8k0qb0zJaladg0minYlie9Bhg"
3707  "0nosazDiIeQMayN3fIJE668VET0yD5YpMvCjEKKHjI7ZAP5bP5VT2jwug5ICTgoAEDpqEBXA1RQ"
3708  "AgHDE/XcaAOo9yHchccaHs/Q/k2kZyGtV9LwmdHnFqHhY7n81GF+EtoKh9azAiBOpEMKmk4/viU"
3709  "iiohxa5zRrMTBSQkyHsQTnoziTP5vcQ3/fJw2+A/5b3yq7tH5MBiMZnBQABCacoAI4HwIAVXBm1"
3710  "yUA6EzmC2VTiV11EjFBn39gXn+pMRJGUnARn/n/THZfAEj5wZkZT6/nDxxs+lyjeORgyzkZ+bEN"
3711  "omtpCDM15VtaNo87Bo2mob4UGSxzEA1IBf5bP/ittH5cwi1l8MBJAUDQhJMogH4AAIAAUwumAGC"
3712  "w9oa7q889xsfz83ybCq0wWa1N0rEELy1F09jjQQyMxGxPzcLkRRPwx7BhiKcM+1Y1u5SeiJ8F4/"
3713  "z9QDrGvi1Gzr5ijtmRVeBS1d0xoNAasH3SkG4B/ls/lVP6PCaDkhqcFAAEmdOEWQHcFwFAAvCsC"
3714  "wAAqbkwuA9m7ZV3Z/twz6rMmLqWG39mv+DZU3NucKaGx+Hsc9CE2Fp6CEej7A3caCRjqOdh9WKW"
3715  "JMg350ChFTl018INytdPODZpJrC9ng7MAN5b36qH1H5MBC0JricFADALJ5EBzKcCACqAZwETAOm"
3716  "Icems2oe1QQav8HPm/oc5uxIEAU4K8j1aVuyfR9V99sG5yFhcdz4Y0+Db8U46wMWx297pFtrNkL"
3717  "uCSg1Gk75TNTATcHo/fPOlrtXodoctMBf+W9+qh4y5HJAASLgAEDA0zRwFcF4GAELg3IdmEgACQ"
3718  "EVIl2hInWpAyg7x9uFbiWy31WvPNqwYCj1ZrWh71rm0eh16i9BenN569xN95j2cVovyhzoxifSR"
3719  "bOjigTd7Qx50zoHo8Qcx1llJSgEY0oG1Hly/qIfMuQxQwOmkACCwDk6UAQwPAoCDiAuZMAWwkIJ"
3720  "vOkJzUaZ2peXe3Azmi12l6wp3XlWzxhtn81FBjjx5hJMMzepLyLofoBAKg71zfkjbbJloeCpgTC"
3721  "Z/9GWA+dlmJfEKIyOdLR1ydIFjznAL/lvfqrvMuQzQwOmkAADSyBwF8DkOAADizLYCFPcokh8bm"
3722  "BzrgTPZDo2pxmhcUheKRirHOLfVjjPcfYhGKw4xLI9MZoLF3tIC9q5+2KvvtMKYLV07HDB406Jw"
3723  "PoeNT/rOMIDuhQUe+z4yq/TT0mMwSQwcA+R//QQABA1NVB0WhaRnHgqggaKXcJsWk9Nj7NWl+PV"
3724  "zb4pb5uo7oe1Fo1HhbG5Ka2avd4fGqis85YnOufLS3IPHyiHw+nDS2z2UmDotg1Tjqmi3hWbXmb"
3725  "lZj2asgAKc0SnUAF7IfZT0Mxo4SBbcF05gjD1YioXZyAKPvefdvLuPtn5zaT7/9qtVaZqmKQxMZ"
3726  "DbLzdl2JWVZ3wlceOtHXleKtzexiXqbAPVl2dS5quZAPd7eevfmHQ87nKuwVejiN+9iZQwNt5PG"
3727  "6WnHcCesDeurUNzr561mAwVORwC9bgMU4/YOwSgeGhaWyP3vLF+6AG4AAgKqAAAAACAQAJ/gE0A"
3728  "CFOgArNaLXHIQ4qly3qE+X9q6liy01q6PzQm2eJpzqKtbwelkLhas2LL5L0BoitPFOec5YaarY5"
3729  "oFAazOzidzhtctz5fztFrgyt9TPcN/td8ArEwZsA5zQpLtnoI/FAw4kFvfvSE+PZFrcTyTa3QWA"
3730  "BRRTuzysyIhOUo3zcvH56GSspsbPUQeqvFNgyUxAJo7X61D2rpNwZYyeHA+KQCIJEFmBei9AuDs"
3731  "WiCw/U9g50QAgEQlFRcn1YxPipYkmzji/O20FNLxrKYYv9j1+DSoMZGWdNfG7sj5o5S09LtNwMw"
3732  "INsZZ2O1VTTBiTPDzsdBojnvHtzs9qTvkUvqTRhrt9NC7+w71XgK+Wz+tXUpfJoOSBKeTAgAwCR"
3733  "uWATyvAQAR7J+hClC4MJ3Qn7X1ElGIOtikC6mO4j4mBufJxcHtZVy6CkZLaGNCdTpoFuXNY8wpV"
3734  "VYF56T16cgvgmKLcHZB4aakq7I68wbF49gvHpQMnHj+Wz/VU8Y8rgMpCZwUAEBaNKMKYDMDAEQQ"
3735  "7Pe5KUBzgi5nYsf57R6WR1/8re40aa35IypFvy1Zl3CnpmMtgtHhG9seDZVmuKcQo+yRzK5/DxE"
3736  "5pGSaOexVcdocmHHoTBNZ1PizCbiERqMzJT4b3+1D6lnugQ1wDND/9agEiNSEVQEL1PsZAsAEfP"
3737  "lQPSr1fXQBnB2tz0f3MEbqnpjidKw6ouLSKb18tyOeuUrY2KsMZ9uevEcWtrST6Bgj8t6zvyZru"
3738  "mJu6iKPqx2lHkP0BpddWkjGdYYAPBb+yL2x8b/UdBqdUIk5EXSeO2NsDFmSRRRTEnnu4O+2j3iV"
3739  "+WcT2YN1HQ7rysOYlh5/jF2k4C2b9W27sgFObYEuHrt4y5QpvMkatbuVOzkl8LoC1C5SjjybLIN"
3740  "A55kuvCKcBfgoNW9o1Noq7NpOgfA6cRqAls63ajzosxWKX09NefUW1pQ3j3WWyP2fI31BAAeAQG"
3741  "ahAAAAgJNBAGPv0geozFgd968AcMcB399qANw9ccoA2GACALTWoY/LA8KYnE7/8hrDrp3BgXyqK"
3742  "wG01Jnk5cyMdfNlymMMwwXYl4Sxp+YCrNLk5pxZB3F7vag4jMRla8acUD3jfUrGA6xOP8GZa2AK"
3743  "9qe/ljDXtYozJ1PPtSAArEwO4Dnr8Ee58rTFPos5lSdzstMBuXUAvE6OUecJAJgl4+lo56QT8rK"
3744  "1f4Rwp+z8PrWYm68BRE/EPff27gIUYf0bKt2rNvW/42tu1iZ8NiFaaXsyhwd0Xfexu4DlWACxPT"
3745  "uToUONMqDn5j1qm6nODTalkgKaS1/tU+raTY8jJcMZEi4ARLkcTpoF6OcOqKvtmjl9+vQ/xlKpB"
3746  "GIAIK9zQ/RCPelN7nQ5NPxMPV7u4x4NkonrkqGxKq4P1BSeipGC27qrrpiU+H+O2xmyxXVjTART"
3747  "S6eyc3uoMvHpgrKTs0FFWi2ypCYnnvks9H9NhOfS2GjfltH61uk9FWI93ls/1a3UeUwHSjIcTgo"
3748  "AIkXlhFkA/QAAUIBPlxkBQAvxEPHZM/T44bVSEz77DNivKlRDL2eYmwd77x0NJm6YVP9cZEJoMq"
3749  "6qnUz2EHaJnRZpzS1radsrMiKHeodrQ30sIQKDKCNkrwtaOz35knCjAQZZJnTpAd5bP9Wt1LlMB"
3750  "SUJTpBwASCwHA5HAdwXAaAoRNN7MgAKgEJzeSImylPNih8Sm+w5Xa4eV8b3YFJBnpqsMctUfMsK"
3751  "89gkEUtLTvHhUU8NifkeMgU+bNOlqDHhHD0cz1udkYgLMpGQNde4htA9Pds1HHezoitB5xAeC9/"
3752  "tRcpa4QNHAVYD+P9+GBogQa3MHFanBEXy8f8FHJp9q/eHVTvb/Dxhd8oXbYLZ7bY9XnmdSy5MvT"
3753  "oTbkW8W39ptMq5bR0+Z2XrPWTnwamtqY4eKow4NQ35rOiaKk49EpYoqYecozQYDhT04juULDYbJ"
3754  "n7IXeksuXpi2v2irciAXICHx2PAvM4SVoUKcberP+c9c+Pj7unVvPkyBqbwKmHWBSOj4S4e7W5o"
3755  "SH9nHhrW1jnyCtQZClVD86hh6E7vpEDb8Ny+AbwuSlI+b4KyFDt6/fEADBnCOeFgDID42jkBQ+w"
3756  "FjNEAGMJtbcK5WgAODg==";
3757         
3758         // Start with Sound A.
3759         
3760         TestStrIter = TestFile.SoundsList.find(0);
3761         ASSERT_NE(TestFile.SoundsList.end(), TestStrIter);
3762         ASSERT_EQ(SoundA, TestStrIter->second);
3763  
3764         // Check that it has the correct encoding.
3765         
3766         TestFileIter = TestFile.SoundsListAudioEncType.find(0);
3767         ASSERT_NE(TestFile.SoundsListAudioEncType.end(), TestFileIter);
3768         ASSERT_EQ("base64", TestFileIter->second);
3769         
3770         // Check that it has the correct image type.
3772         TestFileIter = TestFile.SoundsListAudioType.find(0);
3773         ASSERT_NE(TestFile.SoundsListAudioType.end(), TestFileIter);
3774         ASSERT_EQ("application/ogg", TestFileIter->second);
3775         
3776         // Check the ALTID section.
3777         
3778         TestFileIter = TestFile.SoundsListAltID.find(0);
3779         ASSERT_NE(TestFile.SoundsListAltID.end(), TestFileIter);
3780         ASSERT_EQ("4", TestFileIter->second);
3781         
3782         // Check the PID section.
3783         
3784         TestFileIter = TestFile.SoundsListPID.find(0);
3785         ASSERT_NE(TestFile.SoundsListPID.end(), TestFileIter);
3786         ASSERT_EQ("1", TestFileIter->second);
3787         
3788         // Check the MEDIATYPE section.
3789         
3790         TestFileIter = TestFile.SoundsListMediatype.find(0);
3791         ASSERT_NE(TestFile.SoundsListMediatype.end(), TestFileIter);
3792         ASSERT_EQ("application/ogg", TestFileIter->second);
3793         
3794         // Check the TYPE section.
3795         
3796         TestFileIter = TestFile.SoundsListType.find(0);
3797         ASSERT_EQ(TestFile.SoundsListType.end(), TestFileIter);
3798         
3799         // Check the LANGUAGE section.
3800         
3801         TestFileIter = TestFile.SoundsListLanguage.find(0);
3802         ASSERT_NE(TestFile.SoundsListLanguage.end(), TestFileIter);
3803         ASSERT_EQ("kw", TestFileIter->second);
3804         
3805         // Check the PREF section.
3806         
3807         TestFileIntIter = TestFile.SoundsListPref.find(0);
3808         ASSERT_NE(TestFile.SoundsListPref.end(), TestFileIntIter);
3809         ASSERT_EQ(2, TestFileIntIter->second);
3810         
3811         // Check the extra tokens.
3812         
3813         TestFileIter = TestFile.SoundsListTokens.find(0);
3814         ASSERT_NE(TestFile.SoundsListTokens.end(), TestFileIter);
3815         ASSERT_EQ("MEEP=MOO", TestFileIter->second);
3817         // Start with Sound B.
3818         
3819         TestStrIter = TestFile.SoundsList.find(1);
3820         ASSERT_NE(TestFile.SoundsList.end(), TestStrIter);
3821         ASSERT_EQ(SoundB, TestStrIter->second);
3822  
3823         // Check that it has the correct encoding.
3824         
3825         TestFileIter = TestFile.SoundsListAudioEncType.find(1);
3826         ASSERT_NE(TestFile.SoundsListAudioEncType.end(), TestFileIter);
3827         ASSERT_EQ("base64", TestFileIter->second);
3828         
3829         // Check that it has the correct image type.
3831         TestFileIter = TestFile.SoundsListAudioType.find(1);
3832         ASSERT_NE(TestFile.SoundsListAudioType.end(), TestFileIter);
3833         ASSERT_EQ("application/ogg", TestFileIter->second);
3834         
3835         // Check the TYPE section.
3836         
3837         TestFileIter = TestFile.SoundsListType.find(1);
3838         ASSERT_NE(TestFile.SoundsListType.end(), TestFileIter);
3839         ASSERT_EQ("home", TestFileIter->second);
3840         
3841         // Check the ALTID section.
3842         
3843         TestFileIter = TestFile.SoundsListAltID.find(1);
3844         ASSERT_NE(TestFile.SoundsListAltID.end(), TestFileIter);
3845         ASSERT_EQ("24", TestFileIter->second);
3846         
3847         // Check the PID section.
3848         
3849         TestFileIter = TestFile.SoundsListPID.find(1);
3850         ASSERT_NE(TestFile.SoundsListPID.end(), TestFileIter);
3851         ASSERT_EQ("21", TestFileIter->second);
3852         
3853         // Check the MEDIATYPE section.
3854         
3855         TestFileIter = TestFile.SoundsListMediatype.find(1);
3856         ASSERT_NE(TestFile.SoundsListMediatype.end(), TestFileIter);
3857         ASSERT_EQ("application/ogg", TestFileIter->second);
3858         
3859         // Check the LANGUAGE section.
3860         
3861         TestFileIter = TestFile.SoundsListLanguage.find(1);
3862         ASSERT_NE(TestFile.SoundsListLanguage.end(), TestFileIter);
3863         ASSERT_EQ("kw", TestFileIter->second);
3864         
3865         // Check the PREF section.
3866         
3867         TestFileIntIter = TestFile.SoundsListPref.find(1);
3868         ASSERT_NE(TestFile.SoundsListPref.end(), TestFileIntIter);
3869         ASSERT_EQ(22, TestFileIntIter->second);
3870         
3871         // Check the extra tokens.
3872         
3873         TestFileIter = TestFile.SoundsListTokens.find(1);
3874         ASSERT_NE(TestFile.SoundsListTokens.end(), TestFileIter);
3875         ASSERT_EQ("SOUND=WAVE", TestFileIter->second);
3877         // Start with Sound C.
3878         
3879         TestStrIter = TestFile.SoundsList.find(2);
3880         ASSERT_NE(TestFile.SoundsList.end(), TestStrIter);
3881         ASSERT_EQ(SoundC, TestStrIter->second);
3882  
3883         // Check that it has the correct encoding.
3884         
3885         TestFileIter = TestFile.SoundsListAudioEncType.find(2);
3886         ASSERT_NE(TestFile.SoundsListAudioEncType.end(), TestFileIter);
3887         ASSERT_EQ("base64", TestFileIter->second);
3888         
3889         // Check that it has the correct image type.
3891         TestFileIter = TestFile.SoundsListAudioType.find(2);
3892         ASSERT_NE(TestFile.SoundsListAudioType.end(), TestFileIter);
3893         ASSERT_EQ("application/ogg", TestFileIter->second);
3894         
3895         // Check the TYPE section.
3896         
3897         TestFileIter = TestFile.SoundsListType.find(2);
3898         ASSERT_NE(TestFile.SoundsListType.end(), TestFileIter);
3899         ASSERT_EQ("work", TestFileIter->second);
3900         
3901         // Check the ALTID section.
3902         
3903         TestFileIter = TestFile.SoundsListAltID.find(2);
3904         ASSERT_NE(TestFile.SoundsListAltID.end(), TestFileIter);
3905         ASSERT_EQ("44", TestFileIter->second);
3906         
3907         // Check the PID section.
3908         
3909         TestFileIter = TestFile.SoundsListPID.find(2);
3910         ASSERT_NE(TestFile.SoundsListPID.end(), TestFileIter);
3911         ASSERT_EQ("41", TestFileIter->second);
3912         
3913         // Check the MEDIATYPE section.
3914         
3915         TestFileIter = TestFile.SoundsListMediatype.find(2);
3916         ASSERT_NE(TestFile.SoundsListMediatype.end(), TestFileIter);
3917         ASSERT_EQ("application/ogg", TestFileIter->second);
3918         
3919         // Check the LANGUAGE section.
3920         
3921         TestFileIter = TestFile.SoundsListLanguage.find(2);
3922         ASSERT_NE(TestFile.SoundsListLanguage.end(), TestFileIter);
3923         ASSERT_EQ("kw", TestFileIter->second);
3924         
3925         // Check the PREF section.
3926         
3927         TestFileIntIter = TestFile.SoundsListPref.find(2);
3928         ASSERT_NE(TestFile.SoundsListPref.end(), TestFileIntIter);
3929         ASSERT_EQ(42, TestFileIntIter->second);
3930         
3931         // Check the extra tokens.
3932         
3933         TestFileIter = TestFile.SoundsListTokens.find(2);
3934         ASSERT_NE(TestFile.SoundsListTokens.end(), TestFileIter);
3935         ASSERT_EQ("WAVE=SOUND", TestFileIter->second);
3939 TEST(ContactLoad, CalendarURITests){
3941         ContactDataObject TestFile;
3943         // Check that the vCard 4.0 file loads OK.
3945         ASSERT_EQ(CONTACTLOAD_OK, TestFile.LoadFile("LoadCheck-Load4.vcf"));
3947         std::map<int,wxString>::iterator TestFileIter;
3948         std::map<int,int>::iterator TestFileIntIter;
3950         // Start with a general calendar address.
3951         
3952         TestFileIter = TestFile.CalendarList.find(0);
3953         ASSERT_NE(TestFile.CalendarList.end(), TestFileIter);
3954         ASSERT_EQ("http://example.com", TestFileIter->second);
3955         
3956         // Check the TYPE section.
3957         
3958         TestFileIter = TestFile.CalendarListType.find(0);
3959         ASSERT_EQ(TestFile.CalendarListType.end(), TestFileIter);
3960         
3961         // Check the ALTID section.
3962         
3963         TestFileIter = TestFile.CalendarListAltID.find(0);
3964         ASSERT_NE(TestFile.CalendarListAltID.end(), TestFileIter);
3965         ASSERT_EQ("34", TestFileIter->second);
3966         
3967         // Check the PID section.
3968         
3969         TestFileIter = TestFile.CalendarListPID.find(0);
3970         ASSERT_NE(TestFile.CalendarListPID.end(), TestFileIter);
3971         ASSERT_EQ("31", TestFileIter->second);
3972         
3973         // Check the MEDIATYPE section.
3974         
3975         TestFileIter = TestFile.CalendarListMediatype.find(0);
3976         ASSERT_NE(TestFile.CalendarListMediatype.end(), TestFileIter);
3977         ASSERT_EQ("text/plain", TestFileIter->second);
3978         
3979         // Check the PREF section.
3980         
3981         TestFileIntIter = TestFile.CalendarListPref.find(0);
3982         ASSERT_NE(TestFile.CalendarListPref.end(), TestFileIntIter);
3983         ASSERT_EQ(32, TestFileIntIter->second);
3984         
3985         // Check the extra tokens.
3986         
3987         TestFileIter = TestFile.CalendarListTokens.find(0);
3988         ASSERT_NE(TestFile.CalendarListTokens.end(), TestFileIter);
3989         ASSERT_EQ("CALENDARS=FLYING", TestFileIter->second);
3991         // Start with a home calendar address.
3992         
3993         TestFileIter = TestFile.CalendarList.find(1);
3994         ASSERT_NE(TestFile.CalendarList.end(), TestFileIter);
3995         ASSERT_EQ("http://example.com/home", TestFileIter->second);
3996         
3997         // Check the TYPE section.
3998         
3999         TestFileIter = TestFile.CalendarListType.find(1);
4000         ASSERT_NE(TestFile.CalendarListType.end(), TestFileIter);
4001         ASSERT_EQ("home", TestFileIter->second);
4002         
4003         // Check the ALTID section.
4004         
4005         TestFileIter = TestFile.CalendarListAltID.find(1);
4006         ASSERT_NE(TestFile.CalendarListAltID.end(), TestFileIter);
4007         ASSERT_EQ("44", TestFileIter->second);
4008         
4009         // Check the PID section.
4010         
4011         TestFileIter = TestFile.CalendarListPID.find(1);
4012         ASSERT_NE(TestFile.CalendarListPID.end(), TestFileIter);
4013         ASSERT_EQ("41", TestFileIter->second);
4014         
4015         // Check the MEDIATYPE section.
4016         
4017         TestFileIter = TestFile.CalendarListMediatype.find(1);
4018         ASSERT_NE(TestFile.CalendarListMediatype.end(), TestFileIter);
4019         ASSERT_EQ("text/dryplain", TestFileIter->second);
4020         
4021         // Check the PREF section.
4022         
4023         TestFileIntIter = TestFile.CalendarListPref.find(1);
4024         ASSERT_NE(TestFile.CalendarListPref.end(), TestFileIntIter);
4025         ASSERT_EQ(42, TestFileIntIter->second);
4026         
4027         // Check the extra tokens.
4028         
4029         TestFileIter = TestFile.CalendarListTokens.find(1);
4030         ASSERT_NE(TestFile.CalendarListTokens.end(), TestFileIter);
4031         ASSERT_EQ("CALENDARS=GROUNDED", TestFileIter->second);
4033         // Start with a business calendar address.
4034         
4035         TestFileIter = TestFile.CalendarList.find(2);
4036         ASSERT_NE(TestFile.CalendarList.end(), TestFileIter);
4037         ASSERT_EQ("http://example.com/business", TestFileIter->second);
4038         
4039         // Check the TYPE section.
4040         
4041         TestFileIter = TestFile.CalendarListType.find(2);
4042         ASSERT_NE(TestFile.CalendarListType.end(), TestFileIter);
4043         ASSERT_EQ("work", TestFileIter->second);
4044         
4045         // Check the ALTID section.
4046         
4047         TestFileIter = TestFile.CalendarListAltID.find(2);
4048         ASSERT_NE(TestFile.CalendarListAltID.end(), TestFileIter);
4049         ASSERT_EQ("54", TestFileIter->second);
4050         
4051         // Check the PID section.
4052         
4053         TestFileIter = TestFile.CalendarListPID.find(2);
4054         ASSERT_NE(TestFile.CalendarListPID.end(), TestFileIter);
4055         ASSERT_EQ("51", TestFileIter->second);
4056         
4057         // Check the MEDIATYPE section.
4058         
4059         TestFileIter = TestFile.CalendarListMediatype.find(2);
4060         ASSERT_NE(TestFile.CalendarListMediatype.end(), TestFileIter);
4061         ASSERT_EQ("text/stillwetink", TestFileIter->second);
4062         
4063         // Check the PREF section.
4064         
4065         TestFileIntIter = TestFile.CalendarListPref.find(2);
4066         ASSERT_NE(TestFile.CalendarListPref.end(), TestFileIntIter);
4067         ASSERT_EQ(52, TestFileIntIter->second);
4068         
4069         // Check the extra tokens.
4070         
4071         TestFileIter = TestFile.CalendarListTokens.find(2);
4072         ASSERT_NE(TestFile.CalendarListTokens.end(), TestFileIter);
4073         ASSERT_EQ("CALENDARS=CANCELLED", TestFileIter->second);
4077 TEST(ContactLoad, CalendarAddressURITests){
4079         ContactDataObject TestFile;
4081         // Check that the vCard 4.0 file loads OK.
4083         ASSERT_EQ(CONTACTLOAD_OK, TestFile.LoadFile("LoadCheck-Load4.vcf"));
4085         std::map<int,wxString>::iterator TestFileIter;
4086         std::map<int,int>::iterator TestFileIntIter;
4088         // Start with a general calendar request address.
4089         
4090         TestFileIter = TestFile.CalendarRequestList.find(0);
4091         ASSERT_NE(TestFile.CalendarRequestList.end(), TestFileIter);
4092         ASSERT_EQ("http://example.com/request", TestFileIter->second);
4093         
4094         // Check the TYPE section.
4095         
4096         TestFileIter = TestFile.CalendarRequestListType.find(0);
4097         ASSERT_EQ(TestFile.CalendarRequestListType.end(), TestFileIter);
4098         
4099         // Check the ALTID section.
4100         
4101         TestFileIter = TestFile.CalendarRequestListAltID.find(0);
4102         ASSERT_NE(TestFile.CalendarRequestListAltID.end(), TestFileIter);
4103         ASSERT_EQ("14", TestFileIter->second);
4104         
4105         // Check the PID section.
4106         
4107         TestFileIter = TestFile.CalendarRequestListPID.find(0);
4108         ASSERT_NE(TestFile.CalendarRequestListPID.end(), TestFileIter);
4109         ASSERT_EQ("11", TestFileIter->second);
4110         
4111         // Check the MEDIATYPE section.
4112         
4113         TestFileIter = TestFile.CalendarRequestListMediatype.find(0);
4114         ASSERT_NE(TestFile.CalendarRequestListMediatype.end(), TestFileIter);
4115         ASSERT_EQ("text/plain", TestFileIter->second);
4116         
4117         // Check the PREF section.
4118         
4119         TestFileIntIter = TestFile.CalendarRequestListPref.find(0);
4120         ASSERT_NE(TestFile.CalendarRequestListPref.end(), TestFileIntIter);
4121         ASSERT_EQ(12, TestFileIntIter->second);
4122         
4123         // Check the extra tokens.
4124         
4125         TestFileIter = TestFile.CalendarRequestListTokens.find(0);
4126         ASSERT_NE(TestFile.CalendarRequestListTokens.end(), TestFileIter);
4127         ASSERT_EQ("REQUEST=YES", TestFileIter->second);
4129         // Start with a home calendar request address.
4130         
4131         TestFileIter = TestFile.CalendarRequestList.find(1);
4132         ASSERT_NE(TestFile.CalendarRequestList.end(), TestFileIter);
4133         ASSERT_EQ("http://example.com/home/request", TestFileIter->second);
4134         
4135         // Check the TYPE section.
4136         
4137         TestFileIter = TestFile.CalendarRequestListType.find(1);
4138         ASSERT_NE(TestFile.CalendarRequestListType.end(), TestFileIter);
4139         ASSERT_EQ("home", TestFileIter->second);
4140         
4141         // Check the ALTID section.
4142         
4143         TestFileIter = TestFile.CalendarRequestListAltID.find(1);
4144         ASSERT_NE(TestFile.CalendarRequestListAltID.end(), TestFileIter);
4145         ASSERT_EQ("24", TestFileIter->second);
4146         
4147         // Check the PID section.
4148         
4149         TestFileIter = TestFile.CalendarRequestListPID.find(1);
4150         ASSERT_NE(TestFile.CalendarRequestListPID.end(), TestFileIter);
4151         ASSERT_EQ("21", TestFileIter->second);
4152         
4153         // Check the MEDIATYPE section.
4154         
4155         TestFileIter = TestFile.CalendarRequestListMediatype.find(1);
4156         ASSERT_NE(TestFile.CalendarRequestListMediatype.end(), TestFileIter);
4157         ASSERT_EQ("text/dryplain", TestFileIter->second);
4158         
4159         // Check the PREF section.
4160         
4161         TestFileIntIter = TestFile.CalendarRequestListPref.find(1);
4162         ASSERT_NE(TestFile.CalendarRequestListPref.end(), TestFileIntIter);
4163         ASSERT_EQ(22, TestFileIntIter->second);
4164         
4165         // Check the extra tokens.
4166         
4167         TestFileIter = TestFile.CalendarRequestListTokens.find(1);
4168         ASSERT_NE(TestFile.CalendarRequestListTokens.end(), TestFileIter);
4169         ASSERT_EQ("REQUEST=MAYBE", TestFileIter->second);
4171         // Start with a business calendar request address.
4172         
4173         TestFileIter = TestFile.CalendarRequestList.find(2);
4174         ASSERT_NE(TestFile.CalendarRequestList.end(), TestFileIter);
4175         ASSERT_EQ("http://example.com/business/request", TestFileIter->second);
4176         
4177         // Check the TYPE section.
4178         
4179         TestFileIter = TestFile.CalendarRequestListType.find(2);
4180         ASSERT_NE(TestFile.CalendarRequestListType.end(), TestFileIter);
4181         ASSERT_EQ("work", TestFileIter->second);
4182         
4183         // Check the ALTID section.
4184         
4185         TestFileIter = TestFile.CalendarRequestListAltID.find(2);
4186         ASSERT_NE(TestFile.CalendarRequestListAltID.end(), TestFileIter);
4187         ASSERT_EQ("34", TestFileIter->second);
4188         
4189         // Check the PID section.
4190         
4191         TestFileIter = TestFile.CalendarRequestListPID.find(2);
4192         ASSERT_NE(TestFile.CalendarRequestListPID.end(), TestFileIter);
4193         ASSERT_EQ("31", TestFileIter->second);
4194         
4195         // Check the MEDIATYPE section.
4196         
4197         TestFileIter = TestFile.CalendarRequestListMediatype.find(2);
4198         ASSERT_NE(TestFile.CalendarRequestListMediatype.end(), TestFileIter);
4199         ASSERT_EQ("text/stillwetink", TestFileIter->second);
4200         
4201         // Check the PREF section.
4202         
4203         TestFileIntIter = TestFile.CalendarRequestListPref.find(2);
4204         ASSERT_NE(TestFile.CalendarRequestListPref.end(), TestFileIntIter);
4205         ASSERT_EQ(32, TestFileIntIter->second);
4206         
4207         // Check the extra tokens.
4208         
4209         TestFileIter = TestFile.CalendarRequestListTokens.find(2);
4210         ASSERT_NE(TestFile.CalendarRequestListTokens.end(), TestFileIter);
4211         ASSERT_EQ("REQUEST=NO", TestFileIter->second);
4212         
4215 TEST(ContactLoad, FreeBusyTests){
4217         ContactDataObject TestFile;
4219         // Check that the vCard 4.0 file loads OK.
4221         ASSERT_EQ(CONTACTLOAD_OK, TestFile.LoadFile("LoadCheck-Load4.vcf"));
4223         std::map<int,wxString>::iterator TestFileIter;
4224         std::map<int,int>::iterator TestFileIntIter;
4226         // Start with a general calendar free busy address.
4227         
4228         TestFileIter = TestFile.FreeBusyList.find(0);
4229         ASSERT_NE(TestFile.FreeBusyList.end(), TestFileIter);
4230         ASSERT_EQ("http://example.com/freebusy", TestFileIter->second);
4231         
4232         // Check the TYPE section.
4233         
4234         TestFileIter = TestFile.FreeBusyListType.find(0);
4235         ASSERT_EQ(TestFile.FreeBusyListType.end(), TestFileIter);
4236         
4237         // Check the ALTID section.
4238         
4239         TestFileIter = TestFile.FreeBusyListAltID.find(0);
4240         ASSERT_NE(TestFile.FreeBusyListAltID.end(), TestFileIter);
4241         ASSERT_EQ("74", TestFileIter->second);
4242         
4243         // Check the PID section.
4244         
4245         TestFileIter = TestFile.FreeBusyListPID.find(0);
4246         ASSERT_NE(TestFile.FreeBusyListPID.end(), TestFileIter);
4247         ASSERT_EQ("71", TestFileIter->second);
4248         
4249         // Check the MEDIATYPE section.
4250         
4251         TestFileIter = TestFile.FreeBusyListMediatype.find(0);
4252         ASSERT_NE(TestFile.FreeBusyListMediatype.end(), TestFileIter);
4253         ASSERT_EQ("text/plain", TestFileIter->second);
4254         
4255         // Check the PREF section.
4256         
4257         TestFileIntIter = TestFile.FreeBusyListPref.find(0);
4258         ASSERT_NE(TestFile.FreeBusyListPref.end(), TestFileIntIter);
4259         ASSERT_EQ(72, TestFileIntIter->second);
4260         
4261         // Check the extra tokens.
4262         
4263         TestFileIter = TestFile.FreeBusyListTokens.find(0);
4264         ASSERT_NE(TestFile.FreeBusyListTokens.end(), TestFileIter);
4265         ASSERT_EQ("STATUS=OUT", TestFileIter->second);
4267         // Start with a home calendar free busy address.
4268         
4269         TestFileIter = TestFile.FreeBusyList.find(1);
4270         ASSERT_NE(TestFile.FreeBusyList.end(), TestFileIter);
4271         ASSERT_EQ("http://example.com/home/freebusy", TestFileIter->second);
4272         
4273         // Check the TYPE section.
4274         
4275         TestFileIter = TestFile.FreeBusyListType.find(1);
4276         ASSERT_NE(TestFile.FreeBusyListType.end(), TestFileIter);
4277         ASSERT_EQ("home", TestFileIter->second);
4278         
4279         // Check the ALTID section.
4280         
4281         TestFileIter = TestFile.FreeBusyListAltID.find(1);
4282         ASSERT_NE(TestFile.FreeBusyListAltID.end(), TestFileIter);
4283         ASSERT_EQ("84", TestFileIter->second);
4284         
4285         // Check the PID section.
4286         
4287         TestFileIter = TestFile.FreeBusyListPID.find(1);
4288         ASSERT_NE(TestFile.FreeBusyListPID.end(), TestFileIter);
4289         ASSERT_EQ("81", TestFileIter->second);
4290         
4291         // Check the MEDIATYPE section.
4292         
4293         TestFileIter = TestFile.FreeBusyListMediatype.find(1);
4294         ASSERT_NE(TestFile.FreeBusyListMediatype.end(), TestFileIter);
4295         ASSERT_EQ("text/dryplain", TestFileIter->second);
4296         
4297         // Check the PREF section.
4298         
4299         TestFileIntIter = TestFile.FreeBusyListPref.find(1);
4300         ASSERT_NE(TestFile.FreeBusyListPref.end(), TestFileIntIter);
4301         ASSERT_EQ(82, TestFileIntIter->second);
4302         
4303         // Check the extra tokens.
4304         
4305         TestFileIter = TestFile.FreeBusyListTokens.find(1);
4306         ASSERT_NE(TestFile.FreeBusyListTokens.end(), TestFileIter);
4307         ASSERT_EQ("STATUS=FREE", TestFileIter->second);
4309         // Start with a business calendar free busy address.
4310         
4311         TestFileIter = TestFile.FreeBusyList.find(2);
4312         ASSERT_NE(TestFile.FreeBusyList.end(), TestFileIter);
4313         ASSERT_EQ("http://example.com/business/freebusy", TestFileIter->second);
4314         
4315         // Check the TYPE section.
4316         
4317         TestFileIter = TestFile.FreeBusyListType.find(2);
4318         ASSERT_NE(TestFile.FreeBusyListType.end(), TestFileIter);
4319         ASSERT_EQ("work", TestFileIter->second);
4320         
4321         // Check the ALTID section.
4322         
4323         TestFileIter = TestFile.FreeBusyListAltID.find(2);
4324         ASSERT_NE(TestFile.FreeBusyListAltID.end(), TestFileIter);
4325         ASSERT_EQ("94", TestFileIter->second);
4326         
4327         // Check the PID section.
4328         
4329         TestFileIter = TestFile.FreeBusyListPID.find(2);
4330         ASSERT_NE(TestFile.FreeBusyListPID.end(), TestFileIter);
4331         ASSERT_EQ("91", TestFileIter->second);
4332         
4333         // Check the MEDIATYPE section.
4334         
4335         TestFileIter = TestFile.FreeBusyListMediatype.find(2);
4336         ASSERT_NE(TestFile.FreeBusyListMediatype.end(), TestFileIter);
4337         ASSERT_EQ("text/stillwetink", TestFileIter->second);
4338         
4339         // Check the PREF section.
4340         
4341         TestFileIntIter = TestFile.FreeBusyListPref.find(2);
4342         ASSERT_NE(TestFile.FreeBusyListPref.end(), TestFileIntIter);
4343         ASSERT_EQ(92, TestFileIntIter->second);
4344         
4345         // Check the extra tokens.
4346         
4347         TestFileIter = TestFile.FreeBusyListTokens.find(2);
4348         ASSERT_NE(TestFile.FreeBusyListTokens.end(), TestFileIter);
4349         ASSERT_EQ("STATUS=BUSY", TestFileIter->second);
4353 TEST(ContactLoad, KeyTests){
4355         ContactDataObject TestFile;
4357         wxString KeyA = "LS0tLS1CRUdJTiBQR1AgUFVCTElDIEtFWSBCTE9DSy0tLS0tClZlcnNpb246IEdudVBHIHYyCgpt"
4358  "UU11QkZaL0JyWVJDQUN2cTNueUl4dXJPOFovMHcwQWdkeUdhN1d2cWRpdk5OWVdEM3dmZkgrSi83"
4359  "R2o1dkNOClJwWFQ5TVI4SEdmR0Jwai9hc0NsajltbjhnRENMcVZJaXFybXZXK3dHbnhBVWxFU05V"
4360  "T201cEx6NTRwTzBzOW0KYzJ5SDRkYWVYR3pRTXFLUit2TDZaTWpDc0pSRk1UWVAzSDlTMlBFaHFF"
4361  "MXl4TnBpRi9ZTS9jNGNOYmU5bEZsTgpKMnJ2QzA2bzZuMFlzYWtuZTk3bWlndGNyTUpZVDljVDF4"
4362  "cjB5YUhDekcrVXZqOG1RMnlGT0tpVEpxeGlCVEdhClRMWjJjTFBVZVFFbnpjSWNwNnhVTitQZlZY"
4363  "ZzNNVllHWUZQakk0aUg0anNCQUFDc1BEMmpYSExnYVVzLzJ5VHUKNVF4M1RKSHljVTArOXZidC85"
4364  "VDJKdGt3c1R5SXlqQnJ0eGd6QVFERENaaFZoNU5oOFJuSWlSRDFzMzNmN1RoZgp4eENUMU0yWHI3"
4365  "dWh1WVFTZ1FmNUFRYkFscDZpUk9xTms5VVlBeHNSWVdPelRFd3RWMGlCLzBJamwyZFBUTm1YClJx"
4366  "NW9FN0JOT3JYZjEzMmM4NlFpNWdPbGVHbWNoNFEvUUZTbUYwT05FZCs4aVNWemMvaVdFTUh4SzRO"
4367  "Z1ZMN0kKc0FMMDVweGZhdWxpWlRlWVVGcGM1ajZnWHFpUExyNy93ODB4Q05vOWZsWmZXQkZzYVhM"
4368  "Zm10Z3I1MU9kYXhJNQpLZnFjRjg1cnVQSkZkZjJWb1hxRU81YXpHZ1VsS0xoZDg5NkZUR21tZEF0"
4369  "SUp5b0RtTldyVFgwS1VqQ05ELzM4Ck5UZDZrK3h6bW1NcTJCRy9VRy9NVGtlTUl1T3BEenZGQjBi"
4370  "R2NRZnlGSC9iVnRjQzBOS2lnT0crMStPZ1dMMGUKQzZqcGRyYXU3THNKeXcrbU9VSjdHWHFTN2pK"
4371  "WnU2ZjBZcWxLbEZrUllBZi9VekVUL3lBU2VhQUV2a1BqMnF5Lwo4b1ZIQWdrVGFZSWUvSHF1UEN4"
4372  "RVc4bmgzWEp2emIxaWVlOHMrT2lZaE1wWVFIdFVTYTdESWR1eTgzZllTS2REClZzUnNNWExiMFly"
4373  "Z1IvamhxdVZhYzR3TXFvZ3JJTGRoK3lhcDdtUEhwdUVrOCtLcGROUldJNkZMS0srekpxcVYKZWh6"
4374  "ckNDc1QzL09URUd6bnpTSllXOXdQWkhlbEViMVhjQjIvbXJZSWlaZkZvUUI5K1ozNkYzS051UDR5"
4375  "cTdGcQpacWV5L0NLRFN4OTl4ckJwaTlLVENJUTl6UE5QS0xiSk0xUWFSVlNMNEhIcmh6dFJQc2Jt"
4376  "bzlOS01lVHliSkE5ClpvY0JZRno1d1Q1RWRuZEdRUG51eWhESHY4UHZrbStWQXJnRVpkdUdFL0tI"
4377  "T1N6amlOVFE0QUtzaWc2OThFWGYKb0xRc1JYaGhiWEJzWlNCVmMyVnlJQ2hKYm5aaGJHbGtLU0E4"
4378  "WlhoaGJYQnNaVUJsZUdGdGNHeGxMbU52YlQ2SQpnUVFURVFnQUtRVUNWbjhHdGdJYkF3VUpBREJD"
4379  "Q2djTENRZ0hBd0lCQmhVSUFna0tDd1FXQWdNQkFoNEJBaGVBCkFBb0pFSWJ1TXE0ZVZZTFY0L01B"
4380  "L2lSUG41cUttdC9MK0doWVlIcCtlNmRiTHdxRFpCRkI3WGRlTTNZNlVScC8KQVFDZ21NSGM4d21Y"
4381  "S0M0QTJUMURPTHdhMUNVVzFLWHBaWm9xWEEwLzFhcHBHcmtCalFSV2Z3YTJFQVlBbnZYZgp0OWg1"
4382  "QnYyWTdvckp2UGQvTXNYTlZMc0E1UTh3TTc2TytrRjdWMktsNzBjZitJVDM5UUpWRGtKSk15NjFG"
4383  "UEQvClFoME5WNm05VjVsZ0E0U2psamo0SzIvc0ExUlhkRHVtaWFrWk1naUN4eXBveEhjM09uOEdX"
4384  "di9kZXl0WExpU2YKQnRrVHpiZEZmMDVHdGk1NXc1cnREQmxEM1o2YmR6U0ZtRS8rK2VFYXR4Uzh5"
4385  "NXJBNTM2WmpoSm5RQm43dm1aSQpwb3FUeTR0SEQ3aU5oWjN5eXFjZlpBd3BzSmNpZy9RdGVhZWNF"
4386  "UVgvSVlvL01wQllMTkp1V1VSRVpqeERBQU1GCkJmOUxmVlZJakhBdWt3NzUxeHFsQmhaUTRCVVV5"
4387  "eHE4UTVicjZXVjJzeVppNnhWSW5OS2h3Q2NGYkZNVjV4TUIKczg3eGFzc1UrVzlaZktuODdScDRp"
4388  "a3JxOEVvV3FPZTVMQW93SUF6bHYxVUlzMWRpOENHeStlU1lhYVMzVGd0Ywo2REhGS004Vk5KUU8w"
4389  "VWZkUXNwS2FuNUVLL1ZUNy9QQVJONGFKcFZxdjNtYkVFWkdJdDJHMStpUm15VW5LbFd4CkxoaUky"
4390  "REs5Rm9CajhucXlJVG1KMTBVTmRib2lmeUtFNTFwU2VlYjN3Rm8yNGhNNlVkbEVwVitQVGJvU0dG"
4391  "ZXAKNGQrSVp3UVlFUWdBRHdVQ1ZuOEd0Z0liREFVSkFEQkNDZ0FLQ1JDRzdqS3VIbFdDMVlJT0FR"
4392  "Q0FyWXRSZDBqSQpFYWNPbUxRWUNNUzNGVUNQRDc3dFlxd1VqM3NjSGVYWTdBRDhEKzAvMWdDdlZX"
4393  "elJuZ1dBSFZidXZxSkhmUEFpCm1HVFVHa1ZHOGNZdlBlUT0KPWtxclcKLS0tLS1FTkQgUEdQIFBV"
4394  "QkxJQyBLRVkgQkxPQ0stLS0tLQo=";
4395  
4396         wxString KeyB = "LS0tLS1CRUdJTiBQR1AgUFVCTElDIEtFWSBCTE9DSy0tLS0tClZlcnNpb246IEdudVBHIHYyCgpt"
4397  "UU11QkZaL0tiWVJDQUNqTDdwMDZEVTJaQTZwdmJkZ1BVQU5hd1dwTGt3ZlFnZHdWdkVNcFQvRnZu"
4398  "QjNGbDV4CnFFL2dMRFJDZlhLTVF4UEF1NWRBWUVpZVhxN01KN0ZtVXVYbDhJSjZiY3pKRUNmWUF6"
4399  "RFJ0VmJlMm5ReXMyUDcKaXBFcnREK1dOZFM5MEVPbFVYb2lhOGR3NmpXczl5QUIvb3BubXBDV21w"
4400  "QjI2UVBKNDlNWTBVNWZ1NzhwamJ2MAppMWxmUXIyaWp4QzRDWHZlOGxld05Uak1pOU5UNkt6R1lw"
4401  "UXc1MHpXUng0Zk9teENselE5c3lQUWFuZ1htaTVECmk5MytNYXBaSlZpY3UyT3I1VkdqUlRXYWov"
4402  "UDNqN1p2REdtNGNwaUhqMURsNTFVam5ZM09xOXE4VnczMkEvK2YKbW9SWWxiY3dtWU1LeVMzMHJx"
4403  "SjVCOE0xcTdsenJ3TTBGQXczQVFEN3FnOE9pR2E1emR1UnlYdGlQMFFNSVZBOApDZUxuR25xYUJQ"
4404  "dytEYkhDUndmK05ZelJiNUxBUXZQTXpsNlkrUTczb3N4VXhMYzBHOUt5K2tNWVRNSFg5S2xzCmV2"
4405  "UThoQkFEc3Y5WDhVeklBRXpLUUJVQ2tWT0JQT2xLMnJiaHdrRzZGendDdzJDemxmU0NXSzBxaWhP"
4406  "bGFQVEsKL0c1SVJEQWg2SkFXTitjM1c5SHp1TUN1T1Vhb3didENhU2cxcFdocWNEY2hoWFZtNGdP"
4407  "Z3F6cDNkWXdKU3FEQwpCWGV4KzRsWk84TzZSa3BPMVhmTHlkSWpxSlQrQUNMdkFjek8zbW90c2J6"
4408  "OEZNWWZzVTQ2ZWsvd05DczZJdlFDCjJQcFFJbHFHU3NmZXFLUGpsUXVGbkRQNHEvNUNlVU5odmZr"
4409  "Mm5VeTcwTzc4Z2hFdEViUU44MXNxWUpROHBTdTcKRExjVS8zQ1oyYXJ0RWxkVGJ5a0p1RTJ6a3BV"
4410  "MjA1WTJvU0lDMkI1eXFnZjlIeWZOemYxU3lsRVV5d3ZzZ3F2LwpuNUNzbDdobDNML3BSQ1A0dEF0"
4411  "NTA5TFFiejNDRk8vSGk3Umg1V3luOFVXZ1EzU0dYdThWQjNrUGhmRkFDNFZPCjJBUVdnMFlDeEth"
4412  "SSs1dUljUWRGSDR6b0s0cWNidmxZN0xWNXozOWIza2JGWUgzVytEZjJkNkhJRzZaZUF2aXQKZXhZ"
4413  "ZWNlMGNpS0l6dklqVUJydUI0R3BRREhZbGN5QmpxcWtOVE5zTzU4aEsvQisvangxMGdLUVJTa0lw"
4414  "c0VJVgpLa0dBRk5sVnlMTGthck1hYnRNWUlzZnBidWtoSjF3d09aTXJITGJwSGxQSFFzSDJJczNI"
4415  "dmlkQ2RBdUdRMWQyCjE2U3lEMGFUMHFIMnlkY1V2WFAyUnIwRnFzR3BLY2dWeThMOTcyQWpCTmRT"
4416  "RWU0YXVQVGhWRXE5RWtScENSVGIKQUxRdlJYaGhiWEJzWlNCVmMyVnlJRElnS0VsdWRtRnNhV1Fw"
4417  "SUR4bGVHRnRjR3hsTWtCbGVHRnRjR3hsTG1OdgpiVDZJZ1FRVEVRZ0FLUVVDVm44cHRnSWJBd1VK"
4418  "QUNnMkNnY0xDUWdIQXdJQkJoVUlBZ2tLQ3dRV0FnTUJBaDRCCkFoZUFBQW9KRUFBdVBvS2h3WmFq"
4419  "VmFFQkFMN01saU5wLzR0cy9QWkQwdlRCcTYySjBUV0hvTjBDcHpqUXJKQUwKblNZeUFQMGJYY0Y4"
4420  "UHRFejNlUkJkazBkTlNFeU1EMkVWVGQ0K3hhZTRRNUx4Q3gxU0xrQmpRUldmeW0yRUFZQQp4eWs4"
4421  "dUQ4MnZTZ2xORFA0UlQ3ZzExSjdnTXROV1g0SjBEbmdocVZVc0svY2xFQm4yenZYN080eElpQnlu"
4422  "VG9wCmRKeDZaeE5pdFBKVG0zZzI4alRLUElKeXlDVGVHLzJiaWtFc0hUYlFpMStpaXBkcEpjZm9E"
4423  "cTlJMVBMVk41Mm8KaFVMaUJhdXdwNHFIeTFyTys3ajhtbWVlL1M5ckpzM2NmQnZHR09acmpFK3g4"
4424  "TTRMdjJDeGlEWnJzRUFkdHNPUgpnMHgxMFFqNjJwOExuTHg2TzQ4ZWh0cGZTV1JnRmZOdU9vSEJV"
4425  "U3RwSW5pMHRrajJSQitGaUgwZWxkc1VyRndMCkFBTUdCZ0NPYzk5bjB3OWEvelRDL0VxSnRjU2ll"
4426  "RkNtckMvODYrcW12OEJ3aW5zdU1STUtVSG1UdFFkR1RRQkcKL0ZXa2pKYm9YMEhZckp0d1JBaC9t"
4427  "M2N6UnNMZjZkT3QxL2hEUVF2ZGVIcVhuZ1JleitWNzAyY0pUVVdwVGg5RgpjYnZ3NFpjMk93Yzhz"
4428  "am13L3dYc2NMK0ZNU09mT3l6eC8xWmxBUDVoSkQ5TTNnV1dEL0ZLSk0weUxSZDI5OW92CkpoNDZV"
4429  "VkIvaHdxelEyYnlEUzV2QXhXUlFsT0FHaEdXVzNOcjlQRE82N2dsSWRPM2o5VzN4bENUNjJ4cmEv"
4430  "VmMKbDVDTU9qU0lad1FZRVFnQUR3VUNWbjhwdGdJYkRBVUpBQ2cyQ2dBS0NSQUFMajZDb2NHV296"
4431  "aThBUUNqc09YbQpGdEFCcEU4b0EzVmtPT1o4b28wMFZTcUhKVFkxRzhpNXgvNmtZQUVBMC9kR0Jm"
4432  "RHVhMDBxL2Z1Z3dYTmlPREJXCjh2a2hlMEVIOWFlYzJQaUd3VTg9Cj1ZWmZuCi0tLS0tRU5EIFBH"
4433  "UCBQVUJMSUMgS0VZIEJMT0NLLS0tLS0K";
4435         wxString KeyC = "LS0tLS1CRUdJTiBQR1AgUFVCTElDIEtFWSBCTE9DSy0tLS0tClZlcnNpb246IEdudVB"
4436  "HIHYyCgptUU11QkZaL0x3d1JDQUN0cVNJa3hYN2NBWkJHNFlIUmRldkRudndvM1V4dEQ0ZmxmaW"
4437  "1NQmdTemUwbHJTMHNjCmEyaDRmMzJ1eklpR2Q1S0plT0psV3AwSUFBOXNCUW5lQVpXVm9XUjZaO"
4438  "TlZZnNtUjhoSENZVERqTGpVRUFnMTYKYzNsbUpWbkRqTDF4bmhSR2RjUGJxS2VQOGVuZ0hQWE4w"
4439  "M0tuSkVYcUNZSnFNc3NySFNlN3crMFNMeVJPQkJkeQprSE5Lb1B1bUdOUWIvakhLd0QzNFg1SEJ"
4440  "MbUVkbXczR1gzNXVwbm9pVnNqSGJzcHY3bVBQRVJxdlNGMUtlTmVHCkhnSllHdlZiNUJZenpMQ3"
4441  "dRRXU0VFNVMFRLQytMeUZUUFpPZE9pVzU2RG5qbktrNk1Od2xCWTFDZXRzZFpwR2QKUXFWZmNYd"
4442  "FRnNG1SNGZzVVJaQ0JXR0w3OFMrQ2tDUFh4NTRIQVFDbEhVbUFzK3hnV0ExbU11SzVva2FadDYz"
4443  "eQoyb09CSXBseXZkcDhreCtVY3dmL2FWUGQ1dGZ2S3JPVTV0VVZDdlpMN0syVnlkNUNSckFTUG9"
4444  "3VkwrWmxjYXNDCloyaDEvRGJKQ1FYOVVPTU5LNXVVMUZYNFErLy83OWR3ZlZVOEZYZUpzM1NKeD"
4445  "hHQlB3Z0s4RStmait2MWVNSmMKTkhCMlV2eGtrU050akErUHB1dW5sYXhGYWpBRTU2ckt6N2U0N"
4446  "GI5NUNjVldkUTAxbTByeGptSGhTUmtXeDlWNQp4cExsbUZ2Q1ZLMXFsMlV5eCtzZU9RQXJpMjBG"
4447  "cUUzbktQMU9BNWt2QTd3b2NpZ1JVakVVWk1XOEFxL1daV2xnCnk2YW9pVTFPSlp6Q2tkeStPcWV"
4448  "xL0djeWRIYmcwdUZ0N3UvSTROTWFLVlZMREhWdStSWXZlcGlzNy93TVMvclMKQTVwVk56NURRMX"
4449  "R3cTlJTWV0NGNGRnBjOFdIeTVnR0pUNEFRVk1UYU5RZ0FuR1JqKytBTEpObCtsc1AzaDBjbwpTa"
4450  "0xqOElWbjlkaXRFUGMxRGVRbllUb092WStLSDA3a09MekJmbXcvdmRlTVdkZzd6VDZhQTRza2hB"
4451  "L2VHNWdDCm1sL25IQmM1TS9pV2htRE9FUzFXZTRVYWMzbVNWeG9iSS9oYzNlM3pVcTlkQ0F5OFc"
4452  "4eUxvUThxMVArTnlScFkKd250bUxuZ2RVek00VTFLbEdMTWx3aGF1V3liQlBHTnlqYy9KUWtvdk"
4453  "dVa1g5dHU0cGdzaVlOb2F1MjV5NUs3OQo0Z1MxQUtlQjgya3lteWlQaGQvdnZpK3VhRXIzdFQ5Z"
4454  "2x0WjRiaW1YR3ZQZG1xRnV1MkVYTXhmQXJGL21NSzJoClN5Z1BIUG5jVW9kc3NNV0ZxZjEvNWo1"
4455  "MkwrTzlUK1RLVXhxQ2RHMVFSOVZDU0NoUDY0c0NFaGpqeis5R1g1eHAKZGJRdlJYaGhiWEJzWlN"
4456  "CVmMyVnlJRE1nS0VsdWRtRnNhV1FwSUR4bGVHRnRjR3hsTTBCbGVHRnRjR3hsTG1OdgpiVDZJZ1"
4457  "FRVEVRZ0FLUVVDVm44dkRBSWJBd1VKQUFuZU5BY0xDUWdIQXdJQkJoVUlBZ2tLQ3dRV0FnTUJBa"
4458  "DRCCkFoZUFBQW9KRU1IakNSbG51dzVEOVFrQS9qWGFUTjJSVEhKSytMWEs1dXJEVDBLTElBTUVW"
4459  "ak1lT1dQWmlyVXkKcldnRkFQd09XSi80eDVBT3dvZFVPTnh6Rk5NRXJBV2o5N3Y1bm5ZaURJcm1"
4460  "jUjl1ZzdrQmpRUldmeThNRUFZQQorVFBWcit3VGk2U0RxN25pd3pNZUo2c05QMHlwaXVJaTB3c2"
4461  "pXRDVndnJROGZqVE41STdtL3hldEhtcXdvbDdiCnhEL09iUE1GRm9Tdm1kRERlVlR5cnl0cDI3U"
4462  "05QNVgzUFlxTldKbW9XN09mUTBQRlIvbmprdVNGdmN0NkZDNTMKVjhvU0JPcVVuRWlZckRGSU1z"
4463  "REdOQ25UZ1VUeG9GaFZ1MEVESFRhWVFxV2tYMWxldTJFQTlZTjJub3FFVVh2bgpEOE92TXZaWGx"
4464  "QcTFzdDVmc2IyODB1RGJYMWRvWVpNK0pPRWo3bHp4bEtzUjJNZFlOallKci9RZUwwaEMxVlpmCk"
4465  "FBTUZCZjR0bWdvRmt4a0Y4N2Z4ejB4eU9sYXhGclUzYnhVZXJiYTZPUGZJTjV3cXZmOEFsNGdwZ"
4466  "XRRRitNQysKUnBlR01rYk5iaTRwV3MvV1BUbmhIN2R3UTI4a0c3VXFkSjdiMDdYUkpVbTJrenRu"
4467  "NGRucFJpTGJBU1Z0MFVlRApxeWpNY1hRa21KTTFjVlNDMWpzY0ROUTl1anNjMXBQUi9iK2xPa0F"
4468  "2ZGJtK0x3RHZNMmVJa25LWDZsdkZsa0RlCng1dU82ZXpKTktLZEdMSW53c2hpVHdzSjZoTS9OL3"
4469  "JjbGFZeWpsSlBwY216VFhuaks5SmN1SU9MVHVsVXFwQUwKbHQyWXh1aUlad1FZRVFnQUR3VUNWb"
4470  "jh2REFJYkRBVUpBQW5lTkFBS0NSREI0d2taWjdzT1E1Uk5BUUNUSHVjOQpjM1dORURZY1hhV2N6"
4471  "S3ZwN2R4aWJ1YS9FanNxRC85eHNUOHRZUUQrT2VqRndvRmVrbnpZa2RFMmdJb2ZuaDk0CjdKeUh"
4472  "aNDUyTERkamZXQ1BZWFU9Cj16T3NxCi0tLS0tRU5EIFBHUCBQVUJMSUMgS0VZIEJMT0NLLS0tLS"
4473  "0K";
4475         // Check that the vCard 4.0 file loads OK.
4477         ASSERT_EQ(CONTACTLOAD_OK, TestFile.LoadFile("LoadCheck-Load4.vcf"));
4479         std::map<int,wxString>::iterator TestFileIter;
4480         std::map<int,int>::iterator TestFileIntIter;
4482         // Start with a general key.
4483         
4484         TestFileIter = TestFile.KeyList.find(0);
4485         ASSERT_NE(TestFile.KeyList.end(), TestFileIter);
4486         ASSERT_EQ(KeyA, TestFileIter->second);
4487         
4488         // Check the encoding type.
4489         
4490         TestFileIter = TestFile.KeyListDataEncType.find(0);
4491         ASSERT_NE(TestFile.KeyListDataEncType.end(), TestFileIter);
4492         ASSERT_EQ("base64", TestFileIter->second.ToStdString());
4493         
4494         // Check the file type.
4495         
4496         TestFileIter = TestFile.KeyListDataType.find(0);
4497         ASSERT_NE(TestFile.KeyListDataType.end(), TestFileIter);
4498         ASSERT_EQ("application/pgp-keys", TestFileIter->second);
4500         // Check the TYPE section.
4501         
4502         TestFileIter = TestFile.KeyListType.find(0);
4503         ASSERT_EQ(TestFile.KeyListType.end(), TestFileIter);
4504         
4505         // Check the ALTID section.
4506         
4507         TestFileIter = TestFile.KeyListAltID.find(0);
4508         ASSERT_NE(TestFile.KeyListAltID.end(), TestFileIter);
4509         ASSERT_EQ("54", TestFileIter->second);
4510         
4511         // Check the PID section.
4512         
4513         TestFileIter = TestFile.KeyListPID.find(0);
4514         ASSERT_NE(TestFile.KeyListPID.end(), TestFileIter);
4515         ASSERT_EQ("51", TestFileIter->second);
4516         
4517         // Check the PREF section.
4518         
4519         TestFileIntIter = TestFile.KeyListPref.find(0);
4520         ASSERT_NE(TestFile.KeyListPref.end(), TestFileIntIter);
4521         ASSERT_EQ(52, TestFileIntIter->second);
4522         
4523         // Check the extra tokens.
4524         
4525         TestFileIter = TestFile.KeyListTokens.find(0);
4526         ASSERT_NE(TestFile.KeyListTokens.end(), TestFileIter);
4527         ASSERT_EQ("KEYS=JUSTONE", TestFileIter->second);
4529         // Start with a work key.
4530         
4531         TestFileIter = TestFile.KeyList.find(1);
4532         ASSERT_NE(TestFile.KeyList.end(), TestFileIter);
4533         ASSERT_EQ(KeyB, TestFileIter->second);
4534         
4535         // Check the encoding type.
4536         
4537         TestFileIter = TestFile.KeyListDataEncType.find(1);
4538         ASSERT_NE(TestFile.KeyListDataEncType.end(), TestFileIter);
4539         ASSERT_EQ("base64", TestFileIter->second.ToStdString());
4540         
4541         // Check the file type.
4542         
4543         TestFileIter = TestFile.KeyListDataType.find(1);
4544         ASSERT_NE(TestFile.KeyListDataType.end(), TestFileIter);
4545         ASSERT_EQ("application/pgp-keys", TestFileIter->second);
4547         // Check the TYPE section.
4548         
4549         TestFileIter = TestFile.KeyListType.find(1);
4550         ASSERT_NE(TestFile.KeyListType.end(), TestFileIter);
4551         ASSERT_EQ("home", TestFileIter->second);
4552         
4553         // Check the ALTID section.
4554         
4555         TestFileIter = TestFile.KeyListAltID.find(1);
4556         ASSERT_NE(TestFile.KeyListAltID.end(), TestFileIter);
4557         ASSERT_EQ("64", TestFileIter->second);
4558         
4559         // Check the PID section.
4560         
4561         TestFileIter = TestFile.KeyListPID.find(1);
4562         ASSERT_NE(TestFile.KeyListPID.end(), TestFileIter);
4563         ASSERT_EQ("61", TestFileIter->second);
4564         
4565         // Check the PREF section.
4566         
4567         TestFileIntIter = TestFile.KeyListPref.find(1);
4568         ASSERT_NE(TestFile.KeyListPref.end(), TestFileIntIter);
4569         ASSERT_EQ(62, TestFileIntIter->second);
4570         
4571         // Check the extra tokens.
4572         
4573         TestFileIter = TestFile.KeyListTokens.find(1);
4574         ASSERT_NE(TestFile.KeyListTokens.end(), TestFileIter);
4575         ASSERT_EQ("KEYS=NONE", TestFileIter->second);
4577         // Start with a business key.
4578         
4579         TestFileIter = TestFile.KeyList.find(2);
4580         ASSERT_NE(TestFile.KeyList.end(), TestFileIter);
4581         ASSERT_EQ(KeyC, TestFileIter->second);
4582         
4583         // Check the encoding type.
4584         
4585         TestFileIter = TestFile.KeyListDataEncType.find(2);
4586         ASSERT_NE(TestFile.KeyListDataEncType.end(), TestFileIter);
4587         ASSERT_EQ("base64", TestFileIter->second.ToStdString());
4588         
4589         // Check the file type.
4590         
4591         TestFileIter = TestFile.KeyListDataType.find(2);
4592         ASSERT_NE(TestFile.KeyListDataType.end(), TestFileIter);
4593         ASSERT_EQ("application/pgp-keys", TestFileIter->second);
4595         // Check the TYPE section.
4596         
4597         TestFileIter = TestFile.KeyListType.find(2);
4598         ASSERT_NE(TestFile.KeyListType.end(), TestFileIter);
4599         ASSERT_EQ("work", TestFileIter->second);
4600         
4601         // Check the ALTID section.
4602         
4603         TestFileIter = TestFile.KeyListAltID.find(2);
4604         ASSERT_NE(TestFile.KeyListAltID.end(), TestFileIter);
4605         ASSERT_EQ("74", TestFileIter->second);
4606         
4607         // Check the PID section.
4608         
4609         TestFileIter = TestFile.KeyListPID.find(2);
4610         ASSERT_NE(TestFile.KeyListPID.end(), TestFileIter);
4611         ASSERT_EQ("71", TestFileIter->second);
4612         
4613         // Check the PREF section.
4614         
4615         TestFileIntIter = TestFile.KeyListPref.find(2);
4616         ASSERT_NE(TestFile.KeyListPref.end(), TestFileIntIter);
4617         ASSERT_EQ(72, TestFileIntIter->second);
4618         
4619         // Check the extra tokens.
4620         
4621         TestFileIter = TestFile.KeyListTokens.find(2);
4622         ASSERT_NE(TestFile.KeyListTokens.end(), TestFileIter);
4623         ASSERT_EQ("KEYS=MISSING", TestFileIter->second);
4627 TEST(ContactLoad, VendorTests){
4629         ContactDataObject TestFile;
4631         ASSERT_EQ(CONTACTLOAD_OK, TestFile.LoadFile("LoadCheck-Load4.vcf"));
4633         std::map<int,wxString>::iterator TestFileIter;
4634         std::map<int,int>::iterator TestFileIntIter;
4636         // Start with the first vendor namespace.
4637         
4638         TestFileIter = TestFile.VendorList.find(0);
4639         ASSERT_NE(TestFile.VendorList.end(), TestFileIter);
4640         ASSERT_EQ("Lemon", TestFileIter->second);
4642         TestFileIter = TestFile.VendorListPEN.find(0);
4643         ASSERT_NE(TestFile.VendorListPEN.end(), TestFileIter);
4644         ASSERT_EQ("696", TestFileIter->second);
4646         TestFileIter = TestFile.VendorListElement.find(0);
4647         ASSERT_NE(TestFile.VendorListElement.end(), TestFileIter);
4648         ASSERT_EQ("CAKE", TestFileIter->second);
4650         // Start with the second vendor namespace.
4651         
4652         TestFileIter = TestFile.VendorList.find(1);
4653         ASSERT_NE(TestFile.VendorList.end(), TestFileIter);
4654         ASSERT_EQ("Orange", TestFileIter->second);
4656         TestFileIter = TestFile.VendorListPEN.find(1);
4657         ASSERT_NE(TestFile.VendorListPEN.end(), TestFileIter);
4658         ASSERT_EQ("696", TestFileIter->second);
4660         TestFileIter = TestFile.VendorListElement.find(1);
4661         ASSERT_NE(TestFile.VendorListElement.end(), TestFileIter);
4662         ASSERT_EQ("DRINK", TestFileIter->second);
4664         // Start with the third vendor namespace.
4665         
4666         TestFileIter = TestFile.VendorList.find(2);
4667         ASSERT_NE(TestFile.VendorList.end(), TestFileIter);
4668         ASSERT_EQ("Shiena Nishizawa", TestFileIter->second);
4670         TestFileIter = TestFile.VendorListPEN.find(2);
4671         ASSERT_NE(TestFile.VendorListPEN.end(), TestFileIter);
4672         ASSERT_EQ("696", TestFileIter->second);
4674         TestFileIter = TestFile.VendorListElement.find(2);
4675         ASSERT_NE(TestFile.VendorListElement.end(), TestFileIter);
4676         ASSERT_EQ("MUSIC", TestFileIter->second);
4680 TEST(ContactLoad, XTokenTest){
4682         ContactDataObject TestFile;
4684         ASSERT_EQ(CONTACTLOAD_OK, TestFile.LoadFile("LoadCheck-Load4.vcf"));
4686         std::map<int,wxString>::iterator TestFileIter;
4687         std::map<int,int>::iterator TestFileIntIter;
4689         // Three X-FARM variables.
4691         TestFileIter = TestFile.XTokenList.find(0);
4692         ASSERT_NE(TestFile.XTokenList.end(), TestFileIter);
4693         ASSERT_EQ("Yard", TestFileIter->second);
4695         TestFileIter = TestFile.XTokenListTokens.find(0);
4696         ASSERT_NE(TestFile.XTokenListTokens.end(), TestFileIter);
4697         ASSERT_EQ("FARM", TestFileIter->second);
4699         TestFileIter = TestFile.XTokenList.find(1);
4700         ASSERT_NE(TestFile.XTokenList.end(), TestFileIter);
4701         ASSERT_EQ("Animals", TestFileIter->second);
4703         TestFileIter = TestFile.XTokenListTokens.find(1);
4704         ASSERT_NE(TestFile.XTokenListTokens.end(), TestFileIter);
4705         ASSERT_EQ("FARM", TestFileIter->second);
4707         TestFileIter = TestFile.XTokenList.find(2);
4708         ASSERT_NE(TestFile.XTokenList.end(), TestFileIter);
4709         ASSERT_EQ("Shed", TestFileIter->second);
4711         TestFileIter = TestFile.XTokenListTokens.find(2);
4712         ASSERT_NE(TestFile.XTokenListTokens.end(), TestFileIter);
4713         ASSERT_EQ("FARM;LOCATION=Back;TYPE=Vehicles", TestFileIter->second.ToStdString());
4715         // Three X-DISKSERIAL variables.
4717         TestFileIter = TestFile.XTokenList.find(3);
4718         ASSERT_NE(TestFile.XTokenList.end(), TestFileIter);
4719         ASSERT_EQ("14444", TestFileIter->second);
4720         
4721         TestFileIter = TestFile.XTokenListTokens.find(3);
4722         ASSERT_NE(TestFile.XTokenListTokens.end(), TestFileIter);
4723         ASSERT_EQ("DISKSERIAL", TestFileIter->second);
4725         TestFileIter = TestFile.XTokenList.find(4);
4726         ASSERT_NE(TestFile.XTokenList.end(), TestFileIter);
4727         ASSERT_EQ("7555", TestFileIter->second);
4729         TestFileIter = TestFile.XTokenListTokens.find(4);
4730         ASSERT_NE(TestFile.XTokenListTokens.end(), TestFileIter);
4731         ASSERT_EQ("DISKSERIAL", TestFileIter->second);
4733         TestFileIter = TestFile.XTokenList.find(5);
4734         ASSERT_NE(TestFile.XTokenList.end(), TestFileIter);
4735         ASSERT_EQ("3250539032590", TestFileIter->second);
4737         TestFileIter = TestFile.XTokenListTokens.find(5);
4738         ASSERT_NE(TestFile.XTokenListTokens.end(), TestFileIter);
4739         ASSERT_EQ("DISKSERIAL;STATUS=DESTROYED;TYPE=FLASH", TestFileIter->second.ToStdString());
4741         // Three X-FOODS variables.
4743         TestFileIter = TestFile.XTokenList.find(6);
4744         ASSERT_NE(TestFile.XTokenList.end(), TestFileIter);
4745         ASSERT_EQ("Lemon Cake", TestFileIter->second);
4746         
4747         TestFileIter = TestFile.XTokenListTokens.find(6);
4748         ASSERT_NE(TestFile.XTokenListTokens.end(), TestFileIter);
4749         ASSERT_EQ("FOODS;STATUS=HIGH", TestFileIter->second);
4751         TestFileIter = TestFile.XTokenList.find(7);
4752         ASSERT_NE(TestFile.XTokenList.end(), TestFileIter);
4753         ASSERT_EQ("Starrey Gazey Pie", TestFileIter->second);
4755         TestFileIter = TestFile.XTokenListTokens.find(7);
4756         ASSERT_NE(TestFile.XTokenListTokens.end(), TestFileIter);
4757         ASSERT_EQ("FOODS;STATUS=LOW", TestFileIter->second);
4759         TestFileIter = TestFile.XTokenList.find(8);
4760         ASSERT_NE(TestFile.XTokenList.end(), TestFileIter);
4761         ASSERT_EQ("Cornish Pasties", TestFileIter->second);
4763         TestFileIter = TestFile.XTokenListTokens.find(8);
4764         ASSERT_NE(TestFile.XTokenListTokens.end(), TestFileIter);
4765         ASSERT_EQ("FOODS;STATUS=FAVOURITE;TYPE=CHEESEANDONION", TestFileIter->second.ToStdString());
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