tests: Add mock implementation of libusb
authorPawel Szewczyk <p.szewczyk@samsung.com>
Mon, 28 Sep 2015 11:39:42 +0000 (13:39 +0200)
committerStanislaw Wadas <s.wadas@samsung.com>
Wed, 2 Dec 2015 12:50:46 +0000 (13:50 +0100)
Instead of using real libusb, we prepare simple mock version of the
library. It allows to control behavior of functions using cmocka,
creating environment for testing host capi.

Functions added here are mostly to be implemented with corresponding
test cases.

Change-Id: If9825c5dc2b24963cccc17ba023891b459fcf969
Signed-off-by: Pawel Szewczyk <p.szewczyk@samsung.com>
tests/libusb-wrap.c [new file with mode: 0644]

diff --git a/tests/libusb-wrap.c b/tests/libusb-wrap.c
new file mode 100644 (file)
index 0000000..68af932
--- /dev/null
@@ -0,0 +1,220 @@
+/*
+ * libhusb-test.c
+ * Copyright (c) 2015 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <libusb-1.0/libusb.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <setjmp.h>
+#include <stdio.h>
+#include <stdarg.h>
+#include <cmocka.h>
+#include <string.h>
+#include <stddef.h>
+#include <dlfcn.h>
+
+int libusb_init(libusb_context **ctx)
+{
+       check_expected(ctx);
+       *ctx = mock_ptr_type(libusb_context *);
+
+       return mock_type(int);
+}
+
+libusb_device_handle * libusb_open_device_with_vid_pid(libusb_context *ctx, uint16_t vendor_id, uint16_t product_id)
+{
+       libusb_device_handle *handle;
+
+       check_expected(ctx);
+       check_expected(vendor_id);
+       check_expected(product_id);
+
+       return mock_ptr_type(libusb_device_handle *);
+}
+
+void libusb_exit(libusb_context *ctx)
+{
+       check_expected(ctx);
+}
+
+void libusb_set_debug(libusb_context *ctx, int level)
+{
+}
+
+const struct libusb_version * libusb_get_version(void)
+{
+       return NULL;
+}
+
+int libusb_has_capability(uint32_t capability)
+{
+       return 0;
+}
+
+const char * libusb_error_name(int errcode)
+{
+       return NULL;
+}
+
+ssize_t libusb_get_device_list(libusb_context *ctx,
+       libusb_device ***list)
+{
+       return 0;
+}
+
+void libusb_free_device_list(libusb_device **list,
+       int unref_devices)
+{
+}
+
+libusb_device * libusb_ref_device(libusb_device *dev)
+{
+       return NULL;
+}
+
+void libusb_unref_device(libusb_device *dev)
+{
+}
+
+int libusb_get_configuration(libusb_device_handle *dev,
+       int *config)
+{
+       return 0;
+}
+
+int libusb_get_device_descriptor(libusb_device *dev,
+       struct libusb_device_descriptor *desc)
+{
+       return 0;
+}
+
+int libusb_get_active_config_descriptor(libusb_device *dev,
+       struct libusb_config_descriptor **config)
+{
+       return 0;
+}
+
+int libusb_get_config_descriptor(libusb_device *dev,
+       uint8_t config_index, struct libusb_config_descriptor **config)
+{
+       return 0;
+}
+
+int libusb_get_config_descriptor_by_value(libusb_device *dev,
+       uint8_t bConfigurationValue, struct libusb_config_descriptor **config)
+{
+       return 0;
+}
+
+void libusb_free_config_descriptor(
+       struct libusb_config_descriptor *config)
+{
+}
+
+uint8_t libusb_get_bus_number(libusb_device *dev)
+{
+       return 0;
+}
+
+uint8_t libusb_get_device_address(libusb_device *dev)
+{
+       return 0;
+}
+
+int libusb_get_device_speed(libusb_device *dev)
+{
+       return 0;
+}
+
+int libusb_get_max_packet_size(libusb_device *dev,
+       unsigned char endpoint)
+{
+       return 0;
+}
+
+int libusb_get_max_iso_packet_size(libusb_device *dev,
+       unsigned char endpoint)
+{
+       return 0;
+}
+
+int libusb_open(libusb_device *dev, libusb_device_handle **handle)
+{
+       return 0;
+}
+
+void libusb_close(libusb_device_handle *dev_handle)
+{
+}
+
+libusb_device * libusb_get_device(libusb_device_handle *dev_handle)
+{
+       return NULL;
+}
+
+int libusb_set_configuration(libusb_device_handle *dev,
+       int configuration)
+{
+       return 0;
+}
+
+int libusb_claim_interface(libusb_device_handle *dev,
+       int interface_number)
+{
+       return 0;
+}
+
+int libusb_release_interface(libusb_device_handle *dev,
+       int interface_number)
+{
+       return 0;
+}
+
+int libusb_set_interface_alt_setting(libusb_device_handle *dev,
+       int interface_number, int alternate_setting)
+{
+       return 0;
+}
+
+int libusb_clear_halt(libusb_device_handle *dev,
+       unsigned char endpoint)
+{
+       return 0;
+}
+
+int libusb_reset_device(libusb_device_handle *dev)
+{
+       return 0;
+}
+
+
+int libusb_kernel_driver_active(libusb_device_handle *dev,
+       int interface_number)
+{
+       return 0;
+}
+
+int libusb_detach_kernel_driver(libusb_device_handle *dev,
+       int interface_number)
+{
+       return 0;
+}
+
+int libusb_attach_kernel_driver(libusb_device_handle *dev,
+       int interface_number)
+{
+       return 0;
+}