diff --git a/tests/unix/dune b/tests/unix/dune new file mode 100644 index 0000000..8679c90 --- /dev/null +++ b/tests/unix/dune @@ -0,0 +1,4 @@ + +(tests + (names t1) + (libraries nanoev nanoev.unix threads)) diff --git a/tests/unix/t1.expected b/tests/unix/t1.expected new file mode 100644 index 0000000..a36183e --- /dev/null +++ b/tests/unix/t1.expected @@ -0,0 +1,3 @@ +writing +can read +done writing diff --git a/tests/unix/t1.ml b/tests/unix/t1.ml new file mode 100644 index 0000000..79e76ff --- /dev/null +++ b/tests/unix/t1.ml @@ -0,0 +1,25 @@ +module E = Nanoev_unix + +let mkpipe () : Unix.file_descr * Unix.file_descr = + let f1, f2 = Unix.pipe () in + Unix.set_nonblock f1; + Unix.set_nonblock f2; + f1, f2 + +let loop (e : E.t) = + while true do + E.step e + done + +let () = + let ev = E.create () in + ignore (Thread.create loop ev : Thread.t); + let rd, wr = mkpipe () in + E.on_readable ev rd () () (fun () () -> print_endline "can read"); + Thread.delay 0.05; + print_endline "writing"; + ignore + (Unix.write wr (Bytes.unsafe_of_string "hello") 0 (String.length "hello") + : int); + Thread.delay 0.1; + print_endline "done writing"