packages feed

language-Modula2-0.1: examples/Modula-2_Libraries/PMOS/sources/tests/wtest.mod

MODULE WTest;

	(************************************************)
	(*						*)
	(*	Test of window operations.		*)
	(*						*)
	(*  Programmer:		P. Moylan		*)
	(*  Last edited:	7 November 1993		*)
	(*  Status:		Working			*)
	(*						*)
	(************************************************)

FROM Trace IMPORT
    (* proc *)	TraceOff, TraceOn, InTrace, OutTrace, Pause;

FROM Windows IMPORT
    (* type *)	Window, FrameType, DividerType, Colour,
    (* proc *)	OpenWindow, CloseWindow, ChangeScrollingRegion,
		WriteChar, WriteString, WriteLn;

FROM Bounce IMPORT
    (* proc *)	Bouncing;

(****************************************************************)

PROCEDURE increment (VAR (* inout *) ch: CHAR);

    BEGIN
	InTrace ("increment");
	IF ch = CHR(255) THEN
	    ch := " ";
	ELSE
	    INC (ch);
	END (*IF*);
	OutTrace ("increment");
    END increment;

(****************************************************************)

PROCEDURE RunTheTest;

    VAR w1, w2, w3: Window;
	ch: CHAR;
	i, j, loopcount: CARDINAL;

    BEGIN
	InTrace ("RunTheTest");
	Bouncing (0, 11, 41, 79);
	Pause;
	OpenWindow (w1, blue, cyan, 6, 16, 0, 40, simpleframe, nodivider);
	WriteString (w1, "Test Message, window w1");
	Pause;
	OpenWindow (w2, white, magenta, 12, 22, 20, 63, doubleframe, nodivider);
	WriteString (w2, "Test Message, window w2");
	OpenWindow (w3, brown, black, 13, 24, 45, 75,
			simpleframe, doubledivider);
	WriteString (w3, "This one should have");  WriteLn (w3);
	WriteString (w3, " a non-scrolling header.");
	ChangeScrollingRegion (w3, 4, 10);
	(*Pause*);
	ch := " ";  loopcount := 0;
	FOR i := 1 TO 40 DO
	    FOR j := 1 TO 40 DO
		WriteChar (w1, ch);  increment (ch);
	    END (* for *);
	    FOR j := 1 TO 40 DO
		WriteChar (w2, ch);  increment (ch);
	    END (* for *);
	    INC (loopcount);
	    IF loopcount = 10 THEN
		WriteLn (w3);
		WriteString (w3, " and footer");
		ChangeScrollingRegion (w3, 4, 8);
	    ELSIF loopcount = 20 THEN
		WriteLn (w3);
		ChangeScrollingRegion (w3, 1, 8);
	    ELSIF loopcount = 30 THEN
		WriteLn (w3);
		ChangeScrollingRegion (w3, 4, 10);
		loopcount := 0;
	    END (* if *);
	    FOR j := 1 TO 40 DO
		WriteChar (w3, ch);  increment (ch);
	    END (* for *);
	    (*Pause*);
	END (* for *);
	(*DumpWindow (w2)*);
	Pause;  CloseWindow (w2);
	Pause;  CloseWindow (w3);
	(*Pause*);  CloseWindow (w1);
	OutTrace ("RunTheTest");
    END RunTheTest;

(****************************************************************)

BEGIN
    TraceOn (0, 4, 10, 40, 1);
    RunTheTest;
    TraceOff;
END WTest.