assert_int_equal(handle->driver_detached[interface_nmb], 1);
}
+static void test_control_transfer(void **state)
+{
+ uint8_t request_type, bRequest;
+ uint16_t wValue, wIndex, wLength;
+ unsigned char *data;
+ unsigned int timeout;
+ int ret;
+ libhusb_device_handle *handle;
+
+ handle = (libhusb_device_handle *)(*state);
+ assert_non_null(handle);
+
+#define EXPECT_VAL(val) expect_value(libusb_control_transfer, val, val);
+ EXPECT_VAL(request_type);
+ EXPECT_VAL(bRequest);
+ EXPECT_VAL(wValue);
+ EXPECT_VAL(wIndex);
+ EXPECT_VAL(data);
+ EXPECT_VAL(wLength);
+ EXPECT_VAL(timeout);
+#undef EXPECT_VAL
+ expect_value(libusb_control_transfer, dev_handle, handle->lusb_dev_handle);
+ will_return(libusb_control_transfer, 0);
+
+ ret = libhusb_control_transfer(handle, request_type, bRequest, wValue,
+ wIndex, data, wLength, timeout);
+
+ assert_return_code(ret, 0);
+}
+
/* Custom macro for defining test with given name and fixed teardown function */
#define HUSB_TEST(func, setup, teardown) \
cmocka_unit_test_setup_teardown(func, setup, teardown)
HUSB_TEST_CTX(test_open_device_vid_pid),
HUSB_TEST_DEV_HANDLE(test_set_config),
HUSB_TEST_DEV_HANDLE(test_claim_interface_simple),
+ HUSB_TEST_DEV_HANDLE(test_control_transfer),
};
{
return 0;
}
+
+int libusb_control_transfer(libusb_device_handle *dev_handle,
+ uint8_t request_type, uint8_t bRequest, uint16_t wValue, uint16_t wIndex,
+ unsigned char *data, uint16_t wLength, unsigned int timeout)
+{
+ check_expected(dev_handle);
+ check_expected(request_type);
+ check_expected(bRequest);
+ check_expected(wValue);
+ check_expected(wIndex);
+ check_expected(data);
+ check_expected(wLength);
+ check_expected(timeout);
+
+ return mock_type(int);
+}