1 (* Auxiliary functions for test cases
*)
5 fun check b
= if b
then "OK" else "WRONG";
6 fun check
' f
= (if f () then "OK" else "WRONG") handle _
=> "EXN";
8 fun range (from
, to
) p
=
11 (from
> to
) orelse (p from
) andalso (range (from
+1, to
) p
)
14 fun checkrange bounds
= check
o range bounds
;
16 fun tst0 s s
' = print (s ^
" \t" ^ s
' ^
"\n");
17 fun tst s b
= tst0
s (check b
);
18 fun tst
' s f
= tst0
s (check
' f
);
20 fun tstrange s bounds
= (tst s
) o range bounds
23 (* General
-- incomplete
1996-04-19, 1996-09-30, 1997-03-12 *)
26 val _
= print
"\nFile general.sml: Testing structure General...\n"
28 exception NoExceptionRaised
30 fun getExn (f
: unit
-> 'a
) =
31 (f (); NoExceptionRaised
) handle e
=> e
33 fun prExn(exnStr
, exn
) =
34 (print
"Should be `"; print exnStr
; print
"':\n ";
35 print (exnName exn
); print
"\n ";
36 print (exnMessage exn
); print
"\n");
41 val _
= List.map prExn
43 ("Bind", getExn(fn _
=> let val true = false in () end)),
44 ("Match", getExn(fn _
=> (fn true => ()) false)),
45 ("Subscript", getExn(fn _
=> Vector.sub(vector
[], ~
1))),
46 ("Overflow", getExn(fn _
=> Array
.array(Array
.maxLen
+1, ()))),
47 (* ("Overflow", getExn(fn _
=> Math
.exp
1E99
)),
48 ("Domain", getExn(fn _
=> Math
.ln ~
1.0)),
49 *) ("Div", getExn(fn _
=> 1 div 0)),
50 ("Chr", getExn(fn _
=> Char.chr
9999999)),
51 ("Fail", Fail
"demo"),
52 ("Option", getExn(fn _
=> valOf NONE
)),
53 ("Empty", getExn(fn _
=> List.hd
[]))
54 (* ("SysErr", getExn (fn _
=> FileSys
.modTime
"exists.not")), *)
55 (* ("Io", getExn (fn _
=> TextIO.openOut
"."))*)