+START_TEST (test_send_diag_request_with_payload)
+{
+ DiagnosticRequest request = {
+ arbitration_id: 0x7df,
+ mode: OBD2_MODE_POWERTRAIN_DIAGNOSTIC_REQUEST,
+ payload: {0x12, 0x34},
+ payload_length: 2
+ };
+ DiagnosticRequestHandle handle = diagnostic_request(&SHIMS, &request,
+ response_received_handler);
+
+ fail_if(handle.completed);
+ // TODO it'd be better to check the ISO-TP message instead of the CAN frame,
+ // but we don't have a good way to do that
+ ck_assert_int_eq(last_can_frame_sent_arb_id, request.arbitration_id);
+ ck_assert_int_eq(last_can_payload_sent[1], request.mode);
+ ck_assert_int_eq(last_can_payload_size, 4);
+ ck_assert_int_eq(last_can_payload_sent[2], request.payload[0]);
+ ck_assert_int_eq(last_can_payload_sent[3], request.payload[1]);
+}
+END_TEST
+