language-Modula2-0.1: examples/Modula-2_Libraries/PMOS/sources/tests/printert.mod
MODULE PrinterTest;
(********************************************************)
(* *)
(* Test of printer driver. *)
(* *)
(* Programmer: P. Moylan *)
(* Last edited: 26 February 1993 *)
(* Status: *)
(* Basic tests complete. *)
(* *)
(********************************************************)
FROM GlassTTY IMPORT
(* proc *) WriteString, WriteLn;
FROM KTrace IMPORT
(* proc *) InTrace, OutTrace, TraceOn, NYI;
FROM Printer IMPORT
(* proc *) PrintChar;
(************************************************************************)
PROCEDURE PrintString (text: ARRAY OF CHAR);
(* Prints from array text until NUL or end of array. *)
VAR j: CARDINAL;
BEGIN
InTrace ("PrintString");
j := 0;
LOOP
IF text[j] = CHR(0) THEN EXIT(*LOOP*) END (*IF*);
PrintChar (text[j]);
IF j = HIGH(text) THEN EXIT(*LOOP*) END (*IF*);
INC (j);
END (*LOOP*);
OutTrace ("PrintString");
END PrintString;
(************************************************************************)
PROCEDURE PrintEOL;
(* Sends a carriage return and line feed to the printer. Note that *)
(* the printer might not print unterminated lines, because of its *)
(* internal buffering. *)
BEGIN
PrintChar (CHR(13)); PrintChar(CHR(10));
END PrintEOL;
(************************************************************************)
PROCEDURE RunTheTest;
(* Prints a short test message, and then runs through every *)
(* printable character code. *)
(* Codes CHR(0) to CHR(31) are not tested, since it is hard in such *)
(* a test, because of possible sequence dependence, to interpret *)
(* the results. *)
VAR ch: CHAR;
BEGIN
InTrace ("RunTheTest");
WriteString ("Test of printer driver.");
WriteLn;
PrintString ("Test message.");
PrintEOL;
PrintString ("A somewhat longer line, to check the buffering.");
PrintEOL;
PrintString ("Third line of test message.");
PrintEOL;
PrintString ("ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789 .,;");
PrintEOL;
FOR ch := CHR(32) TO CHR(63) DO
PrintChar (ch);
END (*FOR*);
PrintEOL;
FOR ch := CHR(64) TO CHR(127) DO
PrintChar (ch);
END (*FOR*);
PrintEOL;
FOR ch := CHR(128) TO CHR(191) DO
PrintChar (ch);
END (*FOR*);
PrintEOL;
FOR ch := CHR(192) TO CHR(255) DO
PrintChar (ch);
END (*FOR*);
PrintEOL;
WriteString ("End of test.");
WriteLn;
OutTrace ("RunTheTest");
END RunTheTest;
(************************************************************************)
(* MAIN PROGRAM *)
(************************************************************************)
BEGIN
(* TraceOn;*)
RunTheTest;
END PrinterTest.