summaryrefslogtreecommitdiff
path: root/unittest/device_haltests.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'unittest/device_haltests.cpp')
-rwxr-xr-xunittest/device_haltests.cpp1100
1 files changed, 1100 insertions, 0 deletions
diff --git a/unittest/device_haltests.cpp b/unittest/device_haltests.cpp
new file mode 100755
index 0000000..175049f
--- /dev/null
+++ b/unittest/device_haltests.cpp
@@ -0,0 +1,1100 @@
+
+#include <iostream>
+#include <gtest/gtest.h>
+#include <system_info.h>
+#include "unittest.h"
+#include "hw/battery.h"
+#include "hw/cpu.h"
+#include "hw/display.h"
+#include "hw/external_connection.h"
+#include "hw/ir.h"
+#include "hw/led.h"
+#include "hw/thermal.h"
+#include "hw/touchscreen.h"
+#include "hw/usb_client.h"
+#include "hw/usb_gadget.h"
+
+using namespace std;
+
+/*
+ * main class
+ */
+#define MODEL_NAME "http://tizen.org/system/model_name"
+#define LOWBATTERY "LowBattery"
+
+struct hw_info *info;
+struct battery_device *battery_dev;
+struct cpu_device *cpu_dev;
+struct display_device *display_dev;
+struct external_connection_device *ext_dev;
+struct ir_device *ir_dev;
+struct led_device *rgb_dev;
+struct thermal_device *thermal_dev;
+struct touchscreen_device *touchscreen_dev;
+struct usb_client *client_dev;
+struct usb_gadget *gadget_dev;
+struct usb_gadget_id gadget_id;
+struct usb_gadget_translator *gadget_translator;
+
+/* Define Classes */
+class BATTERYHalTest : public testing::Test
+{
+ public:
+ virtual void SetUp()
+ {
+ int ret;
+
+ ret = system_info_get_platform_bool(FEATURE_BATTERY, &supported);
+ EXPECT_EQ(SYSTEM_INFO_ERROR_NONE, ret) << "system_info_get_platform_bool failed";
+
+ }
+
+ virtual void TearDown()
+ {
+
+ }
+};
+
+class CPUHalTest : public testing::Test
+{
+ public:
+ virtual void SetUp()
+ {
+
+ }
+
+ virtual void TearDown()
+ {
+
+ }
+};
+
+class DISPLAYHalTest : public testing::Test
+{
+ public:
+ virtual void SetUp()
+ {
+
+ }
+
+ virtual void TearDown()
+ {
+
+ }
+};
+
+class EXTCONHalTest : public testing::Test
+{
+ public:
+ virtual void SetUp()
+ {
+
+ }
+
+ virtual void TearDown()
+ {
+
+ }
+};
+
+class IRHalTest : public testing::Test
+{
+ public:
+ virtual void SetUp()
+ {
+ int ret;
+
+ ret = system_info_get_platform_bool(FEATURE_IR, &supported);
+ EXPECT_EQ(SYSTEM_INFO_ERROR_NONE, ret) << "system_info_get_platform_bool failed";
+ }
+
+ virtual void TearDown()
+ {
+
+ }
+};
+
+class RGBHalTest : public testing::Test
+{
+ public:
+ virtual void SetUp()
+ {
+ int ret;
+
+ ret = system_info_get_platform_bool(FEATURE_LED, &supported);
+ EXPECT_EQ(SYSTEM_INFO_ERROR_NONE, ret) << "system_info_get_platform_bool failed";
+ }
+
+ virtual void TearDown()
+ {
+
+ }
+};
+
+class THERMALHalTest : public testing::Test
+{
+ public:
+ virtual void SetUp()
+ {
+
+ }
+
+ virtual void TearDown()
+ {
+
+ }
+};
+
+class TOUCHSCREENHalTest : public testing::Test
+{
+ public:
+ virtual void SetUp()
+ {
+
+ }
+
+ virtual void TearDown()
+ {
+
+ }
+};
+
+class USBCLIENTHalTest : public testing::Test
+{
+ public:
+ virtual void SetUp()
+ {
+ int ret;
+ char *model_name = NULL;
+
+ ret = system_info_get_platform_string(MODEL_NAME, &model_name);
+ EXPECT_EQ(SYSTEM_INFO_ERROR_NONE, ret) << "system_info_get_platform_bool failed";
+
+ if (!strncmp(model_name, "artik", 5)) {
+ supported = true;
+ } else {
+ supported = false;
+ }
+ cout << "supported " << supported << endl;
+ free(model_name);
+ }
+
+ virtual void TearDown()
+ {
+
+ }
+};
+
+class USBGADGETHalTest : public testing::Test
+{
+ public:
+ virtual void SetUp()
+ {
+
+ }
+
+ virtual void TearDown()
+ {
+
+ }
+};
+
+/*
+ * Testcase for Battery
+ */
+TEST_F(BATTERYHalTest, InitP)
+{
+ int ret;
+
+ if (!supported)
+ return;
+
+ ret = hw_get_info(BATTERY_HARDWARE_DEVICE_ID,
+ (const struct hw_info **)&info);
+ EXPECT_EQ(ret, 0) << "Fail to load battery hal (" << ret << ")";
+
+ if (!info->open) {
+ cout << "There is no function for info open" << endl;
+ return;
+ }
+ ret = info->open(info, NULL, (struct hw_common**)&battery_dev);
+ EXPECT_EQ(ret, 0) << "Fail to open battery device(" << ret << ")";
+}
+
+static void updated_cb(struct battery_info *info, void *data)
+{
+
+}
+
+TEST_F(BATTERYHalTest, RegisterChangedEventP)
+{
+ int ret;
+
+ if (!supported)
+ return;
+
+ if (!battery_dev->register_changed_event) {
+ cout << "There is no function for register_changed_event" << endl;
+ return;
+ }
+ ret = battery_dev->register_changed_event(updated_cb, NULL);
+ EXPECT_EQ(ret, 0) << "Fail to register_changed_event (" << ret << ")";
+}
+
+TEST_F(BATTERYHalTest, UnregisterChangedEventP)
+{
+ if (!supported)
+ return;
+
+ if (!battery_dev->unregister_changed_event) {
+ cout << "There is no function for unregister_changed_event" << endl;
+ return;
+ }
+ battery_dev->unregister_changed_event(updated_cb);
+}
+
+TEST_F(BATTERYHalTest, GetCurrentStateP)
+{
+ int ret;
+
+ if (!supported)
+ return;
+
+ if (!battery_dev->get_current_state) {
+ cout << "There is no function for get_current_state" << endl;
+ return;
+ }
+ ret = battery_dev->get_current_state(updated_cb, NULL);
+ EXPECT_EQ(ret, 0) << "Fail to get_current_state (" << ret << ")";
+}
+
+TEST_F(BATTERYHalTest, DeinitP)
+{
+ int ret;
+
+ if (!supported)
+ return;
+
+ if (!info->close) {
+ cout << "There is no function for info close" << endl;
+ return;
+ }
+ ret = info->close((struct hw_common *)battery_dev);
+ EXPECT_EQ(ret, 0) << "Fail to close battery device(" << ret << ")";
+}
+
+/*
+ * Testcase for Cpu
+ */
+TEST_F(CPUHalTest, InitP)
+{
+ int ret;
+
+ ret = hw_get_info(CPU_HARDWARE_DEVICE_ID,
+ (const struct hw_info **)&info);
+ if (ret < 0) {
+ cout << "There is no device for cpu " << ret << endl;
+ return;
+ } else {
+ EXPECT_EQ(ret, 0) << "Fail to load cpu hal (" << ret << ")";
+ }
+ if (!info || !info->open) {
+ cout << "There is no function for info open" << endl;
+ return;
+ }
+ ret = info->open(info, NULL, (struct hw_common**)&cpu_dev);
+ EXPECT_EQ(ret, 0) << "Fail to open cpu device (" << ret << ")";
+}
+
+TEST_F(CPUHalTest, StartBoostP)
+{
+ int ret;
+
+ if (!cpu_dev || !cpu_dev->start_boost) {
+ cout << "There is no function for start_boost" << endl;
+ return;
+ }
+
+ // prprpr TODO
+ ret = cpu_dev->start_boost((void *)LOWBATTERY);
+ EXPECT_EQ(ret, 0) << "Fail to start_boost (" << ret << ")";
+}
+
+TEST_F(CPUHalTest, StopBoostP)
+{
+ int ret;
+
+ if (!cpu_dev || !cpu_dev->stop_boost) {
+ cout << "There is no function for stop_boost" << endl;
+ return;
+ }
+
+ // prprpr TODO
+ ret = cpu_dev->stop_boost((void *)LOWBATTERY);
+ EXPECT_EQ(ret, 0) << "Fail to stop_boost (" << ret << ")";
+}
+
+TEST_F(CPUHalTest, DeinitP)
+{
+ int ret;
+
+ if (!info || !info->close) {
+ cout << "There is no function for info close" << endl;
+ return;
+ }
+
+ ret = info->close((struct hw_common *)cpu_dev);
+ EXPECT_EQ(ret, 0) << "Fail to open cpu device (" << ret << ")";
+}
+
+/*
+ * Testcase for Display
+ */
+TEST_F(DISPLAYHalTest, InitP)
+{
+ int ret;
+
+ ret = hw_get_info(DISPLAY_HARDWARE_DEVICE_ID,
+ (const struct hw_info **)&info);
+ if (ret < 0) {
+ cout << "There is no device for display" << ret << endl;
+ return;
+ } else {
+ EXPECT_EQ(ret, 0) << "Fail to load display hal (" << ret << ")";
+ }
+
+ if (!info || !info->open) {
+ cout << "There is no function for info open" << endl;
+ return;
+ }
+ ret = info->open(info, NULL, (struct hw_common**)&display_dev);
+ EXPECT_EQ(ret, 0) << "Fail to open display device (" << ret << ")";
+}
+
+TEST_F(DISPLAYHalTest, GetMaxBrightnessP)
+{
+ int ret;
+ int max;
+
+ if (!display_dev || !display_dev->get_max_brightness) {
+ cout << "There is no function for get_max_brightness" << endl;
+ return;
+ }
+ ret = display_dev->get_max_brightness(&max);
+ EXPECT_EQ(ret, 0) << "Fail to get_max_brightness (" << ret << ")";
+}
+
+TEST_F(DISPLAYHalTest, GetBrightnessP)
+{
+ int ret;
+ int brt;
+
+ if (!display_dev || !display_dev->get_brightness) {
+ cout << "There is no function for get_brightness" << endl;
+ return;
+ }
+ ret = display_dev->get_brightness(&brt);
+ EXPECT_EQ(ret, 0) << "Fail to get_brightness (" << ret << ")";
+}
+
+TEST_F(DISPLAYHalTest, SetBrightnessP)
+{
+ int ret;
+ int max;
+
+ if (!display_dev || !display_dev->get_max_brightness) {
+ cout << "There is no function for get_max_brightness" << endl;
+ return;
+ }
+ ret = display_dev->get_max_brightness(&max);
+ EXPECT_EQ(ret, 0) << "Fail to get_max_brightness (" << ret << ")";
+
+ if (!display_dev || !display_dev->set_brightness) {
+ cout << "There is no function for set_brightness" << endl;
+ return;
+ }
+ ret = display_dev->set_brightness(max);
+ EXPECT_EQ(ret, 0) << "Fail to set_brightness (" << ret << ")";
+}
+
+TEST_F(DISPLAYHalTest, GetAutoBrightnessP)
+{
+ int ret;
+ int brt;
+ float lmax = 0, lmin = 0, light = 0;
+
+ if (!display_dev || !display_dev->get_auto_brightness) {
+ cout << "There is no function for get_auto_brightness" << endl;
+ return;
+ }
+ ret = display_dev->get_auto_brightness(lmax, lmin, light, &brt);
+ EXPECT_GE(ret, 0) << "Fail to set_brightness (" << ret << ")";
+}
+
+TEST_F(DISPLAYHalTest, GetStateP)
+{
+ int ret;
+ enum display_state state;
+
+ if (!display_dev || !display_dev->get_state) {
+ cout << "There is no function for get_state" << endl;
+ return;
+ }
+ ret = display_dev->get_state(&state);
+ EXPECT_GE(ret, 0) << "Fail to get_state (" << ret << ")";
+}
+
+TEST_F(DISPLAYHalTest, SetStateP)
+{
+ int ret;
+
+ if (!display_dev || !display_dev->set_state) {
+ cout << "There is no function for set_state" << endl;
+ return;
+ }
+ ret = display_dev->set_state(DISPLAY_ON);
+ EXPECT_GE(ret, 0) << "Fail to set_state (" << ret << ")";
+}
+
+TEST_F(DISPLAYHalTest, GetMaxFrameRateP)
+{
+ int ret;
+ int max;
+
+ if (!display_dev || !display_dev->get_max_frame_rate) {
+ cout << "There is no function for get_max_frame_rate" << endl;
+ return;
+ }
+ ret = display_dev->get_max_frame_rate(&max);
+ EXPECT_GE(ret, 0) << "Fail to get_max_frame_rate (" << ret << ")";
+}
+
+TEST_F(DISPLAYHalTest, GetMinFrameRateP)
+{
+ int ret;
+ int min;
+
+ if (!display_dev || !display_dev->get_min_frame_rate) {
+ cout << "There is no function for get_min_frame_rate" << endl;
+ return;
+ }
+ ret = display_dev->get_min_frame_rate(&min);
+ EXPECT_GE(ret, 0) << "Fail to get_min_frame_rate (" << ret << ")";
+}
+
+TEST_F(DISPLAYHalTest, GetFrameRateP)
+{
+ int ret, rate;
+
+ if (!display_dev || !display_dev->get_frame_rate) {
+ cout << "There is no function for get_frame_rate" << endl;
+ return;
+ }
+ ret = display_dev->get_frame_rate(&rate);
+ EXPECT_GE(ret, 0) << "Fail to get frame rate (" << ret << ")";
+}
+
+TEST_F(DISPLAYHalTest, SetFrameRateP)
+{
+ int ret;
+ int max;
+
+ if (!display_dev || !display_dev->get_max_frame_rate) {
+ cout << "There is no function for get_max_frame_rate" << endl;
+ return;
+ }
+ ret = display_dev->get_max_frame_rate(&max);
+ EXPECT_GE(ret, 0) << "Fail to get_max_frame_rate (" << ret << ")";
+
+ if (!display_dev->set_frame_rate) {
+ cout << "There is no function for set_frame_rate" << endl;
+ return;
+ }
+ ret = display_dev->set_frame_rate(max);
+ EXPECT_GE(ret, 0) << "Fail to set_frame_rate (" << ret << ")";
+}
+
+TEST_F(DISPLAYHalTest, DeinitP)
+{
+ int ret;
+
+ if (!info || !info->close) {
+ cout << "There is no function for info close" << endl;
+ return;
+ }
+ ret = info->close((struct hw_common *)display_dev);
+ EXPECT_GE(ret, 0) << "Fail to close display device (" << ret << ")";
+}
+
+/*
+ * Testcase for Extcon
+ */
+TEST_F(EXTCONHalTest, InitP)
+{
+ int ret;
+
+ ret = hw_get_info(EXTERNAL_CONNECTION_HARDWARE_DEVICE_ID,
+ (const struct hw_info **)&info);
+ if (ret < 0) {
+ cout << "There is no device for extcon" << ret << endl;
+ return;
+ } else {
+ EXPECT_EQ(ret, 0) << "Fail to load extcon hal (" << ret << ")";
+ }
+
+ if (!info || !info->open) {
+ cout << "There is no function for info open" << endl;
+ return;
+ }
+ ret = info->open(info, NULL, (struct hw_common**)&ext_dev);
+ EXPECT_EQ(ret, 0) << "Fail to open extcon device(" << ret << ")";
+}
+
+static void updated_cb(struct connection_info *info, void *data)
+{
+
+}
+
+TEST_F(EXTCONHalTest, RegisterChangedEventP)
+{
+ int ret;
+
+ if (!ext_dev || !ext_dev->register_changed_event) {
+ cout << "There is no function for register_changed_event" << endl;
+ return;
+ }
+ ret = ext_dev->register_changed_event(updated_cb, NULL);
+ EXPECT_EQ(ret, 0) << "Fail to register_changed_event (" << ret << ")";
+}
+
+TEST_F(EXTCONHalTest, UnregisterChangedEventP)
+{
+ if (!ext_dev || !ext_dev->unregister_changed_event) {
+ cout << "There is no function for unregister_changed_event" << endl;
+ return;
+ }
+ ext_dev->unregister_changed_event(updated_cb);
+}
+
+TEST_F(EXTCONHalTest, GetCurrentStateP)
+{
+ int ret;
+
+ if (!ext_dev || !ext_dev->get_current_state) {
+ cout << "There is no function for unregister_changed_event" << endl;
+ return;
+ }
+ ret = ext_dev->get_current_state(updated_cb, NULL);
+ EXPECT_EQ(ret, 0) << "Fail to unregister_changed_event (" << ret << ")";
+}
+
+TEST_F(EXTCONHalTest, DeinitP)
+{
+ int ret;
+
+ if (!info || !info->close) {
+ cout << "There is no function for info close" << endl;
+ return;
+ }
+ ret = info->close((struct hw_common *)ext_dev);
+ EXPECT_EQ(ret, 0) << "Fail to close extcon device(" << ret << ")";
+}
+
+/*
+ * Testcase for Ir
+ */
+TEST_F(IRHalTest, InitP)
+{
+ int ret;
+
+ if (!supported)
+ return;
+
+ ret = hw_get_info(IR_HARDWARE_DEVICE_ID,
+ (const struct hw_info **)&info);
+ EXPECT_EQ(ret, 0) << "Fail to get hal for ir (" << ret << ")";
+
+ if (!info->open) {
+ cout << "There is no function for info open" << endl;
+ return;
+ }
+ ret = info->open(info, NULL, (struct hw_common**)&ir_dev);
+ EXPECT_EQ(ret, 0) << "Fail to open ir device (" << ret << ")";
+}
+
+TEST_F(IRHalTest, IsAvailableP)
+{
+ int ret;
+ bool val;
+
+ if (!supported)
+ return;
+
+ if (!ir_dev->is_available) {
+ cout << "There is no function for is_available" << endl;
+ return;
+ }
+ ret = ir_dev->is_available(&val);
+ EXPECT_EQ(ret, 0) << "Fail to is_available (" << ret << ")";
+}
+
+TEST_F(IRHalTest, TransmitP)
+{
+ int ret;
+ int pattern[5] = {100, 200, 300, 400, 500};
+
+ if (!supported)
+ return;
+
+ if (!ir_dev->transmit) {
+ cout << "There is no function for transmit" << endl;
+ return;
+ }
+ ret = ir_dev->transmit(pattern, 5);
+ EXPECT_EQ(ret, 0) << "Fail to transmit (" << ret << ")";
+}
+
+TEST_F(IRHalTest, DeinitP)
+{
+ int ret;
+
+ if (!supported)
+ return;
+
+ if (!info->close) {
+ cout << "There is no function for info close" << endl;
+ return;
+ }
+ ret = info->close((struct hw_common *)ir_dev);
+ EXPECT_EQ(ret, 0) << "Fail to close ir device (" << ret << ")";
+}
+
+/*
+ * Testcase for Rgb
+ */
+TEST_F(RGBHalTest, InitP)
+{
+ int ret;
+
+ if (!supported)
+ return;
+
+ ret = hw_get_info(LED_HARDWARE_DEVICE_ID,
+ (const struct hw_info **)&info);
+ EXPECT_EQ(ret, 0) << "Fail to get hal for rgb (" << ret << ")";
+
+ if (!info->open) {
+ cout << "There is no function for info open" << endl;
+ return;
+ }
+ ret = info->open(info, LED_ID_NOTIFICATION, (struct hw_common**)&rgb_dev);
+ EXPECT_EQ(ret, 0) << "Fail to open rgb device (" << ret << ")";
+}
+
+TEST_F(RGBHalTest, SetStateP)
+{
+ struct led_state state;
+ int ret;
+
+ if (!supported)
+ return;
+
+ if (!rgb_dev->set_state) {
+ cout << "There is no function for set_state" << endl;
+ return;
+ }
+
+ state.type = LED_TYPE_BLINK;
+ state.color = 0xFFFFFF;
+ state.duty_on = 500;
+ state.duty_off = 500;
+ ret = rgb_dev->set_state(&state);
+ EXPECT_GE(ret, 0) << "Fail to set_state (" << ret << ")";
+}
+
+TEST_F(RGBHalTest, DeinitP)
+{
+ int ret;
+
+ if (!supported)
+ return;
+
+ if (!info->close) {
+ cout << "There is no function for info close" << endl;
+ return;
+ }
+ ret = info->close((struct hw_common *)rgb_dev);
+ EXPECT_GE(ret, 0) << "Fail to close rgb device (" << ret << ")";
+}
+
+/*
+ * Testcase for Thermal
+ */
+TEST_F(THERMALHalTest, InitP)
+{
+ int ret;
+
+ ret = hw_get_info(THERMAL_HARDWARE_DEVICE_ID,
+ (const struct hw_info **)&info);
+ if (ret < 0) {
+ cout << "There is no device for thermal" << ret << endl;
+ return;
+ } else {
+ EXPECT_EQ(ret, 0) << "Fail to get hal for thermal (" << ret << ")";
+ }
+
+ if (!info || !info->open) {
+ cout << "There is no function for info open" << endl;
+ return;
+ }
+ ret = info->open(info, NULL, (struct hw_common**)&thermal_dev);
+ EXPECT_EQ(ret, 0) << "Fail to open thermal device (" << ret << ")";
+}
+
+TEST_F(THERMALHalTest, GetStateP)
+{
+ struct thermal_info thermal;
+ int ret;
+
+ if (!thermal_dev || !thermal_dev->get_state) {
+ cout << "There is no function for get_state" << endl;
+ return;
+ }
+ ret = thermal_dev->get_state(&thermal);
+ EXPECT_EQ(ret, 0) << "Fail to get_state (" << ret << ")";
+}
+
+static void updated_cb(struct thermal_info *info, void *data)
+{
+
+}
+
+TEST_F(THERMALHalTest, RegisterChangedEventP)
+{
+ int ret;
+
+ if (!thermal_dev || !thermal_dev->register_changed_event) {
+ cout << "There is no function for register_changed_event" << endl;
+ return;
+ }
+ ret = thermal_dev->register_changed_event(updated_cb, NULL);
+ EXPECT_EQ(ret, 0) << "Fail to register_changed_event (" << ret << ")";
+}
+
+TEST_F(THERMALHalTest, UnregisterChangedEventP)
+{
+ if (!thermal_dev || !thermal_dev->unregister_changed_event) {
+ cout << "There is no function for unregister_changed_event" << endl;
+ return;
+ }
+ thermal_dev->unregister_changed_event(updated_cb);
+}
+
+TEST_F(THERMALHalTest, DeinitP)
+{
+ int ret;
+
+ if (!info || !info->close) {
+ cout << "There is no function for info close" << endl;
+ return;
+ }
+ ret = info->close((struct hw_common *)thermal_dev);
+ EXPECT_EQ(ret, 0) << "Fail to close thermal device (" << ret << ")";
+}
+
+/*
+ * Testcase for Touchscreen
+ */
+TEST_F(TOUCHSCREENHalTest, InitP)
+{
+ int ret;
+
+ ret = hw_get_info(TOUCHSCREEN_HARDWARE_DEVICE_ID,
+ (const struct hw_info **)&info);
+ if (ret < 0) {
+ cout << "There is no device for touchscreen " << ret << endl;
+ return;
+ } else {
+ EXPECT_EQ(ret, 0) << "Fail to get hal for touchscreen (" << ret << ")";
+ }
+
+ if (!info || !info->open) {
+ cout << "There is no function for info open" << endl;
+ return;
+ }
+ ret = info->open(info, NULL, (struct hw_common**)&touchscreen_dev);
+ EXPECT_EQ(ret, 0) << "Fail to open touchscreen device (" << ret << ")";
+}
+
+TEST_F(TOUCHSCREENHalTest, SetstateP)
+{
+ enum touchscreen_state state = TOUCHSCREEN_ON;
+ int ret;
+
+ if (!touchscreen_dev || !touchscreen_dev->set_state) {
+ cout << "There is no function for set_state" << endl;
+ return;
+ }
+ ret = touchscreen_dev->set_state(state);
+ EXPECT_EQ(ret, 0) << "Fail to set_state (" << ret << ")";
+}
+
+TEST_F(TOUCHSCREENHalTest, DeinitP)
+{
+ int ret;
+
+ if (!info || !info->close) {
+ cout << "There is no function for info close" << endl;
+ return;
+ }
+ ret = info->close((struct hw_common *)touchscreen_dev);
+ EXPECT_EQ(ret, 0) << "Fail to close touchscreen device (" << ret << ")";
+}
+
+/*
+ * Testcase for Client
+ */
+TEST_F(USBCLIENTHalTest, InitP)
+{
+ int ret;
+
+ if (!supported)
+ return;
+
+ ret = hw_get_info(USB_CLIENT_HARDWARE_DEVICE_ID,
+ (const struct hw_info **)&info);
+ if (ret < 0) {
+ cout << "There is no device for usb client" << ret << endl;
+ return;
+ } else {
+ EXPECT_EQ(ret, 0) << "Fail to get hal for usb client (" << ret << ")";
+ }
+ if (!info || !info->open) {
+ cout << "There is no function for info open" << endl;
+ return;
+ }
+ ret = info->open(info, NULL, (struct hw_common**)&client_dev);
+ EXPECT_EQ(ret, 0) << "Fail to open usb client device (" << ret << ")";
+ EXPECT_NE(client_dev, nullptr) << "Fail to get usb client device structure";
+
+ ret = hw_get_info(USB_GADGET_DEVICE_ID,
+ (const struct hw_info **)&info);
+ if (ret < 0) {
+ cout << "There is no device for usb gadget" << ret << endl;
+ return;
+ } else {
+ EXPECT_EQ(ret, 0) << "Fail to get hal for usb gadget (" << ret << ")";
+ }
+
+ if (!info || !info->open) {
+ cout << "There is no function for info open" << endl;
+ return;
+ }
+ ret = info->open(info, NULL, (struct hw_common**)&gadget_translator);
+ EXPECT_EQ(ret, 0) << "Fail to open usb gadget device (" << ret << ")";
+}
+
+TEST_F(USBCLIENTHalTest, EnableP)
+{
+ int ret;
+ char str[256];
+
+ if (!supported)
+ return;
+
+ //dummy code to prevent error for not used function
+ snprintf(str, 255, "%s,", _available_funcs[2]->name);
+
+ if (!client_dev || !client_dev->enable) {
+ cout << "There is no function for enable" << endl;
+ return;
+ }
+ ret = client_dev->enable(client_dev);
+ EXPECT_EQ(ret, 0) << "Fail to enable (" << ret << ")";
+}
+
+TEST_F(USBCLIENTHalTest, ReConfigureGadgetP)
+{
+ int ret;
+
+ if (!supported)
+ return;
+
+ if (!gadget_translator || !gadget_translator->id_to_gadget) {
+ cout << "There is no function for id_to_gadget" << endl;
+ return;
+ }
+ gadget_id.function_mask = 7;
+ ret = gadget_translator->id_to_gadget(&gadget_id, &gadget_dev);
+ EXPECT_EQ(ret, 0) << "Fail to id_to_gadget (" << ret << ")";
+
+ if (!client_dev || !client_dev->disable) {
+ cout << "There is no function for disable" << endl;
+ return;
+ }
+ ret = client_dev->disable(client_dev);
+ EXPECT_EQ(ret, 0) << "Fail to disable (" << ret << ")";
+
+ if (!client_dev || !client_dev->reconfigure_gadget) {
+ cout << "There is no function for reconfigure_gadget" << endl;
+ return;
+ }
+ ret = client_dev->reconfigure_gadget(client_dev, gadget_dev);
+ EXPECT_EQ(ret, 0) << "Fail to reconfigure_gadget (" << ret << ")";
+}
+
+TEST_F(USBCLIENTHalTest, IsGadgetSupportedP)
+{
+ bool flag;
+
+ if (!supported)
+ return;
+
+ if (!client_dev || !client_dev->is_gadget_supported) {
+ cout << "There is no function for is_gadget_supported" << endl;
+ return;
+ }
+ flag = client_dev->is_gadget_supported(client_dev, gadget_dev);
+ EXPECT_EQ(flag, true) << "Fail to is_gadget_supported (" << flag << ")";
+}
+
+TEST_F(USBCLIENTHalTest, IsFunctionSupportedP)
+{
+ bool flag;
+
+ if (!supported)
+ return;
+
+ if (!client_dev || !client_dev->is_function_supported) {
+ cout << "There is no function for is_function_supported" << endl;
+ return;
+ }
+ flag = client_dev->is_function_supported(client_dev, *gadget_dev->funcs);
+ EXPECT_EQ(flag, true) << "Fail to is_function_supported (" << flag << ")";
+}
+
+TEST_F(USBCLIENTHalTest, GetCurrentGadgetP)
+{
+ int ret;
+
+ if (!supported)
+ return;
+
+ if (!client_dev || !client_dev->get_current_gadget) {
+ cout << "There is no function for get_current_gadget" << endl;
+ return;
+ }
+ ret = client_dev->get_current_gadget(client_dev, &gadget_dev);
+ EXPECT_EQ(ret, 0) << "Fail to get_current_gadget (" << ret << ")";
+}
+
+TEST_F(USBCLIENTHalTest, DisableP)
+{
+ int ret;
+
+ if (!supported)
+ return;
+
+ if (!client_dev || !client_dev->disable) {
+ cout << "There is no function for disable" << endl;
+ return;
+ }
+ ret = client_dev->disable(client_dev);
+ EXPECT_EQ(ret, 0) << "Fail to disable (" << ret << ")";
+}
+
+TEST_F(USBCLIENTHalTest, FreeGadgetP)
+{
+ if (!supported)
+ return;
+
+ if (!client_dev || !client_dev->free_gadget) {
+ cout << "There is no function for free_gadget" << endl;
+ return;
+ }
+ client_dev->free_gadget(gadget_dev);
+}
+
+TEST_F(USBCLIENTHalTest, DeinitP)
+{
+ int ret;
+
+ if (!supported)
+ return;
+
+ if (!info || !info->close) {
+ cout << "There is no function for info close" << endl;
+ return;
+ }
+ ret = info->close((struct hw_common *)client_dev);
+ EXPECT_EQ(ret, 0) << "Fail to close usb client device (" << ret << ")";
+}
+
+/*
+ * Testcase for Gadget
+ */
+TEST_F(USBGADGETHalTest, InitP)
+{
+ int ret;
+
+ ret = hw_get_info(USB_GADGET_DEVICE_ID,
+ (const struct hw_info **)&info);
+ if (ret < 0) {
+ cout << "There is no device for usb gadget" << ret << endl;
+ return;
+ } else {
+ EXPECT_EQ(ret, 0) << "Fail to get hal for usb gadget (" << ret << ")";
+ }
+
+ if (!info || !info->open) {
+ cout << "There is no function for info open" << endl;
+ return;
+ }
+ ret = info->open(info, NULL, (struct hw_common**)&gadget_translator);
+ EXPECT_EQ(ret, 0) << "Fail to open usb gadget device (" << ret << ")";
+}
+
+TEST_F(USBGADGETHalTest, IdToGadget)
+{
+ struct usb_gadget_id gadget_id;
+ int ret;
+ char str[256];
+
+ if (!gadget_translator || !gadget_translator->id_to_gadget) {
+ cout << "There is no function for id_to_gadget" << endl;
+ return;
+ }
+ //dummy code to prevent error for not used function
+ snprintf(str, 255, "%s,", _available_funcs[2]->name);
+ gadget_id.function_mask = 7;
+ ret = gadget_translator->id_to_gadget(&gadget_id, &gadget_dev);
+ EXPECT_EQ(ret, 0) << "Fail to id_to_gadget (" << ret << ")";
+}
+
+TEST_F(USBGADGETHalTest, CleanUpGadget)
+{
+ if (!gadget_translator || !gadget_translator->cleanup_gadget) {
+ cout << "There is no function for cleanup_gadget" << endl;
+ return;
+ }
+ gadget_translator->cleanup_gadget(gadget_dev);
+}
+
+TEST_F(USBGADGETHalTest, DeinitP)
+{
+ int ret;
+
+ if (!info || !info->close) {
+ cout << "There is no function for info close" << endl;
+ return;
+ }
+ ret = info->close((struct hw_common *)gadget_translator);
+ EXPECT_EQ(ret, 0) << "Fail to close usb gadget device (" << ret << ")";
+}
+
+int main(int argc, char **argv)
+{
+ testing::InitGoogleTest(&argc, argv);
+
+ return RUN_ALL_TESTS();
+}