code wiki / (root) / nx_drone_doctrine_test.nx

nx_drone_doctrine_test.nx source

↩ module page · 56 lines · 2456 B

1// nx_drone_doctrine_test.nx -- smoke for nx_drone_doctrine. 2 3import "nx_syscalls.nx" 4import "nx_intent.nx" 5import "nx_drone_doctrine.nx" 6 7func main() -> i64 { 8 if NX_DP_N_PURPOSES != 7 { return 1 } 9 if NX_DO_N_OPS != 7 { return 2 } 10 if nx_dp_is_valid(NX_DP_SEARCH_LOST) != 1 { return 3 } 11 if nx_do_is_valid(NX_DO_DEPLOY_RESCUE_BEACON) != 1 { return 4 } 12 if nx_dp_is_valid(7) != 0 { return 5 } 13 14 // Construction REFUSES non-Defensive intent 15 let bad_s: *NxDroneSession = nx_drone_session_new(100, 16 NX_DP_DEFENSIVE_FAMILY, NX_INTENT_CREATIVE, 1, 1000) 17 if (bad_s as i64) != 0 { return 6 } 18 19 // Construction with Defensive intent + defensive purpose -> OK 20 let s: *NxDroneSession = nx_drone_session_new(100, 21 NX_DP_DEFENSIVE_FAMILY, NX_INTENT_DEFENSIVE, 1, 1000) 22 if (s as i64) == 0 { return 7 } 23 if s.purpose != NX_DP_DEFENSIVE_FAMILY { return 8 } 24 25 // OBSERVE allowed for any purpose 26 if nx_drone_invoke_op(s, NX_DO_OBSERVE) != NX_DR_OK { return 9 } 27 28 // ALERT_OPERATOR allowed for DEFENSIVE_FAMILY 29 if nx_drone_invoke_op(s, NX_DO_ALERT_OPERATOR) != NX_DR_OK { return 10 } 30 31 // DEPLOY_RESCUE_BEACON refused for DEFENSIVE_FAMILY (not a search purpose) 32 if nx_drone_invoke_op(s, NX_DO_DEPLOY_RESCUE_BEACON) != NX_DR_REFUSED_PURPOSE_OP_MISMATCH { return 11 } 33 34 // SEARCH_LOST may deploy rescue beacons 35 let s2: *NxDroneSession = nx_drone_session_new(200, 36 NX_DP_SEARCH_LOST, NX_INTENT_DEFENSIVE, 1, 2000) 37 if nx_drone_invoke_op(s2, NX_DO_DEPLOY_RESCUE_BEACON) != NX_DR_OK { return 12 } 38 if nx_drone_invoke_op(s2, NX_DO_FOLLOW_PATH) != NX_DR_OK { return 13 } 39 if nx_drone_invoke_op(s2, NX_DO_HOVER_PATTERN) != NX_DR_OK { return 14 } 40 41 // INSPECTION_INFRASTRUCTURE: FOLLOW_PATH OK, HOVER refused 42 let s3: *NxDroneSession = nx_drone_session_new(300, 43 NX_DP_INSPECTION_INFRASTRUCTURE, NX_INTENT_DEFENSIVE, 1, 3000) 44 if nx_drone_invoke_op(s3, NX_DO_FOLLOW_PATH) != NX_DR_OK { return 15 } 45 if nx_drone_invoke_op(s3, NX_DO_HOVER_PATTERN) != NX_DR_REFUSED_PURPOSE_OP_MISMATCH { return 16 } 46 if nx_drone_invoke_op(s3, NX_DO_DEPLOY_RESCUE_BEACON) != NX_DR_REFUSED_PURPOSE_OP_MISMATCH { return 17 } 47 48 // Bad op rejected 49 if nx_drone_invoke_op(s, 99) != NX_DR_REFUSED_BAD_OP { return 18 } 50 51 // operation_count increments on success 52 let n: nx_int = nx_drone_operation_count(s) 53 if n < 2 { return 19 } // 2 successful ops on s 54 55 return 0 56}