fpc/tests/webtbs/tw3170.pp
2004-08-07 19:33:11 +00:00

48 lines
1.5 KiB
ObjectPascal

{ Source provided for Free Pascal Bug Report 3170 }
{ Submitted by "Michalis Kamburelis" on 2004-06-15 }
{ e-mail: michalis@camelot.homedns.org }
{ Simple test of 4 string comparison routines: [Ansi]Compare(Str|Text)
with AnsiStrings with #0 chars inside.
FPC 1.9.5 fails only at CompareStr + ('hello', 'hello'#0'bye')
test, passes all other.
After applying my small patch to sysstr.inc, FPC 1.9.5 passes
all tests.
Delphi note: Kylix 3 does not pass this test with Ansi- functions,
it seems that in Kylix 3 Ansi- functions consider #0 char to mark
end of AnsiString (I will not submit this as a compatibility bug,
as I consider this stupid, FPC behaviour is definitely more
sensible and consequent here).
}
{$apptype CONSOLE}
{$assertions ON}
{$ifdef FPC} {$mode objfpc} {$endif}
{$longstrings ON}
uses SysUtils;
type
TCompare2Strings = function(const s1, s2:string):Integer;
procedure Check(CompareFunc:TCompare2Strings);
begin
Assert(CompareFunc('hello'#0'bye', 'hello'#0'bye') = 0);
Assert(CompareFunc('hello'#0'seeya', 'hello'#0'bye') > 0);
Assert(CompareFunc('hello', 'hello'#0'bye') < 0);
{ alternative:
Writeln(CompareFunc('hello'#0'bye', 'hello'#0'bye'));
Writeln(CompareFunc('hello'#0'seeya', 'hello'#0'bye'));
Writeln(CompareFunc('hello', 'hello'#0'bye'));
}
end;
begin
Writeln('CompareStr'); Check(@CompareStr);
Writeln('CompareText'); Check(@CompareText);
Writeln('AnsiCompareStr'); Check(@AnsiCompareStr);
Writeln('AnsiCompareText'); Check(@AnsiCompareText);
end.