libhusb_device_handle *handle;
int interface_nmb, ret;
- interface_nmb = 1;
+ interface_nmb = rand() % MAX_NMB_OF_CONFIGS;
handle = (libhusb_device_handle *)(*state);
assert_non_null(handle);
+ handle->driver_detached[interface_nmb] = 0;
expect_value(libusb_release_interface, dev, handle->lusb_dev_handle);
expect_value(libusb_release_interface, interface_number, interface_nmb);
assert_return_code(ret, 0);
}
+static void test_release_interface_attachment(void **state)
+{
+ libhusb_device_handle *handle;
+ int interface_nmb, ret;
+
+ interface_nmb = rand() % MAX_NMB_OF_CONFIGS;
+ handle = (libhusb_device_handle *)(*state);
+ assert_non_null(handle);
+ handle->driver_detached[interface_nmb] = 1;
+
+ expect_value(libusb_release_interface, dev, handle->lusb_dev_handle);
+ expect_value(libusb_release_interface, interface_number, interface_nmb);
+ will_return(libusb_release_interface, 0);
+
+ expect_value(libusb_attach_kernel_driver, dev, handle->lusb_dev_handle);
+ expect_value(libusb_attach_kernel_driver, interface_number, interface_nmb);
+ will_return(libusb_attach_kernel_driver, 0);
+
+ ret = libhusb_release_interface(handle, interface_nmb);
+
+ assert_return_code(ret, 0);
+ assert_int_equal(0, handle->driver_detached[interface_nmb]);
+}
+
static void test_release_interface_invalid(void **state)
{
libhusb_device_handle *handle;
HUSB_TEST_DEV_HANDLE(test_bulk_transfer_simple),
HUSB_TEST_DEV_HANDLE(test_bulk_transfer_length_check),
HUSB_TEST_DEV_HANDLE(test_release_interface_simple),
+ HUSB_TEST_DEV_HANDLE(test_release_interface_attachment),
HUSB_TEST_DEV_HANDLE(test_release_interface_invalid),
HUSB_TEST_DEV_HANDLE(test_interrupt_transfer_simple),
HUSB_TEST_DEV_HANDLE(test_interrupt_transfer_length_check),