| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- MODULE WrapProg;
- // Smoke test for the new wrapper/time modules: StdChans, TimeString,
- // wrapclock, wraptime, wrapc. Exit 42.
- IMPORT StdChans, TimeString, wrapclock, wraptime, wrapc;
- IMPORT IOChan;
- FROM SYSTEM IMPORT ADDRESS;
- VAR ExitCode : INTEGER;
- VAR s, t : ARRAY [0..63] OF CHAR;
- VAR ts : wrapclock.timespec;
- VAR tv : wraptime.timeval;
- VAR tm : wraptime.tm;
- VAR sec, nano : LONGCARD;
- VAR ok : INTEGER;
- VAR n : INTEGER;
- VAR out : IOChan.ChanId;
- BEGIN
- (* StdChans: the current output channel is the standard one *)
- out := StdChans.OutChan();
- IOChan.WriteString(out, "wrappers ");
- IOChan.WriteLn(out);
- (* TimeString: a non-empty time string *)
- TimeString.GetTimeString(s);
- ok := 0;
- IF s[0] # CHR(0) THEN INC(ok) END;
- (* wrapclock: a timespec, read back *)
- ts := wrapclock.InitTimespec();
- ok := ok + wrapclock.GetTimeRealtime(ts);
- ok := ok + wrapclock.GetTimespec(ts, sec, nano);
- ok := ok + wrapclock.SetTimespec(ts, 5, 7);
- ok := ok + wrapclock.GetTimespec(ts, sec, nano);
- IF (sec = 5) AND (nano = 7) THEN INC(ok) END;
- ts := wrapclock.KillTimespec(ts);
- (* wraptime: timeval + localtime + field accessors *)
- tv := wraptime.InitTimeval();
- tm := wraptime.InitTM();
- ok := ok + wraptime.gettimeofday(tv, NIL);
- wraptime.SetTimeval(tv, 0, 0);
- IF wraptime.LocalTime(tv, tm) # NIL THEN INC(ok) END;
- IF wraptime.GetYear(tm) >= 1970 THEN INC(ok) END;
- tm := wraptime.KillTM(tm);
- tv := wraptime.KillTimeval(tv);
- (* wrapc: rand range, signbit, isfinite *)
- n := wrapc.getrand(10);
- IF (n >= 0) AND (n < 10) THEN INC(ok) END;
- IF wrapc.signbit(-1.0) = 1 THEN INC(ok) END;
- IF wrapc.isfinite(1.0) = 1 THEN INC(ok) END;
- IF ok >= 7 THEN ExitCode := 42 ELSE ExitCode := ok END
- END WrapProg.
|