open Space_wire let test_shared_mem_heartbeat () = let buf = Bytes.make Shared_mem.page_size '\x00' in Shared_mem.set_heartbeat buf 42L; Alcotest.(check int64) "heartbeat" 42L (Shared_mem.heartbeat buf) let test_shared_mem_mission_time () = let buf = Bytes.make Shared_mem.page_size '\x00' in let t = Shared_mem.{ seconds = 1000L; nanos = 500_000_000 } in Shared_mem.write_mission_time buf t; let t' = Shared_mem.read_mission_time buf in Alcotest.(check int64) "seconds" t.seconds t'.seconds; Alcotest.(check int) "nanos" t.nanos t'.nanos; (* time_version should be even after write *) let v = Shared_mem.time_version buf in Alcotest.(check bool) "version even" true (v land 1 = 0); Alcotest.(check bool) "version > 0" true (v > 0) let test_shared_mem_health_string () = let buf = Bytes.make Shared_mem.page_size '\x00' in Shared_mem.set_health_string buf "nominal"; Alcotest.(check string) "health" "nominal" (Shared_mem.health_string buf) let test_shared_mem_command_word () = let buf = Bytes.make Shared_mem.page_size '\x00' in Shared_mem.set_host_cmd buf Shared_mem.cmd_shutdown; let cmd = Shared_mem.host_cmd buf in Alcotest.(check bool) "shutdown set" true (cmd land Shared_mem.cmd_shutdown <> 0); Alcotest.(check bool) "param_reload clear" true (cmd land Shared_mem.cmd_param_reload = 0) let suite = ( "shared_mem", [ Alcotest.test_case "heartbeat" `Quick test_shared_mem_heartbeat; Alcotest.test_case "mission time" `Quick test_shared_mem_mission_time; Alcotest.test_case "health string" `Quick test_shared_mem_health_string; Alcotest.test_case "command word" `Quick test_shared_mem_command_word; ] )