tests: Add tests of api functions related to devices
authorPawel Szewczyk <p.szewczyk@samsung.com>
Tue, 29 Sep 2015 14:14:28 +0000 (16:14 +0200)
committerStanislaw Wadas <s.wadas@samsung.com>
Wed, 2 Dec 2015 12:50:46 +0000 (13:50 +0100)
Change-Id: Ia958746d202ea89844015f8bb468bde3d6bd09ff
Signed-off-by: Pawel Szewczyk <p.szewczyk@samsung.com>
tests/libhusb-test.c
tests/libusb-wrap.c

index a1539175a4eed38988ed6afc242eed55ead8ef5d..1fc81642b4df993fb8d0bc57019a315a3e450b19 100644 (file)
@@ -21,6 +21,7 @@
 #include <stdio.h>
 #include <stdarg.h>
 #include <cmocka.h>
+#include <time.h>
 
 #include "libhusb.h"
 #include "libhusb_internal.h"
@@ -62,6 +63,28 @@ static int teardown_libhusb_context(void **state)
        return 0;
 }
 
+static int setup_libhusb_device(void **state)
+{
+       libhusb_device *dev;
+
+       dev = malloc(sizeof(libhusb_device));
+       /* TODO fill this with something? */
+
+       *state = dev;
+
+       return 0;
+}
+
+/**
+ * @brief Just free the memory
+ */
+static int teardown_free(void **state)
+{
+       free(*state);
+
+       return 0;
+}
+
 /**
  * @brief Test if initialization works fine
  */
@@ -129,9 +152,82 @@ static void test_get_devices(void **state)
        libhusb_free_devices(devs, 0);
 }
 
+static void test_get_max_packet_size(void **state)
+{
+       libhusb_device *device;
+       int ep = 7, ret, expected;
+
+       device = (libhusb_device *)(*state);
+       assert_non_null(device);
+       expected = rand();
+
+       expect_value(libusb_get_max_iso_packet_size, dev, device->lusb_dev);
+       expect_value(libusb_get_max_iso_packet_size, endpoint, ep);
+       will_return(libusb_get_max_iso_packet_size, expected);
+
+       ret = libhusb_get_max_packet_size(device, ep);
+
+       assert_int_equal(ret, expected);
+}
+
+static void test_get_bus_number(void **state)
+{
+       libhusb_device *device;
+       uint8_t expected, ret;
+
+       expected = rand();
+       device = (libhusb_device *)(*state);
+       assert_non_null(device);
+
+       expect_value(libusb_get_bus_number, dev, device->lusb_dev);
+       will_return(libusb_get_bus_number, expected);
+
+       ret = libhusb_get_bus_number(device);
+
+       assert_int_equal(ret, expected);
+}
+
+static void test_get_address(void **state)
+{
+       libhusb_device *device;
+       uint8_t expected, ret;
+
+       expected = rand();
+       device = (libhusb_device *)(*state);
+       assert_non_null(device);
+
+       expect_value(libusb_get_device_address, dev, device->lusb_dev);
+       will_return(libusb_get_device_address, expected);
+
+       ret = libhusb_get_address(device);
+
+       assert_int_equal(ret, expected);
+}
+
+static void test_get_device_descriptor(void **state)
+{
+       libhusb_device *device;
+       struct libhusb_device_descriptor descriptor;
+       int ret;
+
+       device = (libhusb_device *)(*state);
+
+       expect_value(libusb_get_device_descriptor, dev, device->lusb_dev);
+       expect_value(libusb_get_device_descriptor, desc, &descriptor);
+       will_return(libusb_get_device_descriptor, 0);
+
+       ret = libhusb_get_device_descriptor(device, &descriptor);
+
+       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)
 #define HUSB_TEST_CTX(func) \
        cmocka_unit_test_setup_teardown(func, setup_libhusb_context, teardown_libhusb_context)
+#define HUSB_TEST_DEVICE(func) \
+       cmocka_unit_test_setup_teardown(func, setup_libhusb_device, teardown_free)
 #define HUSB_TEST_NOSETUP(func) \
        cmocka_unit_test(func)
 
@@ -145,10 +241,15 @@ static struct CMUnitTest tests[] = {
                HUSB_TEST_CTX(test_open),
                HUSB_TEST_NOSETUP(test_get_device),
                HUSB_TEST_CTX(test_get_devices),
+               HUSB_TEST_DEVICE(test_get_max_packet_size),
+               HUSB_TEST_DEVICE(test_get_bus_number),
+               HUSB_TEST_DEVICE(test_get_address),
+               HUSB_TEST_DEVICE(test_get_device_descriptor),
 };
 
 
 int main(int argc, char **argv)
 {
+       srand(time(NULL));
        return cmocka_run_group_tests(tests, NULL, NULL);
 }
index 4e9286439860a2b03b7ab092911a7ea0af158289..0ba22139663a7f6c010e2ede1ef680c51ebf114c 100644 (file)
@@ -109,7 +109,9 @@ int libusb_get_configuration(libusb_device_handle *dev,
 int libusb_get_device_descriptor(libusb_device *dev,
        struct libusb_device_descriptor *desc)
 {
-       return 0;
+       check_expected(dev);
+       check_expected(desc);
+       return mock_type(int);
 }
 
 int libusb_get_active_config_descriptor(libusb_device *dev,
@@ -137,12 +139,14 @@ void libusb_free_config_descriptor(
 
 uint8_t libusb_get_bus_number(libusb_device *dev)
 {
-       return 0;
+       check_expected(dev);
+       return mock_type(uint8_t);
 }
 
 uint8_t libusb_get_device_address(libusb_device *dev)
 {
-       return 0;
+       check_expected(dev);
+       return mock_type(uint8_t);
 }
 
 int libusb_get_device_speed(libusb_device *dev)
@@ -159,7 +163,9 @@ int libusb_get_max_packet_size(libusb_device *dev,
 int libusb_get_max_iso_packet_size(libusb_device *dev,
        unsigned char endpoint)
 {
-       return 0;
+       check_expected(dev);
+       check_expected(endpoint);
+       return mock_type(int);
 }
 
 int libusb_open(libusb_device *dev, libusb_device_handle **handle)