Import Debian changes 20180207-1
[hcoop/debian/mlton.git] / regression / conv.sml
CommitLineData
7f918cf1
CE
1val big: IntInf.int = 0x80000000
2
3fun try (barg: IntInf.int): unit =
4 let val small = SOME (IntInf.toInt barg)
5 handle Overflow => NONE
6 val bstr = IntInf.toString barg
7 fun fail msg = print ("Fail " ^ msg ^ ": " ^ bstr ^ "\n")
8 val isSmall = ~ big <= barg andalso barg < big
9 in case small of
10 NONE => if isSmall
11 then fail "1"
12 else ()
13 | SOME sarg => if isSmall
14 then let val sstr = Int.toString sarg
15 in if bstr = sstr
16 andalso barg = IntInf.fromInt sarg
17 then ()
18 else fail "2"
19 end
20 else fail "3"
21 end
22
23fun spin (low: IntInf.int, limit: IntInf.int): unit =
24 let fun loop (arg: IntInf.int): unit =
25 if arg = limit
26 then ()
27 else (
28 try arg;
29 try (~ arg);
30 loop (arg + 1)
31 )
32 in loop low
33 end
34
35val _ = spin (0, 1000)
36val _ = spin (big - 1000, big + 1000)
37
38val _ = print "All ok\n"