blob: c834faf9c0b6413f501bba76a25174b48b3a2ed4 [file] [log] [blame]
MODULE testdelete ;
FROM libc IMPORT printf, exit ;
FROM Strings IMPORT Delete, Length ;
FROM StrLib IMPORT StrEqual ;
VAR
code : INTEGER ;
one : ARRAY [0..0] OF CHAR ;
two : ARRAY [0..1] OF CHAR ;
three: ARRAY [0..2] OF CHAR ;
four : ARRAY [0..3] OF CHAR ;
large: ARRAY [0..79] OF CHAR ;
PROCEDURE Assert (condition: BOOLEAN; message: ARRAY OF CHAR) ;
BEGIN
IF NOT condition
THEN
printf ("error: %s\n", message) ;
code := 1
END
END Assert ;
PROCEDURE stresstest ;
BEGIN
one := '1' ;
Delete (one, 0, 1) ;
printf ("after Delete string one = '%s'\n", one) ;
Assert (StrEqual (one, ''), 'string one should be empty after delete') ;
Assert (Length (one) = 0, 'string one have length 0 after delete') ;
two := '12' ;
Delete (two, 0, 1) ;
printf ("after Delete string two = '%s'\n", two) ;
Assert (StrEqual (two, '2'), "string two should be '2' after delete") ;
Assert (Length (two) = 1, 'string two have length 1 after delete') ;
three := '123' ;
Delete (three, 0, 1) ;
printf ("after Delete string three = '%s'\n", three) ;
Assert (StrEqual (three, '23'), "string three should be '23' after delete") ;
Assert (Length (three) = 2, 'string three should have length 2 after delete') ;
four := '4' ;
Delete (four, 0, 1) ;
printf ("after Delete string four = '%s'\n", four) ;
Assert (StrEqual (four, ''), "string four should be '' after delete") ;
Assert (Length (four) = 0, 'string four should have length 0 after delete') ;
large := '012345678901234567890123456789' ;
Delete (large, 20, 20) ;
printf ("after Delete string large = '%s'\n", large) ;
Assert (StrEqual (large, '01234567890123456789'), "string four should be '01234567890123456789' after delete") ;
Assert (Length (large) = 20, 'string large should have length 20 after delete') ;
large := '012345678901234567890123456789' ;
Delete (large, 10, 10) ;
printf ("after Delete string large = '%s'\n", large) ;
Assert (StrEqual (large, '01234567890123456789'), "string four should be '01234567890123456789' after delete") ;
Assert (Length (large) = 20, 'string large should have length 20 after delete') ;
three := '123' ;
Delete (three, 1, 1) ;
printf ("after Delete string three = '%s'\n", three) ;
Assert (StrEqual (three, '13'), "string three should be '13' after delete") ;
Assert (Length (three) = 2, 'string three should have length 2 after delete') ;
four := '123' ;
Delete (four, 1, 1) ;
printf ("after Delete string four = '%s'\n", four) ;
Assert (StrEqual (four, '13'), "string four should be '13' after delete") ;
Assert (Length (four) = 2, 'string four should have length 2 after delete') ;
END stresstest ;
BEGIN
code := 0 ;
stresstest ;
IF code = 0
THEN
printf ("all tests pass\n")
ELSE
exit (code)
END
END testdelete.