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
|
(* Notice: This test will not be passed on platforms like Win32!
(due to behind-the-scenes CR/LF <=> LF conversions). *)
val filename = OS.FileSys.tmpName ()
fun testRange (start, length) =
let
val allChars = CharVector.tabulate(length, fn i => chr ((i + start) mod 256))
val outStr = TextIO.openOut filename
val _ = TextIO.output (outStr, allChars)
val _ = TextIO.closeOut outStr
val inStr = TextIO.openIn filename
val readChars = TextIO.inputAll inStr
val _ = TextIO.closeIn inStr
val _ = OS.FileSys.remove filename
fun testCharF (c, cnt) =
let
val readC = CharVector.sub(readChars, cnt)
val _ = if c = readC then
()
else
print ("Error at index: " ^ (Int.toString cnt) ^ ": " ^
(Char.toString c) ^ " <> " ^ (Char.toString readC) ^ "\n")
in
cnt + 1
end
val _ = CharVector.foldl testCharF 0 allChars
in
()
end
val _ = testRange (0, 256)
val _ = print "basic test of writing and reading back all characters done\n"
val _ = List.tabulate(256, fn i => List.tabulate(257, fn i2 => testRange (i, i2)))
val _ = print "test of writing files of all possible characters in strings of lengths 0-256 finished\n"
val _ = List.tabulate(6, fn i => List.tabulate(5000, fn i2 => testRange (i, i2)))
val _ = print "test finished\n"
|