tests: improve transfer tests
authorMichal Bloch <m.bloch@samsung.com>
Fri, 23 Oct 2015 12:10:47 +0000 (14:10 +0200)
committerStanislaw Wadas <s.wadas@samsung.com>
Wed, 2 Dec 2015 12:50:46 +0000 (13:50 +0100)
Make transfer tests check
transferred bytes output value
returned by function

Change-Id: Id534a4d2015e49dc740054087a89168623997ba9
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
tests/libhusb-test.c
tests/libusb-wrap.c

index 823b8424b032dd8d46a6be9c47720c8f4bff8a55..16105684729142de3c0f72119344cb0998ebdf93 100644 (file)
@@ -555,12 +555,42 @@ static void test_control_transfer(void **state)
        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;
@@ -575,10 +605,41 @@ static void test_bulk_transfer_simple(void **state)
        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);
 }
 
@@ -587,7 +648,7 @@ static void test_interrupt_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;
@@ -602,9 +663,10 @@ static void test_interrupt_transfer_simple(void **state)
        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);
 }
@@ -669,9 +731,11 @@ static struct CMUnitTest tests[] = {
                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),
index 206c211ff5d2671aeba48d0e9446316f616e93ef..6543a4798ccf4fc960ea01b440ebfb7d2c9ddfb4 100644 (file)
@@ -285,7 +285,7 @@ int libusb_control_transfer(libusb_device_handle *dev_handle,
 
 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);
@@ -293,12 +293,14 @@ int libusb_bulk_transfer(libusb_device_handle *dev_handle,
        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);
@@ -306,6 +308,8 @@ int libusb_interrupt_transfer(libusb_device_handle *dev_handle,
        check_expected(length);
        check_expected(timeout);
 
+       *transferred = mock_type(int);
+
        return mock_type(int);
 }