Browse Source

no message

florian 21 years ago
parent
commit
1479624d73
1 changed files with 47 additions and 0 deletions
  1. 47 0
      tests/webtbs/tw3170.pp

+ 47 - 0
tests/webtbs/tw3170.pp

@@ -0,0 +1,47 @@
+{ Source provided for Free Pascal Bug Report 3170 }
+{ Submitted by "Michalis Kamburelis" on  2004-06-15 }
+{ e-mail: [email protected] }
+{ 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.