summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gm2/isolib/run/pass/testreadint.mod
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gm2/isolib/run/pass/testreadint.mod')
-rw-r--r--gcc/testsuite/gm2/isolib/run/pass/testreadint.mod89
1 files changed, 89 insertions, 0 deletions
diff --git a/gcc/testsuite/gm2/isolib/run/pass/testreadint.mod b/gcc/testsuite/gm2/isolib/run/pass/testreadint.mod
new file mode 100644
index 00000000000..54073fdaf8b
--- /dev/null
+++ b/gcc/testsuite/gm2/isolib/run/pass/testreadint.mod
@@ -0,0 +1,89 @@
+MODULE testreadint ;
+
+FROM ChanConsts IMPORT OpenResults, old, read, write ;
+FROM IOChan IMPORT ChanId ;
+FROM StdChans IMPORT StdOutChan ;
+IMPORT StreamFile ;
+FROM TextIO IMPORT SkipLine, WriteLn, WriteString ;
+FROM WholeIO IMPORT ReadCard, ReadInt, WriteCard, WriteInt ;
+FROM libc IMPORT printf, exit ;
+
+
+CONST
+ TestFileName = "testdata" ;
+
+
+PROCEDURE Assert (condition: BOOLEAN; name, result: ARRAY OF CHAR) ;
+BEGIN
+ IF NOT condition
+ THEN
+ code := 1 ;
+ printf ("assert failed, procedure: %s failed to read number: %s\n", name, result)
+ END
+END Assert ;
+
+
+PROCEDURE StressReadInt ;
+VAR
+ in,
+ out : ChanId ;
+ result: OpenResults ;
+ int : INTEGER ;
+ card : CARDINAL ;
+BEGIN
+ (* Create a new file and use WriteCard to populate the file. *)
+ printf ("creating test file: %s\n", TestFileName) ;
+
+ StreamFile.Open (out, TestFileName, write+old, result);
+ IF result = opened
+ THEN
+ WriteString (out, ' ') ;
+ WriteCard (out, 123, 3) ;
+ WriteLn (out) ;
+ WriteCard (out, 456, 3) ;
+ WriteLn (out) ;
+ StreamFile.Close (out)
+ ELSE
+ printf ("unable to create: %s\n", TestFileName) ;
+ exit (1)
+ END ;
+
+ (* Now attempt to read the data using ReadCard. *)
+ printf ("reading test file using ReadCard: %s\n", TestFileName) ;
+ StreamFile.Open (in, TestFileName, read, result) ;
+ IF result = opened
+ THEN
+ ReadCard (in, card) ;
+ printf ("first cardinal: %d\n", card) ;
+ Assert (card = 123, "ReadCard", "123") ;
+ SkipLine (in) ;
+ ReadCard (in, card) ;
+ printf ("second cardinal: %d\n", card) ;
+ Assert (card = 456, "ReadCard", "456") ;
+ StreamFile.Close (in)
+ END ;
+
+ (* Now attempt to read the data using ReadInt. *)
+ printf ("reading test file using ReadInt: %s\n", TestFileName) ;
+ StreamFile.Open (in, TestFileName, read, result) ;
+ IF result = opened
+ THEN
+ ReadInt (in, int) ;
+ printf ("first integer: %d\n", int) ;
+ Assert (int = 123, "ReadInt", "123") ;
+ SkipLine (in) ;
+ ReadInt (in, int) ;
+ printf ("second integer: %d\n", int) ;
+ Assert (int = 456, "ReadInt", "456") ;
+ StreamFile.Close (in)
+ END
+END StressReadInt ;
+
+
+VAR
+ code: INTEGER ;
+BEGIN
+ code := 0 ;
+ StressReadInt ;
+ exit (code)
+END testreadint.