summaryrefslogtreecommitdiff
path: root/otherlibs/threads/Tests/testio.ml
diff options
context:
space:
mode:
Diffstat (limited to 'otherlibs/threads/Tests/testio.ml')
-rw-r--r--otherlibs/threads/Tests/testio.ml119
1 files changed, 0 insertions, 119 deletions
diff --git a/otherlibs/threads/Tests/testio.ml b/otherlibs/threads/Tests/testio.ml
deleted file mode 100644
index 3ed08a88f4..0000000000
--- a/otherlibs/threads/Tests/testio.ml
+++ /dev/null
@@ -1,119 +0,0 @@
-(* Test a file copy function *)
-
-let test msg producer consumer src dst =
- print_string msg; print_newline();
- let ic = open_in_bin src in
- let oc = open_out_bin dst in
- let (in_fd, out_fd) = Unix.pipe() in
- let ipipe = Unix.in_channel_of_descr in_fd in
- let opipe = Unix.out_channel_of_descr out_fd in
- let prod = Thread.create producer (ic, opipe) in
- let cons = Thread.create consumer (ipipe, oc) in
- Thread.join prod;
- Thread.join cons;
- if Unix.system ("cmp " ^ src ^ " " ^ dst) = Unix.WEXITED 0
- then print_string "passed"
- else print_string "FAILED";
- print_newline()
-
-(* File copy with constant-sized chunks *)
-
-let copy_file sz (ic, oc) =
- let buffer = String.create sz in
- let rec copy () =
- let n = input ic buffer 0 sz in
- if n = 0 then () else begin
- output oc buffer 0 n;
- copy ()
- end in
- copy();
- close_in ic;
- close_out oc
-
-(* File copy with random-sized chunks *)
-
-let copy_random sz (ic, oc) =
- let buffer = String.create sz in
- let rec copy () =
- let s = 1 + Random.int sz in
- let n = input ic buffer 0 s in
- if n = 0 then () else begin
- output oc buffer 0 n;
- copy ()
- end in
- copy();
- close_in ic;
- close_out oc
-
-(* File copy line per line *)
-
-let copy_line (ic, oc) =
- try
- while true do
- output_string oc (input_line ic); output_char oc '\n'
- done
- with End_of_file ->
- close_in ic;
- close_out oc
-
-(* Create long lines of text *)
-
-let make_lines ofile =
- let oc = open_out ofile in
- for i = 1 to 256 do
- output_string oc (String.make (i*16) '.'); output_char oc '\n'
- done;
- close_out oc
-
-(* Test input_line on truncated lines *)
-
-let test_trunc_line ofile =
- print_string "truncated line"; print_newline();
- let oc = open_out ofile in
- output_string oc "A line without newline!";
- close_out oc;
- try
- let ic = open_in ofile in
- let s = input_line ic in
- close_in ic;
- if s = "A line without newline!"
- then print_string "passed"
- else print_string "FAILED";
- print_newline()
- with End_of_file ->
- print_string "FAILED"; print_newline()
-
-(* The test *)
-
-let main() =
- let ifile = Sys.argv.(1) in
- let ofile = "/tmp/testio" in
- test "256-byte chunks, 256-byte chunks"
- (copy_file 256) (copy_file 256) ifile ofile;
- test "4096-byte chunks, 4096-byte chunks"
- (copy_file 4096) (copy_file 4096) ifile ofile;
- test "65536-byte chunks, 65536-byte chunks"
- (copy_file 65536) (copy_file 65536) ifile ofile;
- test "256-byte chunks, 4096-byte chunks"
- (copy_file 256) (copy_file 4096) ifile ofile;
- test "4096-byte chunks, 256-byte chunks"
- (copy_file 4096) (copy_file 256) ifile ofile;
- test "4096-byte chunks, 65536-byte chunks"
- (copy_file 4096) (copy_file 65536) ifile ofile;
- test "263-byte chunks, 4011-byte chunks"
- (copy_file 263) (copy_file 4011) ifile ofile;
- test "613-byte chunks, 1027-byte chunks"
- (copy_file 613) (copy_file 1027) ifile ofile;
- test "0...8192 byte chunks"
- (copy_random 8192) (copy_random 8192) ifile ofile;
- test "line per line, short lines"
- copy_line copy_line "/etc/hosts" ofile;
- make_lines "/tmp/lines";
- test "line per line, short and long lines"
- copy_line copy_line "/tmp/lines" ofile;
- test_trunc_line ofile;
- Sys.remove "/tmp/lines";
- Sys.remove ofile;
- exit 0
-
-let _ = Unix.handle_unix_error main (); exit 0