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