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.