| 1 | unit TestCases;
|
|---|
| 2 |
|
|---|
| 3 | interface
|
|---|
| 4 |
|
|---|
| 5 | uses
|
|---|
| 6 | Classes, SysUtils, Test, TestCase;
|
|---|
| 7 |
|
|---|
| 8 | function InitTestCases: TTestCases;
|
|---|
| 9 |
|
|---|
| 10 |
|
|---|
| 11 | implementation
|
|---|
| 12 |
|
|---|
| 13 | uses
|
|---|
| 14 | VCard, Table;
|
|---|
| 15 |
|
|---|
| 16 | const
|
|---|
| 17 | VCardVersion = 'VERSION:2.1';
|
|---|
| 18 | UnixLineEnding = #10;
|
|---|
| 19 | MacLineEnding = #13;
|
|---|
| 20 |
|
|---|
| 21 | function BeginEnd(Text: string; WithVersion: Boolean = True): string;
|
|---|
| 22 | begin
|
|---|
| 23 | Result := VCardBegin + VCardLineEnding;
|
|---|
| 24 | if WithVersion then Result := Result + VCardVersion + VCardLineEnding;
|
|---|
| 25 | Result := Result + Text + VCardEnd + VCardLineEnding;
|
|---|
| 26 | end;
|
|---|
| 27 |
|
|---|
| 28 | function InitTestCases: TTestCases;
|
|---|
| 29 | begin
|
|---|
| 30 | Result := TTestCases.Create;
|
|---|
| 31 | with Result do begin
|
|---|
| 32 | with TTestCaseLoadSave(AddNew('Load and save', TTestCaseLoadSave)) do begin
|
|---|
| 33 | Input := BeginEnd(
|
|---|
| 34 | 'N:Surname;Name' + VCardLineEnding +
|
|---|
| 35 | 'FN:Name Surname' + VCardLineEnding);
|
|---|
| 36 | Output := Input;
|
|---|
| 37 | end;
|
|---|
| 38 | with TTestCaseLoadSave(AddNew('Long text', TTestCaseLoadSave)) do begin
|
|---|
| 39 | Input := BeginEnd(
|
|---|
| 40 | 'NOTE:This is some long test which is really multi-lined each line is on dif' + VCardLineEnding +
|
|---|
| 41 | ' ferent line so it is on multiple lines.' + VCardLineEnding +
|
|---|
| 42 | VCardLineEnding);
|
|---|
| 43 | Output := Input;
|
|---|
| 44 | end;
|
|---|
| 45 | with TTestCaseLoadSave(AddNew('Multi-line', TTestCaseLoadSave)) do begin
|
|---|
| 46 | Input := BeginEnd(
|
|---|
| 47 | 'NOTE:First line\nsecond line\nempty line\n\nlast line' + VCardLineEnding);
|
|---|
| 48 | Output := Input;
|
|---|
| 49 | end;
|
|---|
| 50 | with TTestCaseLoadSave(AddNew('Quoted-printable load-save', TTestCaseLoadSave)) do begin
|
|---|
| 51 | Input := BeginEnd(
|
|---|
| 52 | 'FN;ENCODING=QUOTED-PRINTABLE:Jm=C3=A9no=20P=C5=99=C3=ADjmen=C3=AD' + VCardLineEnding);
|
|---|
| 53 | Output := Input;
|
|---|
| 54 | end;
|
|---|
| 55 | with TTestCaseLoadSave(AddNew('Quoted-printable load-save multi-line', TTestCaseLoadSave)) do begin
|
|---|
| 56 | Input := BeginEnd(
|
|---|
| 57 | 'FN;ENCODING=QUOTED-PRINTABLE:Jm=C3=A9no=20P=C5=99=C3=ADjmen=C3=ADJm=C3=A9n=' + VCardLineEnding +
|
|---|
| 58 | 'o=20P=C5=99=C3=ADjmen=C3=AD' + VCardLineEnding +
|
|---|
| 59 | VCardLineEnding);
|
|---|
| 60 | Output := Input;
|
|---|
| 61 | end;
|
|---|
| 62 | with TTestCaseLoadSave(AddNew('Base64 load-save (encoding=base64)', TTestCaseLoadSave)) do begin
|
|---|
| 63 | Input := BeginEnd(
|
|---|
| 64 | 'FN;ENCODING=BASE64:VGVzdCBzdHJpbmc=' + VCardLineEnding);
|
|---|
| 65 | Output := Input;
|
|---|
| 66 | end;
|
|---|
| 67 | with TTestCaseLoadSave(AddNew('Base64 load-save (base64)', TTestCaseLoadSave)) do begin
|
|---|
| 68 | Input := BeginEnd(
|
|---|
| 69 | 'FN;BASE64:VGVzdCBzdHJpbmc=' + VCardLineEnding);
|
|---|
| 70 | Output := Input;
|
|---|
| 71 | end;
|
|---|
| 72 | with TTestCaseLoadSave(AddNew('Base64 load-save (encoding=b)', TTestCaseLoadSave)) do begin
|
|---|
| 73 | Input := BeginEnd(
|
|---|
| 74 | 'FN;ENCODING=B:VGVzdCBzdHJpbmc=' + VCardLineEnding);
|
|---|
| 75 | Output := Input;
|
|---|
| 76 | end;
|
|---|
| 77 | with TTestCaseLoadSave(AddNew('Base64 load-save multi-line', TTestCaseLoadSave)) do begin
|
|---|
| 78 | Input := BeginEnd(
|
|---|
| 79 | 'FN;ENCODING=BASE64:U29tZSB2ZXJ5IGxvbmcgc3RyaW5nIFNvbWUgdmVyeSBsb25nIHN0cmlu' + VCardLineEnding +
|
|---|
| 80 | ' ZyBTb21lIHZlcnkgbG9uZyBzdHJpbmcgU29tZSB2ZXJ5IGxvbmcgc3RyaW5n' + VCardLineEnding +
|
|---|
| 81 | VCardLineEnding);
|
|---|
| 82 | Output := Input;
|
|---|
| 83 | end;
|
|---|
| 84 | //AddNew('Image format', TTestCaseLoadSave);
|
|---|
| 85 | with TTestCaseLoadSave(AddNew('Empty', TTestCaseLoadSave)) do begin
|
|---|
| 86 | Input := '';
|
|---|
| 87 | Output := '';
|
|---|
| 88 | end;
|
|---|
| 89 | with TTestCaseLoadSave(AddNew('Begin only', TTestCaseLoadSave)) do begin
|
|---|
| 90 | Input := VCardBegin;
|
|---|
| 91 | Output := '';
|
|---|
| 92 | end;
|
|---|
| 93 | with TTestCaseLoadSave(AddNew('Missing end', TTestCaseLoadSave)) do begin
|
|---|
| 94 | Input := VCardBegin + VCardLineEnding +
|
|---|
| 95 | VCardVersion + VCardLineEnding +
|
|---|
| 96 | 'N:Surname;Name' + VCardLineEnding +
|
|---|
| 97 | 'FN:Name Surname' + VCardLineEnding;
|
|---|
| 98 | Output := '';
|
|---|
| 99 | end;
|
|---|
| 100 | with TTestCaseLoadSave(AddNew('Missing start', TTestCaseLoadSave)) do begin
|
|---|
| 101 | Input := VCardVersion + VCardLineEnding +
|
|---|
| 102 | 'N:Surname;Name' + VCardLineEnding +
|
|---|
| 103 | 'FN:Name Surname' + VCardLineEnding +
|
|---|
| 104 | VCardEnd + VCardLineEnding;
|
|---|
| 105 | Output := '';
|
|---|
| 106 | end;
|
|---|
| 107 | with TTestCasePropertyRead(AddNew('Property FN', TTestCasePropertyRead)) do begin
|
|---|
| 108 | Index := cfFullName;
|
|---|
| 109 | Value := 'Name Surname';
|
|---|
| 110 | Input := BeginEnd('FN:' + Value + VCardLineEnding);
|
|---|
| 111 | end;
|
|---|
| 112 | with TTestCasePropertyRead(AddNew('Escaped new lines in text', TTestCasePropertyRead)) do begin
|
|---|
| 113 | Index := cfNote;
|
|---|
| 114 | Value := 'Line' + #13#10 + 'Line';
|
|---|
| 115 | Input := BeginEnd('NOTE:Line\nLine' + VCardLineEnding);
|
|---|
| 116 | end;
|
|---|
| 117 | with TTestCasePropertyRead(AddNew('Compound value', TTestCasePropertyRead)) do begin
|
|---|
| 118 | Index := cfFirstName;
|
|---|
| 119 | Value := 'FirstName';
|
|---|
| 120 | Input := BeginEnd('N:Surname;FirstName;;;' + VCardLineEnding);
|
|---|
| 121 | end;
|
|---|
| 122 | with TTestCasePropertyRead(AddNew('Escaped semicolon in name get 0', TTestCasePropertyRead)) do begin
|
|---|
| 123 | Index := cfLastName;
|
|---|
| 124 | Value := 'Surname;Surname';
|
|---|
| 125 | Input := BeginEnd('N:Surname\;Surname;Name\;Name' + VCardLineEnding);
|
|---|
| 126 | end;
|
|---|
| 127 | with TTestCasePropertyRead(AddNew('Escaped semicolon in name get 1', TTestCasePropertyRead)) do begin
|
|---|
| 128 | Index := cfFirstName;
|
|---|
| 129 | Value := 'Name;Name';
|
|---|
| 130 | Input := BeginEnd('N:Surname\;Surname;Name\;Name' + VCardLineEnding);
|
|---|
| 131 | end;
|
|---|
| 132 | with TTestCasePropertyRead(AddNew('Escaped semicolon in name get 2', TTestCasePropertyRead)) do begin
|
|---|
| 133 | Index := cfMiddleName;
|
|---|
| 134 | Value := '';
|
|---|
| 135 | Input := BeginEnd('N:Surname\;Surname;Name\;Name' + VCardLineEnding);
|
|---|
| 136 | end;
|
|---|
| 137 | with TTestCasePropertyWrite(AddNew('Escaped semicolon in name set 0', TTestCasePropertyWrite)) do begin
|
|---|
| 138 | Input := BeginEnd('N:Surname\;Surname;Name\;Name' + VCardLineEnding);
|
|---|
| 139 | Index := cfLastName;
|
|---|
| 140 | Value := 'Surname2;Surname2';
|
|---|
| 141 | Output := BeginEnd('N:Surname2\;Surname2;Name\;Name' + VCardLineEnding);
|
|---|
| 142 | end;
|
|---|
| 143 | with TTestCasePropertyWrite(AddNew('Escaped semicolon in name set 1', TTestCasePropertyWrite)) do begin
|
|---|
| 144 | Input := BeginEnd('N:Surname\;Surname;Name\;Name' + VCardLineEnding);
|
|---|
| 145 | Index := cfFirstName;
|
|---|
| 146 | Value := 'Name2;Name2';
|
|---|
| 147 | Output := BeginEnd('N:Surname\;Surname;Name2\;Name2' + VCardLineEnding);
|
|---|
| 148 | end;
|
|---|
| 149 | with TTestCasePropertyWrite(AddNew('Escaped semicolon in name set 2', TTestCasePropertyWrite)) do begin
|
|---|
| 150 | Input := BeginEnd('N:Surname\;Surname;Name\;Name' + VCardLineEnding);
|
|---|
| 151 | Index := cfMiddleName;
|
|---|
| 152 | Value := 'Middle2;Middle2';
|
|---|
| 153 | Output := BeginEnd('N:Surname\;Surname;Name\;Name;Middle2\;Middle2' + VCardLineEnding);
|
|---|
| 154 | end;
|
|---|
| 155 | with TTestCasePropertyRead(AddNew('Quoted-printable special symbols', TTestCasePropertyRead)) do begin
|
|---|
| 156 | Index := cfFullName;
|
|---|
| 157 | Value := 'Jméno Příjmení';
|
|---|
| 158 | Input := BeginEnd(
|
|---|
| 159 | 'FN;ENCODING=QUOTED-PRINTABLE:Jm=C3=A9no=20P=C5=99=C3=ADjmen=C3=AD' + VCardLineEnding);
|
|---|
| 160 | end;
|
|---|
| 161 | with TTestCasePropertyRead(AddNew('Base64 special symbols', TTestCasePropertyRead)) do begin
|
|---|
| 162 | Index := cfFullName;
|
|---|
| 163 | Value := 'Jméno Příjmení';
|
|---|
| 164 | Input := BeginEnd('FN;ENCODING=BASE64:Sm3DqW5vIFDFmcOtam1lbsOt' + VCardLineEnding);
|
|---|
| 165 | end;
|
|---|
| 166 | with TTestCaseLoadSave(AddNew('Remove exact duplicates', TTestCaseLoadSave)) do begin
|
|---|
| 167 | Input := BeginEnd(
|
|---|
| 168 | 'N:Surname;Name' + VCardLineEnding +
|
|---|
| 169 | 'FN:Name Surname' + VCardLineEnding) +
|
|---|
| 170 | BeginEnd(
|
|---|
| 171 | 'N:Surname2;Name2' + VCardLineEnding +
|
|---|
| 172 | 'FN:Name2 Surname2' + VCardLineEnding) +
|
|---|
| 173 | BeginEnd(
|
|---|
| 174 | 'N:Surname;Name' + VCardLineEnding +
|
|---|
| 175 | 'FN:Name Surname' + VCardLineEnding) +
|
|---|
| 176 | BeginEnd(
|
|---|
| 177 | 'N:Surname;Name' + VCardLineEnding +
|
|---|
| 178 | 'FN:Name Surname' + VCardLineEnding +
|
|---|
| 179 | 'NOTE:Note' + VCardLineEnding) +
|
|---|
| 180 | BeginEnd(
|
|---|
| 181 | 'N:Surname;Name' + VCardLineEnding +
|
|---|
| 182 | 'FN:Name Surname' + VCardLineEnding);
|
|---|
| 183 | Action := akRemoveExactDuplicates;
|
|---|
| 184 | Output := BeginEnd(
|
|---|
| 185 | 'N:Surname;Name' + VCardLineEnding +
|
|---|
| 186 | 'FN:Name Surname' + VCardLineEnding) +
|
|---|
| 187 | BeginEnd(
|
|---|
| 188 | 'N:Surname2;Name2' + VCardLineEnding +
|
|---|
| 189 | 'FN:Name2 Surname2' + VCardLineEnding) +
|
|---|
| 190 | BeginEnd(
|
|---|
| 191 | 'N:Surname;Name' + VCardLineEnding +
|
|---|
| 192 | 'FN:Name Surname' + VCardLineEnding +
|
|---|
| 193 | 'NOTE:Note' + VCardLineEnding);
|
|---|
| 194 | end;
|
|---|
| 195 | with TTestCaseLoadSave(AddNew('Normalize Unix line endings', TTestCaseLoadSave)) do begin
|
|---|
| 196 | Input := VCardBegin + UnixLineEnding +
|
|---|
| 197 | VCardVersion + UnixLineEnding +
|
|---|
| 198 | 'N:Surname;Name' + UnixLineEnding +
|
|---|
| 199 | 'FN:Name Surname' + UnixLineEnding +
|
|---|
| 200 | VCardEnd + UnixLineEnding;
|
|---|
| 201 | Output := VCardBegin + VCardLineEnding +
|
|---|
| 202 | VCardVersion + VCardLineEnding +
|
|---|
| 203 | 'N:Surname;Name' + VCardLineEnding +
|
|---|
| 204 | 'FN:Name Surname' + VCardLineEnding +
|
|---|
| 205 | VCardEnd + VCardLineEnding;
|
|---|
| 206 | end;
|
|---|
| 207 | with TTestCaseLoadSave(AddNew('Normalize Mac line endings', TTestCaseLoadSave)) do begin
|
|---|
| 208 | Input := VCardBegin + MacLineEnding +
|
|---|
| 209 | VCardVersion + MacLineEnding +
|
|---|
| 210 | 'N:Surname;Name' + MacLineEnding +
|
|---|
| 211 | 'FN:Name Surname' + MacLineEnding +
|
|---|
| 212 | VCardEnd + MacLineEnding;
|
|---|
| 213 | Output := VCardBegin + VCardLineEnding +
|
|---|
| 214 | VCardVersion + VCardLineEnding +
|
|---|
| 215 | 'N:Surname;Name' + VCardLineEnding +
|
|---|
| 216 | 'FN:Name Surname' + VCardLineEnding +
|
|---|
| 217 | VCardEnd + VCardLineEnding;
|
|---|
| 218 | end;
|
|---|
| 219 |
|
|---|
| 220 | with TTestCaseVCardProcessor(AddNew('VCardProcessor - Remove exact duplicates', TTestCaseVCardProcessor)) do begin
|
|---|
| 221 | Processor.RemoveExactDuplicates := True;
|
|---|
| 222 | Input := BeginEnd(
|
|---|
| 223 | 'N:Surname;Name' + VCardLineEnding +
|
|---|
| 224 | 'FN:Name Surname' + VCardLineEnding) +
|
|---|
| 225 | BeginEnd(
|
|---|
| 226 | 'N:Surname2;Name2' + VCardLineEnding +
|
|---|
| 227 | 'FN:Name2 Surname2' + VCardLineEnding) +
|
|---|
| 228 | BeginEnd(
|
|---|
| 229 | 'N:Surname;Name' + VCardLineEnding +
|
|---|
| 230 | 'FN:Name Surname' + VCardLineEnding) +
|
|---|
| 231 | BeginEnd(
|
|---|
| 232 | 'N:Surname;Name' + VCardLineEnding +
|
|---|
| 233 | 'FN:Name Surname' + VCardLineEnding +
|
|---|
| 234 | 'NOTE:Note' + VCardLineEnding) +
|
|---|
| 235 | BeginEnd(
|
|---|
| 236 | 'N:Surname;Name' + VCardLineEnding +
|
|---|
| 237 | 'FN:Name Surname' + VCardLineEnding);
|
|---|
| 238 | Output := BeginEnd(
|
|---|
| 239 | 'N:Surname;Name' + VCardLineEnding +
|
|---|
| 240 | 'FN:Name Surname' + VCardLineEnding) +
|
|---|
| 241 | BeginEnd(
|
|---|
| 242 | 'N:Surname2;Name2' + VCardLineEnding +
|
|---|
| 243 | 'FN:Name2 Surname2' + VCardLineEnding) +
|
|---|
| 244 | BeginEnd(
|
|---|
| 245 | 'N:Surname;Name' + VCardLineEnding +
|
|---|
| 246 | 'FN:Name Surname' + VCardLineEnding +
|
|---|
| 247 | 'NOTE:Note' + VCardLineEnding);
|
|---|
| 248 | end;
|
|---|
| 249 | with TTestCaseVCardProcessor(AddNew('VCardProcessor - Remove phone spaces', TTestCaseVCardProcessor)) do begin
|
|---|
| 250 | Processor.RemovePhoneSpaces := True;
|
|---|
| 251 | Input := BeginEnd('TEL: 123 456 789 ' + VCardLineEnding) +
|
|---|
| 252 | BeginEnd('TEL;CELL:919 191 919' + VCardLineEnding);
|
|---|
| 253 | Output := BeginEnd('TEL:123456789' + VCardLineEnding) +
|
|---|
| 254 | BeginEnd('TEL;CELL:919191919' + VCardLineEnding);
|
|---|
| 255 | end;
|
|---|
| 256 | with TTestCaseVCardProcessor(AddNew('VCardProcessor - Remove photos', TTestCaseVCardProcessor)) do begin
|
|---|
| 257 | Processor.RemovePhotos := True;
|
|---|
| 258 | Input := BeginEnd('N:Surname;Name' + VCardLineEnding +
|
|---|
| 259 | 'FN:Name Surname' + VCardLineEnding +
|
|---|
| 260 | 'PHOTO:dadsa' + VCardLineEnding) +
|
|---|
| 261 | BeginEnd('N:Surname;Name' + VCardLineEnding +
|
|---|
| 262 | 'FN:Name Surname' + VCardLineEnding +
|
|---|
| 263 | 'PHOTO:dadsa' + VCardLineEnding +
|
|---|
| 264 | 'PHOTO:adsadadsa' + VCardLineEnding);
|
|---|
| 265 | Output := BeginEnd('N:Surname;Name' + VCardLineEnding +
|
|---|
| 266 | 'FN:Name Surname' + VCardLineEnding) +
|
|---|
| 267 | BeginEnd('N:Surname;Name' + VCardLineEnding +
|
|---|
| 268 | 'FN:Name Surname' + VCardLineEnding);
|
|---|
| 269 | end;
|
|---|
| 270 | with TTestCaseVCardProcessor(AddNew('VCardProcessor - Order', TTestCaseVCardProcessor)) do begin
|
|---|
| 271 | Processor.Order := True;
|
|---|
| 272 | Input := BeginEnd('N:Surname2;Name2' + VCardLineEnding +
|
|---|
| 273 | 'FN:Name2 Surname2' + VCardLineEnding) +
|
|---|
| 274 | BeginEnd('N:Surname1;Name1' + VCardLineEnding +
|
|---|
| 275 | 'FN:Name1 Surname1' + VCardLineEnding) +
|
|---|
| 276 | BeginEnd('N:Surname3;Name3' + VCardLineEnding +
|
|---|
| 277 | 'FN:Name3 Surname3' + VCardLineEnding);
|
|---|
| 278 | Output := BeginEnd('FN:Name1 Surname1' + VCardLineEnding +
|
|---|
| 279 | 'N:Surname1;Name1' + VCardLineEnding) +
|
|---|
| 280 | BeginEnd('FN:Name2 Surname2' + VCardLineEnding +
|
|---|
| 281 | 'N:Surname2;Name2'+ VCardLineEnding) +
|
|---|
| 282 | BeginEnd('FN:Name3 Surname3' + VCardLineEnding +
|
|---|
| 283 | 'N:Surname3;Name3' + VCardLineEnding);
|
|---|
| 284 | end;
|
|---|
| 285 | with TTestCaseVCardProcessor(AddNew('VCardProcessor - Add phone country code', TTestCaseVCardProcessor)) do begin
|
|---|
| 286 | Processor.AddDefaultPhoneCountryPrefix := True;
|
|---|
| 287 | Processor.DefaultPhoneCountryCode := '+470';
|
|---|
| 288 | Processor.NonPrefixedPhoneLength := 9;
|
|---|
| 289 | Input := BeginEnd('TEL: 123 456 789 ' + VCardLineEnding) +
|
|---|
| 290 | BeginEnd('TEL;CELL:919 191 919' + VCardLineEnding) +
|
|---|
| 291 | BeginEnd('TEL;CELL:+421 919 191 919' + VCardLineEnding) +
|
|---|
| 292 | BeginEnd('TEL;CELL:*#1234' + VCardLineEnding);
|
|---|
| 293 | Output := BeginEnd('TEL:+470 123 456 789 ' + VCardLineEnding) +
|
|---|
| 294 | BeginEnd('TEL;CELL:+470919 191 919' + VCardLineEnding) +
|
|---|
| 295 | BeginEnd('TEL;CELL:+421 919 191 919' + VCardLineEnding) +
|
|---|
| 296 | BeginEnd('TEL;CELL:*#1234' + VCardLineEnding);
|
|---|
| 297 | end;
|
|---|
| 298 | with TTestCaseVCardProcessor(AddNew('VCardProcessor - Convert international call prefix to country code', TTestCaseVCardProcessor)) do begin
|
|---|
| 299 | Processor.ConvertInternationalCallPrefixToCountryCode := True;
|
|---|
| 300 | Processor.DefaultInternationalCallPrefix := '00420';
|
|---|
| 301 | Processor.DefaultPhoneCountryCode := '+470';
|
|---|
| 302 | Input := BeginEnd('TEL:00420123456789' + VCardLineEnding) +
|
|---|
| 303 | BeginEnd('TEL;CELL:00420 919 191 919 ' + VCardLineEnding) +
|
|---|
| 304 | BeginEnd('TEL;CELL:00421919191919' + VCardLineEnding);
|
|---|
| 305 | Output := BeginEnd('TEL:+470123456789' + VCardLineEnding) +
|
|---|
| 306 | BeginEnd('TEL;CELL:+470 919 191 919 ' + VCardLineEnding) +
|
|---|
| 307 | BeginEnd('TEL;CELL:00421919191919' + VCardLineEnding);
|
|---|
| 308 | end;
|
|---|
| 309 |
|
|---|
| 310 | with TTestCaseVCardExportImport(AddNew('Export/Import CSV', TTestCaseVCardExportImport)) do begin
|
|---|
| 311 | Format := tfCsv;
|
|---|
| 312 | HumanReadableHeader := False;
|
|---|
| 313 | Input := BeginEnd(
|
|---|
| 314 | 'N:Surname;Name' + VCardLineEnding +
|
|---|
| 315 | 'FN:Name Surname' + VCardLineEnding) +
|
|---|
| 316 | BeginEnd(
|
|---|
| 317 | 'N:Surname2;Name2' + VCardLineEnding +
|
|---|
| 318 | 'FN:Name2 Surname2' + VCardLineEnding);
|
|---|
| 319 | Output := Input;
|
|---|
| 320 | end;
|
|---|
| 321 | with TTestCaseVCardExportImport(AddNew('Export/Import CSV human header', TTestCaseVCardExportImport)) do begin
|
|---|
| 322 | Format := tfCsv;
|
|---|
| 323 | HumanReadableHeader := True;
|
|---|
| 324 | Input := BeginEnd(
|
|---|
| 325 | 'N:Surname;Name' + VCardLineEnding +
|
|---|
| 326 | 'FN:Name Surname' + VCardLineEnding) +
|
|---|
| 327 | BeginEnd(
|
|---|
| 328 | 'N:Surname2;Name2' + VCardLineEnding +
|
|---|
| 329 | 'FN:Name2 Surname2' + VCardLineEnding);
|
|---|
| 330 | Output := Input;
|
|---|
| 331 | end;
|
|---|
| 332 | with TTestCaseVCardExportImport(AddNew('Export/Import MediaWiki', TTestCaseVCardExportImport)) do begin
|
|---|
| 333 | Format := tfMediaWiki;
|
|---|
| 334 | HumanReadableHeader := False;
|
|---|
| 335 | Input := BeginEnd(
|
|---|
| 336 | 'N:Surname;Name' + VCardLineEnding +
|
|---|
| 337 | 'FN:Name Surname' + VCardLineEnding) +
|
|---|
| 338 | BeginEnd(
|
|---|
| 339 | 'N:Surname2;Name2' + VCardLineEnding +
|
|---|
| 340 | 'FN:Name2 Surname2' + VCardLineEnding);
|
|---|
| 341 | Output := Input;
|
|---|
| 342 | end;
|
|---|
| 343 | with TTestCaseVCardExportImport(AddNew('Export/Import XML', TTestCaseVCardExportImport)) do begin
|
|---|
| 344 | Format := tfXml;
|
|---|
| 345 | HumanReadableHeader := False;
|
|---|
| 346 | Input := BeginEnd(
|
|---|
| 347 | 'N:Surname;Name' + VCardLineEnding +
|
|---|
| 348 | 'FN:Name Surname' + VCardLineEnding) +
|
|---|
| 349 | BeginEnd(
|
|---|
| 350 | 'N:Surname2;Name2' + VCardLineEnding +
|
|---|
| 351 | 'FN:Name2 Surname2' + VCardLineEnding);
|
|---|
| 352 | Output := Input;
|
|---|
| 353 | end;
|
|---|
| 354 | with TTestCaseVCardExportImport(AddNew('Export/Import JSON', TTestCaseVCardExportImport)) do begin
|
|---|
| 355 | Format := tfJSON;
|
|---|
| 356 | HumanReadableHeader := False;
|
|---|
| 357 | Input := BeginEnd(
|
|---|
| 358 | 'N:Surname;Name' + VCardLineEnding +
|
|---|
| 359 | 'FN:Name Surname' + VCardLineEnding) +
|
|---|
| 360 | BeginEnd(
|
|---|
| 361 | 'N:Surname2;Name2' + VCardLineEnding +
|
|---|
| 362 | 'FN:Name2 Surname2' + VCardLineEnding);
|
|---|
| 363 | Output := Input;
|
|---|
| 364 | end;
|
|---|
| 365 |
|
|---|
| 366 | with TTestCaseLoadSave(AddNew('Merge same cell phone', TTestCaseLoadSave)) do begin
|
|---|
| 367 | Input := VCardBegin + MacLineEnding +
|
|---|
| 368 | VCardVersion + MacLineEnding +
|
|---|
| 369 | 'N:Surname;Name' + MacLineEnding +
|
|---|
| 370 | 'FN:Name Surname' + MacLineEnding +
|
|---|
| 371 | 'TEL;CELL:123456789' + MacLineEnding +
|
|---|
| 372 | VCardEnd + MacLineEnding +
|
|---|
| 373 |
|
|---|
| 374 | VCardBegin + MacLineEnding +
|
|---|
| 375 | VCardVersion + MacLineEnding +
|
|---|
| 376 | 'N:Surname2;Name' + MacLineEnding +
|
|---|
| 377 | 'FN:Name Surname2' + MacLineEnding +
|
|---|
| 378 | 'TEL;CELL:123456789' + MacLineEnding +
|
|---|
| 379 | VCardEnd + MacLineEnding;
|
|---|
| 380 | Output := VCardBegin + VCardLineEnding +
|
|---|
| 381 | VCardVersion + VCardLineEnding +
|
|---|
| 382 | 'N:Surname;Name' + VCardLineEnding +
|
|---|
| 383 | 'FN:Name Surname' + VCardLineEnding +
|
|---|
| 384 | 'TEL;CELL:123456789' + MacLineEnding +
|
|---|
| 385 | VCardEnd + VCardLineEnding;
|
|---|
| 386 | end;
|
|---|
| 387 | end;
|
|---|
| 388 | end;
|
|---|
| 389 |
|
|---|
| 390 | end.
|
|---|
| 391 |
|
|---|