home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1988 / 08_09 / stack / teststac.mod < prev   
Encoding:
Text File  |  1988-01-10  |  2.4 KB  |  88 lines

  1. MODULE TestStack;
  2. (*----------------------------------------------------------------------*
  3.  * Dieses Programm dient zum Testen des StackHandler's.                 *
  4.  * Es testet Funktion und Fehlermeldungen und dient zur Demonstration   *
  5.  * der Anwendung.                                                       *
  6.  * Copyright 1987: Dipl.-Inform. Frank F. Wachtmeister                  *
  7.  *----------------------------------------------------------------------*)
  8. (*$A+ *)
  9. FROM StackHandler  IMPORT Stack, InitStack, StackSize, 
  10.                           Push, Pop, TopOfStack;
  11. FROM TextIO        IMPORT Read, WriteCard, WriteString, WriteReal,WriteLn; 
  12. FROM Storage       IMPORT CreateHeap;
  13. FROM Debugger      IMPORT Activate, Error;
  14. FROM M2Conversions IMPORT ConvertCardinal;
  15. FROM Strings       IMPORT Assign;
  16.  
  17. VAR i,j: CARDINAL;
  18.     r: REAL;
  19.     s: Stack;
  20.     c: CHAR;
  21.     feld  : ARRAY [1..120] OF REAL;
  22.     string: ARRAY [1..255] OF CHAR;    
  23.     
  24. BEGIN
  25.    (* Ausgabe von Debugger-Informationen auf den Bildschirm *)
  26.    Activate (TRUE);
  27.    WriteLn;
  28.  
  29.    (* Reservierung von Speicherplatz für den Heap           *)
  30.    IF NOT CreateHeap (78000, FALSE) THEN
  31.       (* Insufficient Memory *)
  32.       Error (39);
  33.       Read (c); HALT;
  34.    END;
  35.  
  36.    (* Initialisierung des Stacks *)
  37.    InitStack (s);
  38.  
  39.    (* Daten auf den Stack pushen *)
  40.    WriteLn;
  41.    FOR i:=0 TO 50  DO
  42.       ConvertCardinal (i, 4, string);
  43.       WriteString (string);
  44.       Push (s, string);
  45.    END;
  46.    WriteLn; WriteLn;
  47.  
  48.    (* Ausgabe der Grö₧e des Stacks   *)
  49.    WriteString ('Grö₧e des Stacks: ');
  50.    WriteCard   ( StackSize (s), 4);
  51.    WriteLn; WriteLn;
  52.  
  53.    (* Ausgabe des TOP of Stack       *)
  54.    WriteString ('Top of Stack: ');
  55.    Assign (string,'                ');
  56.    TopOfStack  (s, string);
  57.    WriteString (string);
  58.    WriteLn; WriteLn;
  59.  
  60.    (* Daten vom Stack poppen         *)
  61.    FOR i:=0 TO 50  DO
  62.       Pop (s,string);
  63.       WriteString (string);
  64.    END;
  65.    WriteLn; WriteLn;
  66.  
  67.    (**********************************)
  68.    (*    Test der Fehlermeldungen    *)
  69.    (**********************************)
  70.  
  71.    (* Zu gro₧es Datenelement         *)
  72.    Push(s,feld);
  73.  
  74.    (* Pop von leerem Stack           *)
  75.    Pop (s,j);
  76.  
  77.    (* Inkompatible Typen:            *)
  78.    (* CHAR auf Stack, REAL von Stack *)
  79.    c:=' '; Push (s,c);
  80.    Pop (s,r);
  81.  
  82.    WriteString ('Ende des Testlaufes, Fehlermeldungen 103-105 sind ok.');
  83.    Read (c);
  84. END TestStack.
  85.  
  86.  
  87.  
  88.