X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=ut%2Fsrc%2Fut_tdm.cpp;h=b4a949629d1d70f8f0735a80183c4ec5cca76a88;hb=821a491b0d9237e0bff01e3aeeaffafd90205e70;hp=57a7abaf668d6b1092e72c0019ddd014792b61f7;hpb=a067bb76b131e4780b43015f6431440e47fbb7ce;p=platform%2Fcore%2Fuifw%2Flibtdm.git diff --git a/ut/src/ut_tdm.cpp b/ut/src/ut_tdm.cpp index 57a7aba..b4a9496 100644 --- a/ut/src/ut_tdm.cpp +++ b/ut/src/ut_tdm.cpp @@ -26,17 +26,20 @@ * **************************************************************************/ +#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() { @@ -44,9 +47,15 @@ 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) @@ -61,9 +70,84 @@ 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; @@ -85,109 +169,151 @@ TEST(tdm_display_deinit, work_flow_success_1) 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); } +