source: tags/1.4.0/UTestCases.pas

Last change on this file was 135, checked in by chronos, 2 years ago
  • Modified: Normalize line endings according vCard format specification.
File size: 7.0 KB
Line 
1unit UTestCases;
2
3interface
4
5uses
6 Classes, SysUtils, UTest;
7
8function InitTestCases: TTestCases;
9
10
11implementation
12
13uses
14 UVCard;
15
16const
17 VCardVersion = 'VERSION:2.1';
18 UnixLineEnding = #10;
19 MacLineEnding = #13;
20
21function BeginEnd(Text: string; WithVersion: Boolean = True): string;
22begin
23 Result := VCardBegin + VCardLineEnding;
24 if WithVersion then Result := Result + VCardVersion + VCardLineEnding;
25 Result := Result + Text + VCardEnd + VCardLineEnding;
26end;
27
28function InitTestCases: TTestCases;
29begin
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 Output := Input;
43 end;
44 with TTestCaseLoadSave(AddNew('Multi-line', TTestCaseLoadSave)) do begin
45 Input := BeginEnd(
46 'NOTE:First line\nsecond line\nempty line\n\nlast line' + VCardLineEnding);
47 Output := Input;
48 end;
49 with TTestCaseLoadSave(AddNew('Quoted-printable load-save', TTestCaseLoadSave)) do begin
50 Input := BeginEnd(
51 'FN;ENCODING=QUOTED-PRINTABLE:Jm=C3=A9no=20P=C5=99=C3=ADjmen=C3=AD' + VCardLineEnding);
52 Output := Input;
53 end;
54 with TTestCaseLoadSave(AddNew('Quoted-printable load-save multi-line', TTestCaseLoadSave)) do begin
55 Input := BeginEnd(
56 'FN;ENCODING=QUOTED-PRINTABLE:Jm=C3=A9no=20P=C5=99=C3=ADjmen=C3=ADJm=C3=A9n=' + VCardLineEnding +
57 'o=20P=C5=99=C3=ADjmen=C3=AD' + VCardLineEnding);
58 Output := Input;
59 end;
60 with TTestCaseLoadSave(AddNew('Base64 load-save (encoding=base64)', TTestCaseLoadSave)) do begin
61 Input := BeginEnd(
62 'FN;ENCODING=BASE64:VGVzdCBzdHJpbmc=' + VCardLineEnding);
63 Output := Input;
64 end;
65 with TTestCaseLoadSave(AddNew('Base64 load-save (base64)', TTestCaseLoadSave)) do begin
66 Input := BeginEnd(
67 'FN;BASE64:VGVzdCBzdHJpbmc=' + VCardLineEnding);
68 Output := Input;
69 end;
70 with TTestCaseLoadSave(AddNew('Base64 load-save (encoding=b)', TTestCaseLoadSave)) do begin
71 Input := BeginEnd(
72 'FN;ENCODING=B:VGVzdCBzdHJpbmc=' + VCardLineEnding);
73 Output := Input;
74 end;
75 with TTestCaseLoadSave(AddNew('Base64 load-save multi-line', TTestCaseLoadSave)) do begin
76 Input := BeginEnd(
77 'FN;ENCODING=BASE64:U29tZSB2ZXJ5IGxvbmcgc3RyaW5nIFNvbWUgdmVyeSBsb25nIHN0cmlu' + VCardLineEnding +
78 ' ZyBTb21lIHZlcnkgbG9uZyBzdHJpbmcgU29tZSB2ZXJ5IGxvbmcgc3RyaW5n' + VCardLineEnding);
79 Output := Input;
80 end;
81 //AddNew('Image format', TTestCaseLoadSave);
82 with TTestCaseLoadSave(AddNew('Empty', TTestCaseLoadSave)) do begin
83 Input := '';
84 Output := '';
85 end;
86 with TTestCaseLoadSave(AddNew('Begin only', TTestCaseLoadSave)) do begin
87 Input := VCardBegin;
88 Output := '';
89 end;
90 with TTestCaseLoadSave(AddNew('Missing end', TTestCaseLoadSave)) do begin
91 Input := VCardBegin + VCardLineEnding +
92 VCardVersion + VCardLineEnding +
93 'N:Surname;Name' + VCardLineEnding +
94 'FN:Name Surname' + VCardLineEnding;
95 Output := '';
96 end;
97 with TTestCaseLoadSave(AddNew('Missing start', TTestCaseLoadSave)) do begin
98 Input := VCardVersion + VCardLineEnding +
99 'N:Surname;Name' + VCardLineEnding +
100 'FN:Name Surname' + VCardLineEnding +
101 VCardEnd + VCardLineEnding;
102 Output := '';
103 end;
104 with TTestCaseCheckProperty(AddNew('Property FN', TTestCaseCheckProperty)) do begin
105 Index := cfFullName;
106 Value := 'Name Surname';
107 Input := BeginEnd('FN:' + Value + VCardLineEnding);
108 end;
109 with TTestCaseCheckProperty(AddNew('Escaped new lines in text', TTestCaseCheckProperty)) do begin
110 Index := cfNote;
111 Value := 'Line' + #13#10 + 'Line';
112 Input := BeginEnd('NOTE:Line\nLine' + VCardLineEnding);
113 end;
114 with TTestCaseCheckProperty(AddNew('Compound value', TTestCaseCheckProperty)) do begin
115 Index := cfFirstName;
116 Value := 'FirstName';
117 Input := BeginEnd('N:Surname;FirstName;;;' + VCardLineEnding);
118 end;
119 with TTestCaseCheckProperty(AddNew('Quoted-printable special symbols', TTestCaseCheckProperty)) do begin
120 Index := cfFullName;
121 Value := 'Jméno Příjmení';
122 Input := BeginEnd(
123 'FN;ENCODING=QUOTED-PRINTABLE:Jm=C3=A9no=20P=C5=99=C3=ADjmen=C3=AD' + VCardLineEnding);
124 end;
125 with TTestCaseCheckProperty(AddNew('Base64 special symbols', TTestCaseCheckProperty)) do begin
126 Index := cfFullName;
127 Value := 'Jméno Příjmení';
128 Input := BeginEnd('FN;ENCODING=BASE64:Sm3DqW5vIFDFmcOtam1lbsOt' + VCardLineEnding);
129 end;
130 with TTestCaseLoadSave(AddNew('Remove exact duplicates', TTestCaseLoadSave)) do begin
131 Input := BeginEnd(
132 'N:Surname;Name' + VCardLineEnding +
133 'FN:Name Surname' + VCardLineEnding) +
134 BeginEnd(
135 'N:Surname2;Name2' + VCardLineEnding +
136 'FN:Name2 Surname2' + VCardLineEnding) +
137 BeginEnd(
138 'N:Surname;Name' + VCardLineEnding +
139 'FN:Name Surname' + VCardLineEnding) +
140 BeginEnd(
141 'N:Surname;Name' + VCardLineEnding +
142 'FN:Name Surname' + VCardLineEnding +
143 'NOTE:Note' + VCardLineEnding) +
144 BeginEnd(
145 'N:Surname;Name' + VCardLineEnding +
146 'FN:Name Surname' + VCardLineEnding);
147 Action := akRemoveExactDuplicates;
148 Output := BeginEnd(
149 'N:Surname;Name' + VCardLineEnding +
150 'FN:Name Surname' + VCardLineEnding) +
151 BeginEnd(
152 'N:Surname2;Name2' + VCardLineEnding +
153 'FN:Name2 Surname2' + VCardLineEnding) +
154 BeginEnd(
155 'N:Surname;Name' + VCardLineEnding +
156 'FN:Name Surname' + VCardLineEnding +
157 'NOTE:Note' + VCardLineEnding);
158 end;
159 with TTestCaseLoadSave(AddNew('Normalize Unix line endings', TTestCaseLoadSave)) do begin
160 Input := VCardBegin + UnixLineEnding +
161 VCardVersion + UnixLineEnding +
162 'N:Surname;Name' + UnixLineEnding +
163 'FN:Name Surname' + UnixLineEnding +
164 VCardEnd + UnixLineEnding;
165 Output := VCardBegin + VCardLineEnding +
166 VCardVersion + VCardLineEnding +
167 'N:Surname;Name' + VCardLineEnding +
168 'FN:Name Surname' + VCardLineEnding +
169 VCardEnd + VCardLineEnding;
170 end;
171 with TTestCaseLoadSave(AddNew('Normalize Mac line endings', TTestCaseLoadSave)) do begin
172 Input := VCardBegin + MacLineEnding +
173 VCardVersion + MacLineEnding +
174 'N:Surname;Name' + MacLineEnding +
175 'FN:Name Surname' + MacLineEnding +
176 VCardEnd + MacLineEnding;
177 Output := VCardBegin + VCardLineEnding +
178 VCardVersion + VCardLineEnding +
179 'N:Surname;Name' + VCardLineEnding +
180 'FN:Name Surname' + VCardLineEnding +
181 VCardEnd + VCardLineEnding;
182 end;
183 end;
184end;
185
186end.
187
Note: See TracBrowser for help on using the repository browser.