PROCEDURE OpenTestCases(VAR in: Streams.Stream) : BOOLEAN;
CONST
filename = "triangle.tests";
fieldsep = ":";
VAR
fieldseps: Sets.CharSet;
BEGIN
IF ~UnixFiles.Open(in, filename, UnixFiles.read,
Streams.onebuf, NIL) THEN
RETURN FALSE
END;
Sets.InitSet(fieldseps);
Sets.InclChar(fieldseps, fieldsep);
StreamDisciplines.SetFieldSepSet(in, fieldseps);
RETURN TRUE
END OpenTestCases;
PROCEDURE ReadTestCase(in: Streams.Stream;
VAR test: TestCase) : BOOLEAN;
BEGIN
LOOP
test.output := "";
IF Read.FieldS(in, test.input) &
Read.FieldS(in, test.expected) THEN
Read.LnS(in);
RETURN in.count > 0
END;
IF in.eof OR in.error THEN
RETURN FALSE
END;
(* skip an empty line *)
Read.LnS(in);
END;
END ReadTestCase;
|