*
**************************************************************************/
+#include "../stubs/stub_dlfcn.h"
#include "gtest/gtest.h"
+/*------ stubs -----------------*/
+#include "tdm_event_loop_stubs.h"
#include "tbm_stubs.h"
#include "stub_pthread.h"
+#include "stub_tdm_vblank.h"
#include "stub_stdlib.h"
-
+#include "stub_stdio.h"
+#include "stub_unistd.h"
+#include "tdm_event_loop_stubs.h"
#include "tdm.c"
-
-#include "tdm_private.h"
-
-static tdm_private_display ut_private_display;
+/*------ tested file -----------*/
static void _init_test()
{
stub_tbm_init();
stub_stdlib_init();
+ stub_dlfcn_init();
+ stub_stdio_init();
+ stub_tdm_vblank_init();
g_private_display = NULL;
}
+extern tdm_backend_module tdm_backend_module_stub;
+
+
/* tdm_display_update */
TEST(tdm_display_update, work_flow_success_1)
ASSERT_EQ(error, expected_error);
}
+/* tdm_display_init() */
+TEST(tdm_display_init, work_flow_success_1___first_call)
+{
+ tdm_error error = TDM_ERROR_BAD_REQUEST;
+ tdm_display *disp;
+
+ _init_test();
+
+ //to download tdm_backend_module;
+ stub_dlfcn_ctrl.dlopen_returned_val = (void*)1;
+ stub_dlfcn_ctrl.dlsym_returned_val = &tdm_backend_module_stub;
+
+ setenv("TDM_DEBUG_MODULE", "all", 1);
+ setenv("TDM_DEBUG_DUMP", "capture,pp,layer,all", 1);
+ setenv("TDM_DEBUG_PATH", "log.txt", 1);
+ stub_getenv_return_real_value = 1;
+
+ disp = tdm_display_init(&error);
+
+ ASSERT_EQ(TDM_ERROR_NONE, error);
+ ASSERT_TRUE(g_private_display != NULL);
+ ASSERT_TRUE(g_private_display == disp);
+ ASSERT_EQ(1, g_private_display->init_count);
+}
+
+TEST(tdm_display_init, work_flow_success_2___second_call)
+{
+ tdm_error error = TDM_ERROR_BAD_REQUEST;
+ tdm_display *disp;
+ tdm_private_display display;
+
+ _init_test();
+ memset(&display, 0, sizeof(display));
+ g_private_display = &display;
+ g_private_display->init_count = 1;
+
+ disp = tdm_display_init(&error);
+
+ ASSERT_EQ(TDM_ERROR_NONE, error);
+ ASSERT_TRUE(g_private_display != NULL);
+ ASSERT_TRUE(g_private_display == disp);
+ ASSERT_EQ(2, g_private_display->init_count);
+}
+
+
+TEST(tdm_display_init, work_flow_error_1___calloc_error)
+{
+ tdm_error error = TDM_ERROR_BAD_REQUEST;
+ tdm_display *disp;
+
+ _init_test();
+ CALLOC_ERROR = 1;
+
+ disp = tdm_display_init(&error);
+
+ ASSERT_EQ(TDM_ERROR_OUT_OF_MEMORY, error);
+ ASSERT_TRUE(disp == NULL);
+ ASSERT_TRUE(g_private_display == NULL);
+}
+
+TEST(tdm_display_init, work_flow_error_2___mutex_init_error)
+{
+ tdm_error error = TDM_ERROR_BAD_REQUEST;
+ tdm_display *disp;
+
+ _init_test();
+ PTHREAD_MUTEX_INIT_ERROR = 1;
+
+ disp = tdm_display_init(&error);
+
+ ASSERT_NE(TDM_ERROR_NONE, error);
+ ASSERT_TRUE(disp == NULL);
+ ASSERT_TRUE(g_private_display == NULL);
+}
+
/* tdm_display_deinit */
-TEST(tdm_display_deinit, work_flow_success_1)
+TEST(tdm_display_deinit, work_flow_success_1___init_count_more_then_one)
{
tdm_private_display *dpy;
unsigned int expected = 2;
ASSERT_EQ(actual, expected);
}
-/* tdm_display_init() */
-TEST(tdm_display_init, work_flow_success_7)
+TEST(tdm_display_deinit, work_flow_success_2___init_count_is_one)
{
- int actual;
- int expected = 1;
+ unsigned int expected = 2;
+ unsigned int actual;
+
+ tdm_error error = TDM_ERROR_BAD_REQUEST;
+ tdm_display *disp;
_init_test();
- PTHREAD_MUTEX_INIT_ERROR = 1;
- FREE_CALLED = 0;
+ //to download tdm_backend_module;
+ stub_dlfcn_ctrl.dlopen_returned_val = (void*)1;
+ stub_dlfcn_ctrl.dlsym_returned_val = &tdm_backend_module_stub;
- tdm_display_init(NULL);
+ disp = tdm_display_init(&error);
- actual = FREE_CALLED;
+ ASSERT_EQ(TDM_ERROR_NONE, error);
- ASSERT_EQ(actual, expected);
+ //call tested function
+ tdm_display_deinit(disp);
+
+ ASSERT_EQ(NULL, g_private_display);
+ ASSERT_TRUE(FREE_CALLED);
}
-TEST(tdm_display_init, work_flow_success_6)
-{
- tdm_private_display *actual;
- tdm_private_display *expected;
- _init_test();
-
- PTHREAD_MUTEX_INIT_ERROR = 1;
+/* tdm_display_check_module_abi */
+TEST(tdm_display_check_module_abi, work_flow_success_1)
+{
+ int res;
+ tdm_private_display private_display;
+ tdm_backend_module module;
+ private_display.module_data = &module;
+ module.abi_version = 0x00010001;
- actual = (tdm_private_display *)tdm_display_init(NULL);
+ res = tdm_display_check_module_abi(&private_display, 1, 1);
- expected = NULL;
+ ASSERT_EQ(1, res);
+}
- ASSERT_EQ(actual, expected);
+TEST(tdm_display_check_module_abi, work_flow_error_1___wrong_version)
+{
+ int res;
+ tdm_private_display private_display;
+ tdm_backend_module module;
+ private_display.module_data = &module;
+ module.abi_version = 0x00010001;
+
+ /*minor*/
+ res = tdm_display_check_module_abi(&private_display, 1, 2);
+ ASSERT_EQ(0, res);
+
+ /*major*/
+ res = tdm_display_check_module_abi(&private_display, 2, 1);
+ ASSERT_EQ(0, res);
}
-TEST(tdm_display_init, work_flow_success_5)
+/* tdm_display_check_module_abi */
+TEST(tdm_display_enable_debug_module, work_flow_success_1)
{
tdm_error error;
- tdm_error expected_error;
-
- _init_test();
- error = TDM_ERROR_BAD_REQUEST;
- PTHREAD_MUTEX_INIT_ERROR = 1;
+ //check all
+ error = tdm_display_enable_debug_module("all");
+ ASSERT_EQ(0xFFFFFFFF, tdm_debug_module);
+ ASSERT_EQ(TDM_ERROR_NONE, error);
- tdm_display_init(&error);
+ //check none
+ error = tdm_display_enable_debug_module("none");
+ ASSERT_EQ(0, tdm_debug_module);
+ ASSERT_EQ(TDM_ERROR_NONE, error);
- expected_error = TDM_ERROR_OPERATION_FAILED;
+ //check buffer,thread,mutex,vblank
+ error = tdm_display_enable_debug_module("buffer,thread,mutex,vblank");
+ ASSERT_EQ((TDM_DEBUG_BUFFER | TDM_DEBUG_THREAD | TDM_DEBUG_MUTEX | TDM_DEBUG_VBLANK) ,
+ tdm_debug_module);
+ ASSERT_EQ(TDM_ERROR_NONE, error);
- ASSERT_EQ(error, expected_error);
}
-TEST(tdm_display_init, work_flow_success_4)
+TEST(tdm_display_enable_debug_module, work_flow_error_1___bad_module)
{
- tdm_private_display *actual;
- tdm_private_display *expected = NULL;
-
- _init_test();
-
- CALLOC_ERROR = 1;
-
- actual = (tdm_private_display *)tdm_display_init(NULL);
+ tdm_error error;
- ASSERT_EQ(actual, expected);
+ //check bufer
+ error = tdm_display_enable_debug_module("bufer");
+ ASSERT_EQ(0 , tdm_debug_module);
+ ASSERT_NE(TDM_ERROR_NONE, error);
}
-TEST(tdm_display_init, work_flow_success_3)
+/* tdm_display_enable_ttrace_vblank */
+TEST(tdm_display_enable_ttrace_vblank, work_flow_success_1)
{
- tdm_error error = TDM_ERROR_BAD_REQUEST;
- tdm_error expected_error = TDM_ERROR_OUT_OF_MEMORY;
+ tdm_error error;
+ tdm_private_display private_display;
+ tdm_private_output output;
+ tdm_output_mode current_mode;
+ int vblank = 1;
_init_test();
+ stub_tdm_vblank_create_returned = &vblank;
- CALLOC_ERROR = 1;
+ output.current_mode = ¤t_mode;
+ output.private_display = &private_display;
- tdm_display_init(&error);
+ error = tdm_display_enable_ttrace_vblank(&private_display, &output, 1);
+ ASSERT_EQ(TDM_ERROR_NONE, error);
- ASSERT_EQ(error, expected_error);
+ error = tdm_display_enable_ttrace_vblank(&private_display, &output, 0);
}
-TEST(tdm_display_init, work_flow_success_2)
+TEST(tdm_display_enable_ttrace_vblank, work_flow_error_1___vblank_wait_fail)
{
- tdm_error error = TDM_ERROR_BAD_REQUEST;
- tdm_error expected_error = TDM_ERROR_NONE;
+ tdm_error error;
+ tdm_private_display private_display;
+ tdm_private_output output;
+ tdm_output_mode current_mode;
+ int vblank = 1;
_init_test();
- g_private_display = &ut_private_display;
+ output.current_mode = ¤t_mode;
+ output.private_display = &private_display;
+ stub_tdm_vblank_create_returned = &vblank;
- tdm_display_init(&error);
+ stub_tdm_vblank_wait_error = 1;
- ASSERT_EQ(error, expected_error);
+ error = tdm_display_enable_ttrace_vblank(&private_display, &output, 1);
+ ASSERT_NE(TDM_ERROR_NONE, error);
}
-TEST(tdm_display_init, work_flow_success_1)
+TEST(tdm_display_enable_ttrace_vblank, work_flow_error_2___vblank_create_fail)
{
- tdm_private_display *actual;
- tdm_private_display *expected = &ut_private_display;
+ tdm_error error;
+ tdm_private_display private_display;
+ tdm_private_output output;
+ tdm_output_mode current_mode;
_init_test();
+ stub_tdm_vblank_create_returned = NULL;
- g_private_display = &ut_private_display;
+ output.current_mode = ¤t_mode;
+ output.private_display = &private_display;
- actual = (tdm_private_display *)tdm_display_init(NULL);
-
- ASSERT_TRUE(actual == expected);
+ error = tdm_display_enable_ttrace_vblank(&private_display, &output, 1);
+ ASSERT_EQ(TDM_ERROR_NONE, error);
}
+