OSDN Git Service

implement socket
[happyabc/happyabc.git] / debugger / socketTest.ml
1 open Base
2 open OUnit
3
4 (* stub server *)
5 let server port f =
6   if Unix.fork () = 0 then
7     let sa =
8       Unix.ADDR_INET (Unix.inet_addr_any, port) in
9       Unix.establish_server f sa
10
11 let last_msg = ref ""
12
13 let send_test port f =
14   server port begin fun ic _ ->
15     try f () with _ -> ();
16     last_msg := input_line ic;
17     Unix.shutdown_connection ic
18   end
19
20 let recv_test port f =
21   server port begin fun ic oc ->
22     output_string oc "hi!";
23     try f () with _ -> ();
24     Unix.shutdown_connection ic
25   end
26
27 let _ = begin "socket.ml" >::: [
28   "send" >:: begin fun () ->
29     send_test 9000 begin fun () ->
30       let socket =
31         Socket.connect "localhost" 9000 in
32         Socket.send socket "hi";
33         assert_equal "hi" !last_msg;
34         Socket.close socket
35     end;
36   end;
37   "recv" >:: begin fun () ->
38     recv_test 9001 begin fun () ->
39       let socket =
40         Socket.connect "localhost" 9001 in
41         assert_equal "hi!" @@ Socket.recv socket 3;
42         Socket.close socket
43     end;
44   end;
45 ] end +> run_test_tt_main