123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397 |
- {%skiptarget=wince}
- {$codepage utf-8}
- uses
- {$ifdef unix}
- cwstring,
- {$endif}
- sysutils;
- procedure doerror(i : integer);
- begin
- writeln('Error: ',i);
- halt(i);
- end;
- { normal upper case testing }
- procedure testupper;
- var
- s: ansistring;
- w1,w2,w3,w4: unicodestring;
- i: longint;
- begin
- w1:='aé'#0'èàł'#$d87e#$dc04;
- w2:='AÉ'#0'ÈÀŁ'#$d87e#$dc04;
- {$ifdef print}
- // the utf-8 output can confuse the testsuite parser
- writeln('original: ',w1);
- writeln('original upper: ',w2);
- {$endif print}
- s:=w1;
- {$ifdef print}
- writeln('ansi: ',s);
- {$endif print}
- w3:=s;
- w4:=AnsiUpperCase(s);
- { filter out unsupported characters }
- for i:=1 to length(w3) do
- if w3[i]='?' then
- begin
- w2[i]:='?';
- w1[i]:='?';
- end;
- w1:=UnicodeUpperCase(w1);
- {$ifdef print}
- writeln('unicodeupper: ',w1);
- writeln('original upper: ',w2);
- writeln('ansiupper: ',w4);
- {$endif print}
- if (w1 <> w2) then
- doerror(1);
- if (w4 <> w2) then
- doerror(2);
- w1:='aéèàł'#$d87e#$dc04;
- w2:='AÉÈÀŁ'#$d87e#$dc04;
- s:=w1;
- w3:=s;
- w4:=AnsiStrUpper(pchar(s));
- { filter out unsupported characters }
- for i:=1 to length(w3) do
- if w3[i]='?' then
- begin
- w2[i]:='?';
- w1[i]:='?';
- end;
- w1:=UnicodeUpperCase(w1);
- {$ifdef print}
- writeln('unicodeupper: ',w1);
- writeln('ansistrupper: ',w4);
- {$endif print}
- if (w1 <> w2) then
- doerror(21);
- if (w4 <> w2) then
- doerror(22);
- end;
- { normal lower case testing }
- procedure testlower;
- var
- s: ansistring;
- w1,w2,w3,w4: unicodestring;
- i: longint;
- begin
- w1:='AÉ'#0'ÈÀŁ'#$d87e#$dc04;
- w2:='aé'#0'èàł'#$d87e#$dc04;
- {$ifdef print}
- // the utf-8 output can confuse the testsuite parser
- writeln('original: ',w1);
- writeln('original lower: ',w2);
- {$endif print}
- s:=w1;
- w3:=s;
- w4:=AnsiLowerCase(s);
- { filter out unsupported characters }
- for i:=1 to length(w3) do
- if w3[i]='?' then
- begin
- w2[i]:='?';
- w1[i]:='?';
- end;
- w1:=UnicodeLowerCase(w1);
- {$ifdef print}
- writeln('unicodelower: ',w1);
- writeln('ansilower: ',w4);
- {$endif print}
- if (w1 <> w2) then
- doerror(3);
- if (w4 <> w2) then
- doerror(4);
- w1:='AÉÈÀŁ'#$d87e#$dc04;
- w2:='aéèàł'#$d87e#$dc04;
- s:=w1;
- w3:=s;
- w4:=AnsiStrLower(pchar(s));
- { filter out unsupported characters }
- for i:=1 to length(w3) do
- if w3[i]='?' then
- begin
- w2[i]:='?';
- w1[i]:='?';
- end;
- w1:=UnicodeLowerCase(w1);
- {$ifdef print}
- writeln('unicodelower: ',w1);
- writeln('ansistrlower: ',w4);
- {$endif print}
- if (w1 <> w2) then
- doerror(3);
- if (w4 <> w2) then
- doerror(4);
- end;
- { upper case testing with a missing utf-16 pair at the end }
- procedure testupperinvalid;
- var
- s: ansistring;
- w1,w2,w3,w4: unicodestring;
- i: longint;
- begin
- { missing utf-16 pair at end }
- w1:='aé'#0'èàł'#$d87e;
- w2:='AÉ'#0'ÈÀŁ'#$d87e;
- {$ifdef print}
- // the utf-8 output can confuse the testsuite parser
- writeln('original: ',w1);
- writeln('original upper: ',w2);
- {$endif print}
- s:=w1;
- w3:=s;
- w4:=AnsiUpperCase(s);
- { filter out unsupported characters }
- for i:=1 to length(w3) do
- if w3[i]='?' then
- begin
- w2[i]:='?';
- w1[i]:='?';
- end;
- w1:=UnicodeUpperCase(w1);
- {$ifdef print}
- writeln('unicodeupper: ',w1);
- writeln('ansiupper: ',w4);
- {$endif print}
- if (w1 <> w2) then
- doerror(5);
- if (w4 <> w2) then
- doerror(6);
- end;
- { lower case testing with a missing utf-16 pair at the end }
- procedure testlowerinvalid;
- var
- s: ansistring;
- w1,w2,w3,w4: unicodestring;
- i: longint;
- begin
- { missing utf-16 pair at end}
- w1:='AÉ'#0'ÈÀŁ'#$d87e;
- w2:='aé'#0'èàł'#$d87e;
- {$ifdef print}
- // the utf-8 output can confuse the testsuite parser
- writeln('original: ',w1);
- writeln('original lower: ',w2);
- {$endif print}
- s:=w1;
- w3:=s;
- w4:=AnsiLowerCase(s);
- { filter out unsupported characters }
- for i:=1 to length(w3) do
- if w3[i]='?' then
- begin
- w2[i]:='?';
- w1[i]:='?';
- end;
- w1:=UnicodeLowerCase(w1);
- {$ifdef print}
- writeln('unicodelower: ',w1);
- writeln('ansilower: ',w4);
- {$endif print}
- if (w1 <> w2) then
- doerror(7);
- if (w4 <> w2) then
- doerror(8);
- end;
- { upper case testing with a missing utf-16 pair at the end, followed by a normal char }
- procedure testupperinvalid1;
- var
- s: ansistring;
- w1,w2,w3,w4: unicodestring;
- i: longint;
- begin
- { missing utf-16 pair at end with char after it}
- w1:='aé'#0'èàł'#$d87e'j';
- w2:='AÉ'#0'ÈÀŁ'#$d87e'J';
- {$ifdef print}
- // the utf-8 output can confuse the testsuite parser
- writeln('original: ',w1);
- writeln('original upper: ',w2);
- {$endif print}
- s:=w1;
- w3:=s;
- w4:=AnsiUpperCase(s);
- { filter out unsupported characters }
- for i:=1 to length(w3) do
- if w3[i]='?' then
- begin
- w2[i]:='?';
- w1[i]:='?';
- end;
- w1:=UnicodeUpperCase(w1);
- {$ifdef print}
- writeln('unicodeupper: ',w1);
- writeln('ansiupper: ',w4);
- {$endif print}
- if (w1 <> w2) then
- doerror(9);
- if (w4 <> w2) then
- doerror(10);
- end;
- { lower case testing with a missing utf-16 pair at the end, followed by a normal char }
- procedure testlowerinvalid1;
- var
- s: ansistring;
- w1,w2,w3,w4: unicodestring;
- i: longint;
- begin
- { missing utf-16 pair at end with char after it}
- w1:='AÉ'#0'ÈÀŁ'#$d87e'J';
- w2:='aé'#0'èàł'#$d87e'j';
- {$ifdef print}
- // the utf-8 output can confuse the testsuite parser
- writeln('original: ',w1);
- writeln('original lower: ',w2);
- {$endif print}
- s:=w1;
- w3:=s;
- w4:=AnsiLowerCase(s);
- { filter out unsupported characters }
- for i:=1 to length(w3) do
- if w3[i]='?' then
- begin
- w2[i]:='?';
- w1[i]:='?';
- end;
- w1:=UnicodeLowerCase(w1);
- {$ifdef print}
- writeln('unicodelower: ',w1);
- writeln('ansilower: ',w4);
- {$endif print}
- if (w1 <> w2) then
- doerror(11);
- if (w4 <> w2) then
- doerror(12);
- end;
- { upper case testing with corrupting the utf-8 string after conversion }
- procedure testupperinvalid2;
- var
- s: ansistring;
- w1,w2,w3,w4: unicodestring;
- i: longint;
- begin
- w1:='aé'#0'èàł'#$d87e#$dc04'ö';
- w2:='AÉ'#0'ÈÀŁ'#$d87e#$dc04'Ö';
- {$ifdef print}
- // the utf-8 output can confuse the testsuite parser
- writeln('original: ',w1);
- writeln('original upper: ',w2);
- {$endif print}
- s:=w1;
- { truncate the last utf-8 character }
- setlength(s,length(s)-1);
- w3:=s;
- { adjust checking values for new length due to corruption }
- if length(w3)<>length(w2) then
- begin
- setlength(w2,length(w3));
- setlength(w1,length(w3));
- end;
- w4:=AnsiUpperCase(s);
- { filter out unsupported characters }
- for i:=1 to length(w3) do
- if w3[i]='?' then
- begin
- w2[i]:='?';
- w1[i]:='?';
- end;
- w1:=UnicodeUpperCase(w1);
- {$ifdef print}
- writeln('unicodeupper: ',w1);
- writeln('ansiupper: ',w4);
- {$endif print}
- if (w1 <> w2) then
- doerror(13);
- if (w4 <> w2) then
- doerror(14);
- end;
- { lower case testing with corrupting the utf-8 string after conversion }
- procedure testlowerinvalid2;
- var
- s: ansistring;
- w1,w2,w3,w4: unicodestring;
- i: longint;
- begin
- w1:='AÉ'#0'ÈÀŁ'#$d87e#$dc04'Ö';
- w2:='aé'#0'èàł'#$d87e#$dc04'ö';
- {$ifdef print}
- // the utf-8 output can confuse the testsuite parser
- writeln('original: ',w1);
- writeln('original lower: ',w2);
- {$endif print}
- s:=w1;
- { truncate the last utf-8 character }
- setlength(s,length(s)-1);
- w3:=s;
- { adjust checking values for new length due to corruption }
- if length(w3)<>length(w2) then
- begin
- setlength(w2,length(w3));
- setlength(w1,length(w3));
- end;
- w4:=AnsiLowerCase(s);
- { filter out unsupported characters }
- for i:=1 to length(w3) do
- if w3[i]='?' then
- begin
- w2[i]:='?';
- w1[i]:='?';
- end;
- w1:=UnicodeLowerCase(w1);
- {$ifdef print}
- writeln('unicodelower: ',w1);
- writeln('ansilower: ',w4);
- {$endif print}
- if (w1 <> w2) then
- doerror(15);
- if (w4 <> w2) then
- doerror(16);
- end;
- begin
- testupper;
- writeln;
- testlower;
- writeln;
- writeln;
- testupperinvalid;
- writeln;
- testlowerinvalid;
- writeln;
- writeln;
- testupperinvalid1;
- writeln;
- testlowerinvalid1;
- writeln;
- writeln;
- testupperinvalid2;
- writeln;
- testlowerinvalid2;
- writeln('ok');
- end.
|