assert_return_code(ret, 0);
}
+static void test_bulk_transfer_length_check(void **state)
+{
+ uint8_t endpoint;
+ unsigned char *data;
+ int length;
+ int transferred;
+ unsigned int timeout;
+ int ret;
+ libhusb_device_handle *handle;
+
+ length = rand();
+ handle = (libhusb_device_handle *)(*state);
+ assert_non_null(handle);
+
+#define EXPECT_VAL(val) expect_value(libusb_bulk_transfer, val, val);
+ EXPECT_VAL(endpoint);
+ EXPECT_VAL(data);
+ EXPECT_VAL(length);
+ EXPECT_VAL(timeout);
+#undef EXPECT_VAL
+ expect_value(libusb_bulk_transfer, dev_handle, handle->lusb_dev_handle);
+ will_return(libusb_bulk_transfer, length);
+ will_return(libusb_bulk_transfer, 0);
+
+ ret = libhusb_bulk_transfer(handle, endpoint, data, length, &transferred, timeout);
+
+ assert_int_equal(transferred, length);
+ assert_return_code(ret, 0);
+}
+
static void test_bulk_transfer_simple(void **state)
{
uint8_t endpoint;
unsigned char *data;
int length;
- int *transfered;
+ int transferred;
unsigned int timeout;
int ret;
libhusb_device_handle *handle;
EXPECT_VAL(timeout);
#undef EXPECT_VAL
expect_value(libusb_bulk_transfer, dev_handle, handle->lusb_dev_handle);
+ will_return(libusb_bulk_transfer, rand());
will_return(libusb_bulk_transfer, 0);
- ret = libhusb_bulk_transfer(handle, endpoint, data, length, transfered, timeout);
+ ret = libhusb_bulk_transfer(handle, endpoint, data, length, &transferred, timeout);
+
+ assert_return_code(ret, 0);
+}
+
+static void test_interrupt_transfer_length_check(void **state)
+{
+ uint8_t endpoint;
+ unsigned char *data;
+ int length;
+ int transferred;
+ unsigned int timeout;
+ int ret;
+ libhusb_device_handle *handle;
+
+ length = rand();
+ handle = (libhusb_device_handle *)(*state);
+ assert_non_null(handle);
+
+#define EXPECT_VAL(val) expect_value(libusb_interrupt_transfer, val, val);
+ EXPECT_VAL(endpoint);
+ EXPECT_VAL(data);
+ EXPECT_VAL(length);
+ EXPECT_VAL(timeout);
+#undef EXPECT_VAL
+ expect_value(libusb_interrupt_transfer, dev_handle, handle->lusb_dev_handle);
+ will_return(libusb_interrupt_transfer, length);
+ will_return(libusb_interrupt_transfer, 0);
+
+ ret = libhusb_interrupt_transfer(handle, endpoint, data, length, &transferred, timeout);
+ assert_int_equal(transferred, length);
assert_return_code(ret, 0);
}
uint8_t endpoint;
unsigned char *data;
int length;
- int *transfered;
+ int transferred;
unsigned int timeout;
int ret;
libhusb_device_handle *handle;
EXPECT_VAL(timeout);
#undef EXPECT_VAL
expect_value(libusb_interrupt_transfer, dev_handle, handle->lusb_dev_handle);
+ will_return(libusb_interrupt_transfer, rand());
will_return(libusb_interrupt_transfer, 0);
- ret = libhusb_interrupt_transfer(handle, endpoint, data, length, transfered, timeout);
+ ret = libhusb_interrupt_transfer(handle, endpoint, data, length, &transferred, timeout);
assert_return_code(ret, 0);
}
HUSB_TEST_DEV_HANDLE(test_claim_interface_invalid),
HUSB_TEST_DEV_HANDLE(test_control_transfer),
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_invalid),
HUSB_TEST_DEV_HANDLE(test_interrupt_transfer_simple),
+ HUSB_TEST_DEV_HANDLE(test_interrupt_transfer_length_check),
HUSB_TEST_DEV_HANDLE(test_clear_halt),
HUSB_TEST_DEV_HANDLE(test_reset_device),
HUSB_TEST_DEV_HANDLE(test_kernel_driver_active),
int libusb_bulk_transfer(libusb_device_handle *dev_handle,
uint8_t endpoint, unsigned char *data, int length,
- int *transfered, unsigned int timeout)
+ int *transferred, unsigned int timeout)
{
check_expected(dev_handle);
check_expected(endpoint);
check_expected(length);
check_expected(timeout);
+ *transferred = mock_type(int);
+
return mock_type(int);
}
int libusb_interrupt_transfer(libusb_device_handle *dev_handle,
uint8_t endpoint, unsigned char *data, int length,
- int *transfered, unsigned int timeout)
+ int *transferred, unsigned int timeout)
{
check_expected(dev_handle);
check_expected(endpoint);
check_expected(length);
check_expected(timeout);
+ *transferred = mock_type(int);
+
return mock_type(int);
}