-START_TEST (test_handle_completed)
-{
- DiagnosticRequest request = {
- arbitration_id: OBD2_FUNCTIONAL_BROADCAST_ID,
- mode: OBD2_MODE_POWERTRAIN_DIAGNOSTIC_REQUEST
- };
- DiagnosticRequestHandle handle = diagnostic_request(&SHIMS, &request,
- response_received_handler);
-
- fail_if(handle.completed);
-
- const uint8_t can_data[] = {0x2, request.mode + 0x40, 0x23};
- DiagnosticResponse response = diagnostic_receive_can_frame(&SHIMS, &handle,
- request.arbitration_id + 0x8, can_data, sizeof(can_data));
- fail_unless(response.success);
- fail_unless(response.completed);
- fail_unless(handle.completed);
-
- response = diagnostic_receive_can_frame(&SHIMS, &handle,
- request.arbitration_id + 0x8, can_data, sizeof(can_data));
- fail_if(response.success);
- fail_if(response.completed);
- fail_unless(handle.completed);
-
- ck_assert(last_response_received.success);
- ck_assert_int_eq(last_response_received.arbitration_id,
- request.arbitration_id + 0x8);
- ck_assert_int_eq(last_response_received.mode, request.mode);
- ck_assert_int_eq(last_response_received.pid, 0);
- ck_assert_int_eq(last_response_received.payload_length, 1);
- ck_assert_int_eq(last_response_received.payload[0], can_data[2]);
-}
-END_TEST
-