#include <stdio.h>
#include <stdarg.h>
#include <cmocka.h>
+#include <time.h>
#include "libhusb.h"
#include "libhusb_internal.h"
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
*/
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)
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);
}