diff --git a/tests/run_tests.ml b/tests/run_tests.ml index cd2b3a6a..c1103122 100644 --- a/tests/run_tests.ml +++ b/tests/run_tests.ml @@ -6,6 +6,7 @@ let suite = "all_tests" >::: [ Test_pHashtbl.suite; Test_PersistentHashtbl.suite; + Test_PiCalculus.suite; Test_splayMap.suite; Test_bij.suite; Test_leftistheap.suite; diff --git a/tests/test_PiCalculus.ml b/tests/test_PiCalculus.ml new file mode 100644 index 00000000..6d20c9b7 --- /dev/null +++ b/tests/test_PiCalculus.ml @@ -0,0 +1,34 @@ + +open OUnit + +open PiCalculus +module Pi = PiCalculus + +let test_message () = + let r = ref 0 in + let p1 = new_ + (fun c -> + send_one c 1 stop ||| + receive_one c (fun x -> r := x; stop)) + in + Pi.run p1; + OUnit.assert_equal ~printer:string_of_int 1 !r; + () + +let test_replicate () = + let a = ref 0 in + let b = ref 0 in + let p1 = new_ + (fun c -> + replicate (escape (fun () -> incr a; send_one c !a stop)) ||| + receive_one c (fun _ -> receive_one c (fun x -> b := x; stop))) + in + run p1; + OUnit.assert_equal ~printer:string_of_int 2 !b; + () + +let suite = + "test_PiCalculus" >::: + [ "test_message" >:: test_message; + "test_replicate" >:: test_replicate; + ]