Import Upstream version 20180207
[hcoop/debian/mlton.git] / regression / tststrcmp.sml
1 (*tststrcmp.sml 27/06/1997 17:21. tho.*)
2 (*test <, etc. on strings*)
3
4 fun pr s = print s;
5 fun prl s = pr (s ^ "\n");
6 local
7 fun string' 0 = "0"
8 | string' 1 = "1"
9 | string' 2 = "2"
10 | string' 3 = "3"
11 | string' 4 = "4"
12 | string' 5 = "5"
13 | string' 6 = "6"
14 | string' 7 = "7"
15 | string' 8 = "8"
16 | string' 9 = "9"
17 | string' n = string' (n div 10) ^ string' (n mod 10)
18 in
19 fun int_to_string n = if n < 0 then "~" ^ string' (~n) else string' n
20 end
21
22 local val r = ref 0
23 in
24 fun etst s e1 e2 =
25 prl (int_to_string (r := !r + 1; !r)
26 ^ (if e1 = e2 then " ok" else " * n o t o k ! *"))
27 end
28
29 val () = etst "1" ("" < "abc") true; (*den ene tom*)
30 val () = etst "2" ("" > "abc") false;
31 val () = etst "2" ("" >= "abc") false;
32 val () = etst "2" ("" <= "abc") true;
33 val () = etst "2" ("" = "abc") false;
34 val () = etst "2" ("" <> "abc") true;
35 val () = etst "3" ("abc" < "") false; (*den anden tom*)
36 val () = etst "4" ("abc" > "") true;
37 val () = etst "4" ("abc" >= "") true;
38 val () = etst "4" ("abc" <= "") false;
39 val () = etst "4" ("abc" = "") false;
40 val () = etst "4" ("abc" <> "") true;
41 val () = etst "5" ("abc" < "abc") false; (*ens*)
42 val () = etst "6" ("abc" > "abc") false;
43 val () = etst "6" ("abc" >= "abc") true;
44 val () = etst "6" ("abc" <= "abc") true;
45 val () = etst "6" ("abc" = "abc") true;
46 val () = etst "6" ("abc" <> "abc") false;
47 val () = etst "5" ("" < "") false; (*begge tomme*)
48 val () = etst "6" ("" > "") false;
49 val () = etst "6" ("" >= "") true;
50 val () = etst "6" ("" <= "") true;
51 val () = etst "6" ("" = "") true;
52 val () = etst "6" ("" <> "") false;
53 val () = etst "7" ("abc" < "abcd") true; (*den ene lngere*)
54 val () = etst "8" ("abc" > "abcd") false;
55 val () = etst "8" ("abc" >= "abcd") false;
56 val () = etst "8" ("abc" <= "abcd") true;
57 val () = etst "8" ("abc" = "abcd") false;
58 val () = etst "8" ("abc" <> "abcd") true;
59 val () = etst "-" ("abcd" < "abc") false; (*den anden lngere*)
60 val () = etst "-" ("abcd" > "abc") true;
61 val () = etst "-" ("abcd" >= "abc") true;
62 val () = etst "-" ("abcd" <= "abc") false;
63 val () = etst "-" ("abcd" = "abc") false;
64 val () = etst "-" ("abcd" <> "abc") true;
65 val () = etst "-" ("abc" < "abd") true; (*lige lange, sidste strst*)
66 val () = etst "-" ("abc" > "abd") false;
67 val () = etst "-" ("abc" >= "abd") false;
68 val () = etst "-" ("abc" <= "abd") true;
69 val () = etst "-" ("abc" = "abd") false;
70 val () = etst "-" ("abc" <> "abd") true;
71 val () = etst "-" ("abd" < "abc") false; (*lige lange, frste strst*)
72 val () = etst "-" ("abd" > "abc") true;
73 val () = etst "-" ("abd" >= "abc") true;
74 val () = etst "-" ("abd" <= "abc") false;
75 val () = etst "-" ("abd" = "abc") false;
76 val () = etst "-" ("abd" <> "abc") true;
77
78
79 (*& nu hele molevitten igen bare med meget lange strenge.
80 Det er godt nok strenge...*)
81
82 fun repeat 0 s = ""
83 | repeat n s = s ^ repeat (n-1) s
84 val long = repeat 50 "Der laa den Ridder i Graesset og drev.\n\
85 \Hejsa, nu sadler vi af.\n\
86 \Der laa hans Harnisk, hans Skjold og Vaerge,\n\
87 \Hans Tanker de floej over alle Bjerge.\n\
88 \De floej paa Skyer gennem Luften den blaa ---\n\
89 \Den Rejse man bruger ej Vaaben paa.\n\
90 \\n\
91 \Den Ridder han laa, hvor han steded sig foerst\n\
92 \Han kendte ej Sult, han kendte ej Toerst\n\
93 \Og Solen kom og Stedet og gik;\n\
94 \Han lytted som efter en sagte Musik.\n\
95 \\n\
96 \\n"
97
98 val () = etst "1" (long ^ "" < long ^ "abc") true; (*den ene tom*)
99 val () = etst "2" (long ^ "" > long ^ "abc") false;
100 val () = etst "2" (long ^ "" >= long ^ "abc") false;
101 val () = etst "2" (long ^ "" <= long ^ "abc") true;
102 val () = etst "2" (long ^ "" = long ^ "abc") false;
103 val () = etst "2" (long ^ "" <> long ^ "abc") true;
104 val () = etst "3" (long ^ "abc" < long ^ "") false; (*den anden tom*)
105 val () = etst "4" (long ^ "abc" > long ^ "") true;
106 val () = etst "4" (long ^ "abc" >= long ^ "") true;
107 val () = etst "4" (long ^ "abc" <= long ^ "") false;
108 val () = etst "4" (long ^ "abc" = long ^ "") false;
109 val () = etst "4" (long ^ "abc" <> long ^ "") true;
110 val () = etst "5" (long ^ "abc" < long ^ "abc") false; (*ens*)
111 val () = etst "6" (long ^ "abc" > long ^ "abc") false;
112 val () = etst "6" (long ^ "abc" >= long ^ "abc") true;
113 val () = etst "6" (long ^ "abc" <= long ^ "abc") true;
114 val () = etst "6" (long ^ "abc" = long ^ "abc") true;
115 val () = etst "6" (long ^ "abc" <> long ^ "abc") false;
116 val () = etst "5" (long ^ "" < long ^ "") false; (*begge tomme*)
117 val () = etst "6" (long ^ "" > long ^ "") false;
118 val () = etst "6" (long ^ "" >= long ^ "") true;
119 val () = etst "6" (long ^ "" <= long ^ "") true;
120 val () = etst "6" (long ^ "" = long ^ "") true;
121 val () = etst "6" (long ^ "" <> long ^ "") false;
122 val () = etst "7" (long ^ "abc" < long ^ "abcd") true; (*den ene lngere*)
123 val () = etst "8" (long ^ "abc" > long ^ "abcd") false;
124 val () = etst "8" (long ^ "abc" >= long ^ "abcd") false;
125 val () = etst "8" (long ^ "abc" <= long ^ "abcd") true;
126 val () = etst "8" (long ^ "abc" = long ^ "abcd") false;
127 val () = etst "8" (long ^ "abc" <> long ^ "abcd") true;
128 val () = etst "-" (long ^ "abcd" < long ^ "abc") false; (*den anden lngere*)
129 val () = etst "-" (long ^ "abcd" > long ^ "abc") true;
130 val () = etst "-" (long ^ "abcd" >= long ^ "abc") true;
131 val () = etst "-" (long ^ "abcd" <= long ^ "abc") false;
132 val () = etst "-" (long ^ "abcd" = long ^ "abc") false;
133 val () = etst "-" (long ^ "abcd" <> long ^ "abc") true;
134 val () = etst "-" (long ^ "abc" < long ^ "abd") true; (*lige lange, sidste strst*)
135 val () = etst "-" (long ^ "abc" > long ^ "abd") false;
136 val () = etst "-" (long ^ "abc" >= long ^ "abd") false;
137 val () = etst "-" (long ^ "abc" <= long ^ "abd") true;
138 val () = etst "-" (long ^ "abc" = long ^ "abd") false;
139 val () = etst "-" (long ^ "abc" <> long ^ "abd") true;
140 val () = etst "-" (long ^ "abd" < long ^ "abc") false; (*lige lange, frste strst*)
141 val () = etst "-" (long ^ "abd" > long ^ "abc") true;
142 val () = etst "-" (long ^ "abd" >= long ^ "abc") true;
143 val () = etst "-" (long ^ "abd" <= long ^ "abc") false;
144 val () = etst "-" (long ^ "abd" = long ^ "abc") false;
145 val () = etst "-" (long ^ "abd" <> long ^ "abc") true;
146
147 val _ = prl long;