assert_ptr_equal(handle.device, device);
}
+static void test_get_devices(void **state)
+{
+ int n = 7, i, ret;
+ libhusb_context *ctx;
+ libhusb_device **devs;
+
+ /* TODO init this with some (?) values */
+ libusb_device *lusb_devs[7];
+
+ ctx = (libhusb_context *)(*state);
+ assert_non_null(ctx);
+
+ will_return(libusb_get_device_list, n);
+ for (i = 0; i < n; ++i)
+ will_return(libusb_get_device_list, lusb_devs[i]);
+
+ ret = libhusb_get_devices(ctx, &devs);
+
+ assert_int_equal(ret, n);
+ for (i = 0; i < n; ++i)
+ assert_ptr_equal(devs[i]->lusb_dev, lusb_devs[i]);
+
+ libhusb_free_devices(devs, 0);
+}
+
/* Custom macro for defining test with given name and fixed teardown function */
#define HUSB_TEST_CTX(func) \
cmocka_unit_test_setup_teardown(func, setup_libhusb_context, teardown_libhusb_context)
HUSB_TEST_CTX(test_init),
HUSB_TEST_CTX(test_open),
HUSB_TEST_NOSETUP(test_get_device),
+ HUSB_TEST_CTX(test_get_devices),
};
ssize_t libusb_get_device_list(libusb_context *ctx,
libusb_device ***list)
{
- return 0;
+ int n, i;
+ libusb_device **rlist;
+
+ n = mock_type(int);
+ rlist = calloc(sizeof(libusb_device *), n);
+ for (i = 0; i < n; ++i) {
+ rlist[i] = mock_ptr_type(libusb_device *);
+ }
+
+ *list = rlist;
+ return n;
}
void libusb_free_device_list(libusb_device **list,
int unref_devices)
{
+ free(list);
}
libusb_device * libusb_ref_device(libusb_device *dev)