|
@@ -0,0 +1,926 @@
|
|
|
+{ Program to test system unit string routines
|
|
|
+ Tested against Delphi 3 and (where possible)
|
|
|
+ against Borland Pascal v7.01
|
|
|
+}
|
|
|
+program tstring;
|
|
|
+{$R+}
|
|
|
+{$Q+}
|
|
|
+
|
|
|
+{$ifdef CPUJVM}
|
|
|
+uses
|
|
|
+ {$ifdef java}jdk15{$else}androidr14{$endif};
|
|
|
+
|
|
|
+ {$macro on}
|
|
|
+ {$define writeln:=jlsystem.fout.println}
|
|
|
+ {$define write:=jlsystem.fout.print}
|
|
|
+{$endif}
|
|
|
+
|
|
|
+{$ifndef MACOS}
|
|
|
+{$APPTYPE CONSOLE}
|
|
|
+{$else}
|
|
|
+{$APPTYPE TOOL}
|
|
|
+{$endif}
|
|
|
+
|
|
|
+{$ifdef fpc}
|
|
|
+ {$ifndef ver1_0}
|
|
|
+ {$define haswidestring}
|
|
|
+ {$endif}
|
|
|
+{$else}
|
|
|
+ {$ifndef ver70}
|
|
|
+ {$define haswidestring}
|
|
|
+ {$endif}
|
|
|
+{$endif}
|
|
|
+
|
|
|
+var
|
|
|
+ str1 : shortstring;
|
|
|
+ str2 : ansistring;
|
|
|
+{$ifdef haswidestring}
|
|
|
+ str3 : widestring;
|
|
|
+{$endif}
|
|
|
+
|
|
|
+
|
|
|
+procedure fail(apos : integer);
|
|
|
+ begin
|
|
|
+ if APos=0 then
|
|
|
+ WriteLn('Failed!' )
|
|
|
+ else
|
|
|
+ begin
|
|
|
+ Write('Failed on ');
|
|
|
+ WriteLn(APos);
|
|
|
+ end;
|
|
|
+ Halt(1);
|
|
|
+ end;
|
|
|
+
|
|
|
+procedure fail;
|
|
|
+ begin
|
|
|
+ Fail(0);
|
|
|
+ Halt(1);
|
|
|
+ end;
|
|
|
+
|
|
|
+
|
|
|
+procedure test_stringofchar;
|
|
|
+ var
|
|
|
+ _result : boolean;
|
|
|
+ i: integer;
|
|
|
+ begin
|
|
|
+ Write('StringOfChar tests...');
|
|
|
+ _result := true;
|
|
|
+ {************************* shortstring ************************}
|
|
|
+ { try to fill a shortstring with a null character }
|
|
|
+ str1:='';
|
|
|
+ str1:=stringofchar(#0,0);
|
|
|
+ if length(str1)<>0 then
|
|
|
+ _result := false;
|
|
|
+ str1:='';
|
|
|
+
|
|
|
+ str1:='';
|
|
|
+ str1:=stringofchar('a',-1);
|
|
|
+ if length(str1)<>0 then
|
|
|
+ _result := false;
|
|
|
+ str1:='';
|
|
|
+
|
|
|
+
|
|
|
+ { try to fill a shortstring with more chars than possible }
|
|
|
+ str1:=stringofchar('c',300);
|
|
|
+ if length(str1)<>255 then
|
|
|
+ _result := false;
|
|
|
+ { try to fill a shortstring with no chars }
|
|
|
+ str1:='';
|
|
|
+ str1:=stringofchar('c',0);
|
|
|
+ if length(str1)<>0 then
|
|
|
+ _result := false;
|
|
|
+ { try to fill a shortstring chars }
|
|
|
+ str1:='';
|
|
|
+ str1:=stringofchar('a',255);
|
|
|
+ for i:=1 to 255 do
|
|
|
+ if str1[i] <> 'a' then
|
|
|
+ _result := false;
|
|
|
+ {************************* ansistring *************************}
|
|
|
+ { try to fill a ansistring with a null character }
|
|
|
+ str2:='';
|
|
|
+ str2:=stringofchar(#0,0);
|
|
|
+ if length(str2)<>0 then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str2:='';
|
|
|
+ str2:=stringofchar('a',-1);
|
|
|
+ if length(str2)<>0 then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ { try to fill a ansistring with no chars }
|
|
|
+ str2:='';
|
|
|
+ str2:=stringofchar('c',0);
|
|
|
+ if length(str2)<>0 then
|
|
|
+ _result := false;
|
|
|
+ { try to fill an ansistring chars }
|
|
|
+ str2:='';
|
|
|
+ str2:=stringofchar('a',1024);
|
|
|
+ for i:=1 to 1024 do
|
|
|
+ if str2[i] <> 'a' then
|
|
|
+ _result := false;
|
|
|
+ {************************* widestring *************************}
|
|
|
+{$ifdef haswidestring}
|
|
|
+ { try to fill a widestring with a null character }
|
|
|
+ str3:='';
|
|
|
+ str3:=stringofchar(#0,0);
|
|
|
+ if length(str3)<>0 then
|
|
|
+ _result := false;
|
|
|
+ str3:='';
|
|
|
+ { try to fill a widestring with no chars }
|
|
|
+ str3:='';
|
|
|
+ str3:=stringofchar('c',0);
|
|
|
+ if length(str3)<>0 then
|
|
|
+ _result := false;
|
|
|
+ { try to fill an widestring chars }
|
|
|
+ str3:='';
|
|
|
+ str3:=stringofchar('a',1024);
|
|
|
+ for i:=1 to 1024 do
|
|
|
+ if str3[i] <> 'a' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str3:='';
|
|
|
+ str3:=stringofchar('a',-1);
|
|
|
+ if length(str3)<>0 then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+{$endif}
|
|
|
+ if not _result then
|
|
|
+ fail
|
|
|
+ else
|
|
|
+ WriteLn('Success!');
|
|
|
+ end;
|
|
|
+
|
|
|
+
|
|
|
+ procedure test_delete;
|
|
|
+ var
|
|
|
+ _result : boolean;
|
|
|
+ i: integer;
|
|
|
+ begin
|
|
|
+ Write('Delete tests...');
|
|
|
+ _result := true;
|
|
|
+ {************************* shortstring ************************}
|
|
|
+ { try to delete from an empty string }
|
|
|
+ str1:='';
|
|
|
+ Delete(str1,0,12);
|
|
|
+ if str1<>'' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str1:='Hello';
|
|
|
+ Delete(str1,0,12);
|
|
|
+ if str1<>'Hello' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str1:='Hello';
|
|
|
+ Delete(str1,1,12);
|
|
|
+ if str1<>'' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str1:='Hello';
|
|
|
+ Delete(str1,12,255);
|
|
|
+ if str1<>'Hello' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str1:='Hello';
|
|
|
+ Delete(str1,-1,255);
|
|
|
+ if str1<>'Hello' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str1:='Hello';
|
|
|
+ Delete(str1,1,-12);
|
|
|
+ if str1<>'Hello' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ {************************* ansistring *************************}
|
|
|
+ { try to delete from an empty string }
|
|
|
+ str2:='';
|
|
|
+ Delete(str2,0,12);
|
|
|
+ if str2<>'' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str2:='Hello';
|
|
|
+ Delete(str2,0,12);
|
|
|
+ if str2<>'Hello' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str2:='Hello';
|
|
|
+ Delete(str2,1,12);
|
|
|
+ if str2<>'' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str2:='Hello';
|
|
|
+ Delete(str2,12,255);
|
|
|
+ if str2<>'Hello' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ STR2:='Hello';
|
|
|
+ Delete(STR2,-1,255);
|
|
|
+ if STR2<>'Hello' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ STR2:='Hello';
|
|
|
+ Delete(STR2,1,-12);
|
|
|
+ if STR2<>'Hello' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ {************************* widestring *************************}
|
|
|
+{$ifdef haswidestring}
|
|
|
+ { try to delete from an empty string }
|
|
|
+ str3:='';
|
|
|
+ Delete(str3,0,12);
|
|
|
+ if str3<>'' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str3:='Hello';
|
|
|
+ Delete(str3,0,12);
|
|
|
+ if str3<>'Hello' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str3:='Hello';
|
|
|
+ Delete(str3,1,12);
|
|
|
+ if str3<>'' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str3:='Hello';
|
|
|
+ Delete(str3,12,255);
|
|
|
+ if str3<>'Hello' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str3:='Hello';
|
|
|
+ Delete(str3,-1,255);
|
|
|
+ if str3<>'Hello' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str3:='Hello';
|
|
|
+ Delete(str3,1,-12);
|
|
|
+ if str3<>'Hello' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+{$endif}
|
|
|
+ if not _result then
|
|
|
+ fail
|
|
|
+ else
|
|
|
+ WriteLn('Success!');
|
|
|
+ end;
|
|
|
+
|
|
|
+ procedure test_copy;
|
|
|
+ var
|
|
|
+ _result : boolean;
|
|
|
+ i: integer;
|
|
|
+ begin
|
|
|
+ Write('Copy tests...');
|
|
|
+ _result := true;
|
|
|
+
|
|
|
+ {************************* shortstring ************************}
|
|
|
+ { try to copy from an empty string }
|
|
|
+ str1:='';
|
|
|
+ str1:=Copy(str1,1,12);
|
|
|
+ if str1<>'' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str1:='';
|
|
|
+ str1:=Copy('Hello world',0,12);
|
|
|
+ if str1<>'Hello world' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str1:='';
|
|
|
+ str1:=Copy('Hello world',1,12);
|
|
|
+ if str1<>'Hello world' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str1:='';
|
|
|
+ str1:=Copy('Hello world',-12,12);
|
|
|
+ if str1<>'Hello world' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str1:='';
|
|
|
+ str1:=Copy('Hello world',64,128);
|
|
|
+ if str1<>'' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str1:='';
|
|
|
+ str1:=Copy('Hello world',1,-12);
|
|
|
+ if str1<>'' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str1:='';
|
|
|
+ str1:=Copy('Hello world',-12,0);
|
|
|
+ if str1<>'' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str1:='';
|
|
|
+ str1:=Copy('Hello world',7,11);
|
|
|
+ if str1<>'world' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str1:='';
|
|
|
+ str1:=Copy('Hello world',1,11);
|
|
|
+ if str1<>'Hello world' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str1:='';
|
|
|
+ str1:=Copy('',0,12);
|
|
|
+ if str1<>'' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ {************************* ansistring *************************}
|
|
|
+ { try to copy from an empty string }
|
|
|
+ str2:='';
|
|
|
+ str2:=Copy(str2,1,12);
|
|
|
+ if str2<>'' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str2:='';
|
|
|
+ str2:=Copy('Hello world',0,12);
|
|
|
+ if str2<>'Hello world' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str2:='';
|
|
|
+ str2:=Copy('Hello world',1,12);
|
|
|
+ if str2<>'Hello world' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str2:='';
|
|
|
+ str2:=Copy('Hello world',-12,12);
|
|
|
+ if str2<>'Hello world' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str2:='';
|
|
|
+ str2:=Copy('Hello world',64,128);
|
|
|
+ if str2<>'' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str2:='';
|
|
|
+ str2:=Copy('Hello world',1,-12);
|
|
|
+ if str2<>'' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str2:='';
|
|
|
+ str2:=Copy('Hello world',-12,0);
|
|
|
+ if str2<>'' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str2:='';
|
|
|
+ str2:=Copy('Hello world',7,11);
|
|
|
+ if str2<>'world' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str2:='';
|
|
|
+ str2:=Copy('Hello world',1,11);
|
|
|
+ if str2<>'Hello world' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str2:='';
|
|
|
+ str2:=Copy('',0,12);
|
|
|
+ if str2<>'' then
|
|
|
+ _result := false;
|
|
|
+ {************************* widestring *************************}
|
|
|
+{$ifdef haswidestring}
|
|
|
+ { try to copy from an empty string }
|
|
|
+ str3:='';
|
|
|
+ str3:=Copy(str3,1,12);
|
|
|
+ if str3<>'' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str3:='';
|
|
|
+ str3:=Copy('Hello world',0,12);
|
|
|
+ if str3<>'Hello world' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str3:='';
|
|
|
+ str3:=Copy('Hello world',1,12);
|
|
|
+ if str3<>'Hello world' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str3:='';
|
|
|
+ str3:=Copy('Hello world',-12,12);
|
|
|
+ if str3<>'Hello world' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str3:='';
|
|
|
+ str3:=Copy('Hello world',64,128);
|
|
|
+ if str3<>'' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str3:='';
|
|
|
+ str3:=Copy('Hello world',1,-12);
|
|
|
+ if str3<>'' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str3:='';
|
|
|
+ str3:=Copy('Hello world',-12,0);
|
|
|
+ if str3<>'' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str3:='';
|
|
|
+ str3:=Copy('Hello world',7,11);
|
|
|
+ if str3<>'world' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str3:='';
|
|
|
+ str3:=Copy('Hello world',1,11);
|
|
|
+ if str3<>'Hello world' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str3:='';
|
|
|
+ str3:=Copy('',0,12);
|
|
|
+ if str3<>'' then
|
|
|
+ _result := false;
|
|
|
+{$endif}
|
|
|
+ if not _result then
|
|
|
+ fail
|
|
|
+ else
|
|
|
+ WriteLn('Success!');
|
|
|
+ end;
|
|
|
+
|
|
|
+
|
|
|
+procedure test_insert;
|
|
|
+ var
|
|
|
+ _result : boolean;
|
|
|
+ i: integer;
|
|
|
+ begin
|
|
|
+ Write('Insert tests...');
|
|
|
+ _result := true;
|
|
|
+ {************************* shortstring ************************}
|
|
|
+ str1:='Hello world';
|
|
|
+ Insert(' this is my ',str1,-12);
|
|
|
+ if str1<>' this is my Hello world' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str1:='Hello world';
|
|
|
+ Insert(' this is my ',str1,0);
|
|
|
+ if str1<>' this is my Hello world' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str1:='Hello world';
|
|
|
+ Insert(' this is my ',str1,64);
|
|
|
+ if str1<>'Hello world this is my ' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str1:='Hello world';
|
|
|
+ Insert(' this is my ',str1,300);
|
|
|
+ if str1<>'Hello world this is my ' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str1:='Hello world';
|
|
|
+ Insert(' this is my ',str1,length(str1)+1);
|
|
|
+ if str1<>'Hello world this is my ' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str1:='Hello world';
|
|
|
+ Insert('this is my ',str1,7);
|
|
|
+ if str1<>'Hello this is my world' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str1:='';
|
|
|
+ Insert(' this is my ',str1,0);
|
|
|
+ if str1<>' this is my ' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str1:='';
|
|
|
+ Insert(' this is my ',str1,length(str1));
|
|
|
+ if str1<>' this is my ' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str1:='';
|
|
|
+ Insert(' this is my ',str1,32);
|
|
|
+ if str1<>' this is my ' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str1:='Hello world';
|
|
|
+ Insert('',str1,0);
|
|
|
+ if str1<>'Hello world' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str1:='Hello world';
|
|
|
+ Insert('',str1,7);
|
|
|
+ if str1<>'Hello world' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ {************************* ansistring *************************}
|
|
|
+ str2:='Hello world';
|
|
|
+ Insert(' this is my ',str2,-12);
|
|
|
+ if str2<>' this is my Hello world' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str2:='Hello world';
|
|
|
+ Insert(' this is my ',str2,0);
|
|
|
+ if str2<>' this is my Hello world' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str2:='Hello world';
|
|
|
+ Insert(' this is my ',str2,64);
|
|
|
+ if str2<>'Hello world this is my ' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str2:='Hello world';
|
|
|
+ Insert(' this is my ',str2,300);
|
|
|
+ if str2<>'Hello world this is my ' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str2:='Hello world';
|
|
|
+ Insert(' this is my ',str2,length(str2)+1);
|
|
|
+ if str2<>'Hello world this is my ' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str2:='Hello world';
|
|
|
+ Insert('this is my ',str2,7);
|
|
|
+ if str2<>'Hello this is my world' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str2:='';
|
|
|
+ Insert(' this is my ',str2,0);
|
|
|
+ if str2<>' this is my ' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str2:='';
|
|
|
+ Insert(' this is my ',str2,length(str2));
|
|
|
+ if str2<>' this is my ' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str2:='';
|
|
|
+ Insert(' this is my ',str2,32);
|
|
|
+ if str2<>' this is my ' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str2:='Hello world';
|
|
|
+ Insert('',str2,0);
|
|
|
+ if str2<>'Hello world' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str2:='Hello world';
|
|
|
+ Insert('',str2,7);
|
|
|
+ if str2<>'Hello world' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ {************************* widestring *************************}
|
|
|
+{$ifdef haswidestring}
|
|
|
+ str3:='Hello world';
|
|
|
+ Insert(' this is my ',str3,-12);
|
|
|
+ if str3<>' this is my Hello world' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str3:='Hello world';
|
|
|
+ Insert(' this is my ',str3,0);
|
|
|
+ if str3<>' this is my Hello world' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str3:='Hello world';
|
|
|
+ Insert(' this is my ',str3,64);
|
|
|
+ if str3<>'Hello world this is my ' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str3:='Hello world';
|
|
|
+ Insert(' this is my ',str3,300);
|
|
|
+ if str3<>'Hello world this is my ' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str3:='Hello world';
|
|
|
+ Insert(' this is my ',str3,length(str3)+1);
|
|
|
+ if str3<>'Hello world this is my ' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str3:='Hello world';
|
|
|
+ Insert('this is my ',str3,7);
|
|
|
+ if str3<>'Hello this is my world' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str3:='';
|
|
|
+ Insert(' this is my ',str3,0);
|
|
|
+ if str3<>' this is my ' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str3:='';
|
|
|
+ Insert(' this is my ',str3,length(str3));
|
|
|
+ if str3<>' this is my ' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str3:='';
|
|
|
+ Insert(' this is my ',str3,32);
|
|
|
+ if str3<>' this is my ' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str3:='Hello world';
|
|
|
+ Insert('',str3,0);
|
|
|
+ if str3<>'Hello world' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ str3:='Hello world';
|
|
|
+ Insert('',str3,7);
|
|
|
+ if str3<>'Hello world' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+{$endif}
|
|
|
+
|
|
|
+ if not _result then
|
|
|
+ fail
|
|
|
+ else
|
|
|
+ WriteLn('Success!');
|
|
|
+ end;
|
|
|
+
|
|
|
+ procedure test_pos;
|
|
|
+ var
|
|
|
+ _result : integer;
|
|
|
+ position: integer;
|
|
|
+ begin
|
|
|
+ Write('Pos tests...');
|
|
|
+ _result := 0;
|
|
|
+ {************************* shortstring ************************}
|
|
|
+ str1:='Hello world';
|
|
|
+ position:=Pos('',str1);
|
|
|
+ if position <> 0 then
|
|
|
+ _result := 1;
|
|
|
+
|
|
|
+ str1:='';
|
|
|
+ position:=Pos('',str1);
|
|
|
+ if position <> 0 then
|
|
|
+ _result := 2;
|
|
|
+
|
|
|
+ str1:='Hello world';
|
|
|
+ position:=Pos('world',str1);
|
|
|
+ if position <> 7 then
|
|
|
+ _result := 3;
|
|
|
+
|
|
|
+ str1:='Hello world';
|
|
|
+ position:=Pos('world',str1);
|
|
|
+ if position <> 7 then
|
|
|
+ _result := 4;
|
|
|
+
|
|
|
+ str1:='Hello world';
|
|
|
+ position:=Pos('worldx',str1);
|
|
|
+ if position <> 0 then
|
|
|
+ _result := 5;
|
|
|
+
|
|
|
+ str1:='';
|
|
|
+ position:=Pos('worldx',str1);
|
|
|
+ if position <> 0 then
|
|
|
+ _result := 6;
|
|
|
+
|
|
|
+ {************************* ansistring *************************}
|
|
|
+ str2:='Hello world';
|
|
|
+ position:=Pos('',str2);
|
|
|
+ if position <> 0 then
|
|
|
+ _result := 7;
|
|
|
+
|
|
|
+ str2:='';
|
|
|
+ position:=Pos('',str2);
|
|
|
+ if position <> 0 then
|
|
|
+ _result := 8;
|
|
|
+
|
|
|
+ str2:='Hello world';
|
|
|
+ position:=Pos('world',str2);
|
|
|
+ if position <> 7 then
|
|
|
+ _result := 9;
|
|
|
+
|
|
|
+ str2:='Hello world';
|
|
|
+ position:=Pos('world',str2);
|
|
|
+ if position <> 7 then
|
|
|
+ _result := 10;
|
|
|
+
|
|
|
+ str2:='Hello world';
|
|
|
+ position:=Pos('worldx',str2);
|
|
|
+ if position <> 0 then
|
|
|
+ _result := 11;
|
|
|
+
|
|
|
+ str2:='';
|
|
|
+ position:=Pos('worldx',str2);
|
|
|
+ if position <> 0 then
|
|
|
+ _result := 12;
|
|
|
+
|
|
|
+ {************************* widestring *************************}
|
|
|
+{$ifdef haswidestring}
|
|
|
+ str3:='Hello world';
|
|
|
+ position:=Pos('',str3);
|
|
|
+ if position <> 0 then
|
|
|
+ _result := 13;
|
|
|
+
|
|
|
+ str3:='';
|
|
|
+ position:=Pos('',str3);
|
|
|
+ if position <> 0 then
|
|
|
+ _result := 14;
|
|
|
+
|
|
|
+ str3:='Hello world';
|
|
|
+ position:=Pos('world',str3);
|
|
|
+ if position <> 7 then
|
|
|
+ _result := 15;
|
|
|
+
|
|
|
+ str3:='Hello world';
|
|
|
+ position:=Pos('world',str3);
|
|
|
+ if position <> 7 then
|
|
|
+ _result := 16;
|
|
|
+
|
|
|
+ str3:='Hello world';
|
|
|
+ position:=Pos('worldx',str3);
|
|
|
+ if position <> 0 then
|
|
|
+ _result := 17;
|
|
|
+
|
|
|
+ str3:='';
|
|
|
+ position:=Pos('worldx',str3);
|
|
|
+ if position <> 0 then
|
|
|
+ _result := 18;
|
|
|
+
|
|
|
+{$endif}
|
|
|
+ if not (_result=0) then
|
|
|
+ fail(_result)
|
|
|
+ else
|
|
|
+ WriteLn('Success!');
|
|
|
+ end;
|
|
|
+
|
|
|
+ procedure test_pos_offset;
|
|
|
+ var
|
|
|
+ _result : integer;
|
|
|
+ position: integer;
|
|
|
+ begin
|
|
|
+ Write('Pos /Offset tests...');
|
|
|
+ _result := 0;
|
|
|
+ {************************* shortstring ************************}
|
|
|
+ str1:='Hello world';
|
|
|
+ position:=Pos('',str1,3);
|
|
|
+ if position <> 0 then
|
|
|
+ _result := 1;
|
|
|
+
|
|
|
+ str1:='';
|
|
|
+ position:=Pos('',str1,3);
|
|
|
+ if position <> 0 then
|
|
|
+ _result := 2;
|
|
|
+
|
|
|
+ str1:='Hello world';
|
|
|
+ position:=Pos('world',str1,3);
|
|
|
+ if position <> 7 then
|
|
|
+ _result := 3;
|
|
|
+
|
|
|
+ str1:='Hello world';
|
|
|
+ position:=Pos('world',str1,8);
|
|
|
+ if position <> 0 then
|
|
|
+ _result := 20;
|
|
|
+
|
|
|
+ str1:='Hello world';
|
|
|
+ position:=Pos('world',str1,12);
|
|
|
+ if position <> 0 then
|
|
|
+ _result := 26;
|
|
|
+
|
|
|
+ str1:='Hello world';
|
|
|
+ position:=Pos('world',str1,0);
|
|
|
+ if position <> 0 then
|
|
|
+ _result := 27;
|
|
|
+
|
|
|
+ str1:='Hello world';
|
|
|
+ position:=Pos('world',str1,3);
|
|
|
+ if position <> 7 then
|
|
|
+ _result := 4;
|
|
|
+
|
|
|
+ str1:='Hello world';
|
|
|
+ position:=Pos('worldx',str1,3);
|
|
|
+ if position <> 0 then
|
|
|
+ _result := 5;
|
|
|
+
|
|
|
+ str1:='';
|
|
|
+ position:=Pos('worldx',str1,3);
|
|
|
+ if position <> 0 then
|
|
|
+ _result := 6;
|
|
|
+
|
|
|
+ {************************* ansistring *************************}
|
|
|
+ str2:='Hello world';
|
|
|
+ position:=Pos('',str2,3);
|
|
|
+ if position <> 0 then
|
|
|
+ _result := 7;
|
|
|
+
|
|
|
+ str2:='';
|
|
|
+ position:=Pos('',str2,3);
|
|
|
+ if position <> 0 then
|
|
|
+ _result := 8;
|
|
|
+
|
|
|
+ str2:='Hello world';
|
|
|
+ position:=Pos('world',str2,3);
|
|
|
+ if position <> 7 then
|
|
|
+ _result := 9;
|
|
|
+
|
|
|
+ str2:='Hello world';
|
|
|
+ position:=Pos('world',str2,8);
|
|
|
+ if position <> 0 then
|
|
|
+ _result := 21;
|
|
|
+
|
|
|
+ str2:='Hello world';
|
|
|
+ position:=Pos('world',str2,12);
|
|
|
+ if position <> 0 then
|
|
|
+ _result := 28;
|
|
|
+
|
|
|
+ str2:='Hello world';
|
|
|
+ position:=Pos('world',str2,0);
|
|
|
+ if position <> 0 then
|
|
|
+ _result := 29;
|
|
|
+
|
|
|
+ str2:='Hello world';
|
|
|
+ position:=Pos('world',str2,3);
|
|
|
+ if position <> 7 then
|
|
|
+ _result := 10;
|
|
|
+
|
|
|
+ str2:='Hello world';
|
|
|
+ position:=Pos('worldx',str2,3);
|
|
|
+ if position <> 0 then
|
|
|
+ _result := 11;
|
|
|
+
|
|
|
+ str2:='';
|
|
|
+ position:=Pos('worldx',str2,3);
|
|
|
+ if position <> 0 then
|
|
|
+ _result := 12;
|
|
|
+
|
|
|
+ {************************* widestring *************************}
|
|
|
+{$ifdef haswidestring}
|
|
|
+ str3:='Hello world';
|
|
|
+ position:=Pos('',str3,3);
|
|
|
+ if position <> 0 then
|
|
|
+ _result := 13;
|
|
|
+
|
|
|
+ str3:='';
|
|
|
+ position:=Pos('',str3,3);
|
|
|
+ if position <> 0 then
|
|
|
+ _result := 14;
|
|
|
+
|
|
|
+ str3:='Hello world';
|
|
|
+ position:=Pos('world',str3,3);
|
|
|
+ if position <> 7 then
|
|
|
+ _result := 15;
|
|
|
+
|
|
|
+ str3:='Hello world';
|
|
|
+ position:=Pos('world',str3,3);
|
|
|
+ if position <> 7 then
|
|
|
+ _result := 16;
|
|
|
+
|
|
|
+ str3:='Hello world';
|
|
|
+ position:=Pos('world',str3,8);
|
|
|
+ if position <> 0 then
|
|
|
+ _result := 23;
|
|
|
+
|
|
|
+ str3:='Hello world';
|
|
|
+ position:=Pos('world',str3,12);
|
|
|
+ if position <> 0 then
|
|
|
+ _result := 30;
|
|
|
+
|
|
|
+ str3:='Hello world';
|
|
|
+ position:=Pos('world',str3,0);
|
|
|
+ if position <> 0 then
|
|
|
+ _result := 31;
|
|
|
+
|
|
|
+ str3:='Hello world';
|
|
|
+ position:=Pos('worldx',str3,3);
|
|
|
+ if position <> 0 then
|
|
|
+ _result := 17;
|
|
|
+
|
|
|
+ str3:='';
|
|
|
+ position:=Pos('worldx',str3,3);
|
|
|
+ if position <> 0 then
|
|
|
+ _result := 18;
|
|
|
+
|
|
|
+{$endif}
|
|
|
+ if not (_result=0) then
|
|
|
+ fail(_result)
|
|
|
+ else
|
|
|
+ WriteLn('Success!');
|
|
|
+ end;
|
|
|
+
|
|
|
+ procedure test_chr;
|
|
|
+ var
|
|
|
+ c: char;
|
|
|
+ _result : boolean;
|
|
|
+ begin
|
|
|
+ Write('Chr tests...');
|
|
|
+ _result := true;
|
|
|
+{ c:=chr($3074);
|
|
|
+ if c<>'t' then
|
|
|
+ _result := false;
|
|
|
+ The above statement compile under Delphi, and it
|
|
|
+ should not imho. Freepascal gives a range-check
|
|
|
+ error, as it should.
|
|
|
+}
|
|
|
+ if chr(76)<>'L' then
|
|
|
+ _result := false;
|
|
|
+
|
|
|
+ if _result = false then
|
|
|
+ fail
|
|
|
+ else
|
|
|
+ WriteLn('Success!');
|
|
|
+ end;
|
|
|
+
|
|
|
+
|
|
|
+ procedure test_concat;
|
|
|
+ var
|
|
|
+ _result : boolean;
|
|
|
+ i: integer;
|
|
|
+ begin
|
|
|
+ Write('Concat tests...');
|
|
|
+ _result := true;
|
|
|
+ if not _result then
|
|
|
+ fail
|
|
|
+ else
|
|
|
+ WriteLn('Success!');
|
|
|
+ end;
|
|
|
+
|
|
|
+Begin
|
|
|
+{ test_delete;
|
|
|
+ test_stringofchar;
|
|
|
+ test_copy;
|
|
|
+ test_insert;}
|
|
|
+ test_pos;
|
|
|
+ test_pos_offset;
|
|
|
+ test_chr;
|
|
|
+end.
|