home *** CD-ROM | disk | FTP | other *** search
- MODULE TestStack;
- (*----------------------------------------------------------------------*
- * Dieses Programm dient zum Testen des StackHandler's. *
- * Es testet Funktion und Fehlermeldungen und dient zur Demonstration *
- * der Anwendung. *
- * Copyright 1987: Dipl.-Inform. Frank F. Wachtmeister *
- *----------------------------------------------------------------------*)
- (*$A+ *)
- FROM StackHandler IMPORT Stack, InitStack, StackSize,
- Push, Pop, TopOfStack;
- FROM TextIO IMPORT Read, WriteCard, WriteString, WriteReal,WriteLn;
- FROM Storage IMPORT CreateHeap;
- FROM Debugger IMPORT Activate, Error;
- FROM M2Conversions IMPORT ConvertCardinal;
- FROM Strings IMPORT Assign;
-
- VAR i,j: CARDINAL;
- r: REAL;
- s: Stack;
- c: CHAR;
- feld : ARRAY [1..120] OF REAL;
- string: ARRAY [1..255] OF CHAR;
-
- BEGIN
- (* Ausgabe von Debugger-Informationen auf den Bildschirm *)
- Activate (TRUE);
- WriteLn;
-
- (* Reservierung von Speicherplatz für den Heap *)
- IF NOT CreateHeap (78000, FALSE) THEN
- (* Insufficient Memory *)
- Error (39);
- Read (c); HALT;
- END;
-
- (* Initialisierung des Stacks *)
- InitStack (s);
-
- (* Daten auf den Stack pushen *)
- WriteLn;
- FOR i:=0 TO 50 DO
- ConvertCardinal (i, 4, string);
- WriteString (string);
- Push (s, string);
- END;
- WriteLn; WriteLn;
-
- (* Ausgabe der Grö₧e des Stacks *)
- WriteString ('Grö₧e des Stacks: ');
- WriteCard ( StackSize (s), 4);
- WriteLn; WriteLn;
-
- (* Ausgabe des TOP of Stack *)
- WriteString ('Top of Stack: ');
- Assign (string,' ');
- TopOfStack (s, string);
- WriteString (string);
- WriteLn; WriteLn;
-
- (* Daten vom Stack poppen *)
- FOR i:=0 TO 50 DO
- Pop (s,string);
- WriteString (string);
- END;
- WriteLn; WriteLn;
-
- (**********************************)
- (* Test der Fehlermeldungen *)
- (**********************************)
-
- (* Zu gro₧es Datenelement *)
- Push(s,feld);
-
- (* Pop von leerem Stack *)
- Pop (s,j);
-
- (* Inkompatible Typen: *)
- (* CHAR auf Stack, REAL von Stack *)
- c:=' '; Push (s,c);
- Pop (s,r);
-
- WriteString ('Ende des Testlaufes, Fehlermeldungen 103-105 sind ok.');
- Read (c);
- END TestStack.
-
-
-
-