1 /**************************************************************************
3 * Copyright 2016 Samsung Electronics co., Ltd. All Rights Reserved.
5 * Contact: Konstantin Drabeniuk <k.drabeniuk@samsung.com>
7 * Permission is hereby granted, free of charge, to any person obtaining a
8 * copy of this software and associated documentation files (the
9 * "Software"), to deal in the Software without restriction, including
10 * without limitation the rights to use, copy, modify, merge, publish,
11 * distribute, sub license, and/or sell copies of the Software, and to
12 * permit persons to whom the Software is furnished to do so, subject to
13 * the following conditions:
15 * The above copyright notice and this permission notice (including the
16 * next paragraph) shall be included in all copies or substantial portions
19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
20 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
21 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
22 * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
23 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
24 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
25 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27 **************************************************************************/
29 #include "gtest/gtest.h"
31 #include "tbm_stubs.h"
32 #include "pthread_stubs.h"
33 #include "stdlib_stubs.h"
34 #include "tdm_list_stubs.h"
35 #include "tdm_pp_stubs.h"
37 #define pthread_mutex_lock ut_pthread_mutex_lock
38 #define calloc ut_calloc
40 #define pthread_mutex_init ut_pthread_mutex_init
41 #define pthread_mutex_unlock ut_pthread_mutex_unlock
42 #define tdm_buffer_ref_backend ut_tdm_buffer_ref_backend
46 static void _init_test()
48 TBM_BUFMGR_DEINIT_CALLED = 0;
49 TBM_BO_GET_USER_DATA_NULL = 0;
50 PTHREAD_MUTEX_INIT_ERROR = 0;
52 CALLOC_RETURN_BUFFER = 0;
54 PP_SET_INFO_ERROR = 0;
63 TEST(tdm_pp_commit, work_flow_success_3)
65 tdm_error error = TDM_ERROR_OPERATION_FAILED;
66 tdm_error expected_error = TDM_ERROR_NONE;
68 tdm_private_display private_display;
72 pp.private_display = &private_display;
73 private_display.func_pp.pp_commit = pp_commit;
75 error = tdm_pp_commit(&pp);
77 ASSERT_EQ(error, expected_error);
80 TEST(tdm_pp_commit, work_flow_success_2)
82 tdm_error error = TDM_ERROR_NONE;
83 tdm_error not_expected_error = TDM_ERROR_NONE;
85 tdm_private_display private_display;
89 pp.private_display = &private_display;
90 private_display.func_pp.pp_commit = pp_commit;
93 error = tdm_pp_commit(&pp);
95 ASSERT_NE(error, not_expected_error);
98 TEST(tdm_pp_commit, work_flow_success_1)
100 tdm_error error = TDM_ERROR_NONE;
101 tdm_error expected_error = TDM_ERROR_NOT_IMPLEMENTED;
103 tdm_private_display private_display;
107 pp.private_display = &private_display;
108 private_display.func_pp.pp_commit = NULL;
110 error = tdm_pp_commit(&pp);
112 ASSERT_EQ(error, expected_error);
115 TEST(tdm_pp_commit, null_ptr_fail_1)
117 tdm_error error = TDM_ERROR_NONE;
118 tdm_error expected_error = TDM_ERROR_INVALID_PARAMETER;
122 error = tdm_pp_commit(NULL);
124 ASSERT_EQ(error, expected_error);
129 TEST(tdm_pp_attach, null_ptr_fail_3)
131 tdm_error error = TDM_ERROR_NONE;
132 tdm_error expected_error = TDM_ERROR_INVALID_PARAMETER;
134 tdm_private_display private_display;
135 struct _tbm_surface src;
139 pp.private_display = &private_display;
141 error = tdm_pp_attach(&pp, &src, NULL);
143 ASSERT_EQ(error, expected_error);
146 TEST(tdm_pp_attach, null_ptr_fail_2)
148 tdm_error error = TDM_ERROR_NONE;
149 tdm_error expected_error = TDM_ERROR_INVALID_PARAMETER;
151 tdm_private_display private_display;
152 struct _tbm_surface dst;
156 pp.private_display = &private_display;
158 error = tdm_pp_attach(&pp, NULL, &dst);
160 ASSERT_EQ(error, expected_error);
163 TEST(tdm_pp_attach, null_ptr_fail_1)
165 tdm_error error = TDM_ERROR_NONE;
166 tdm_error expected_error = TDM_ERROR_INVALID_PARAMETER;
167 struct _tbm_surface src;
168 struct _tbm_surface dst;
172 error = tdm_pp_attach(NULL, &src, &dst);
174 ASSERT_EQ(error, expected_error);
177 /* tdm_pp_set_info */
179 TEST(tdm_pp_set_info, work_flow_success_3)
181 tdm_error error = TDM_ERROR_OPERATION_FAILED;
182 tdm_error expected_error = TDM_ERROR_NONE;
185 tdm_private_display private_display;
189 pp.private_display = &private_display;
190 private_display.func_pp.pp_set_info = pp_set_info;
192 error = tdm_pp_set_info(&pp, &info);
194 ASSERT_EQ(error, expected_error);
197 TEST(tdm_pp_set_info, work_flow_success_2)
199 tdm_error error = TDM_ERROR_NONE;
200 tdm_error not_expected_error = TDM_ERROR_NONE;
203 tdm_private_display private_display;
207 pp.private_display = &private_display;
208 private_display.func_pp.pp_set_info = pp_set_info;
209 PP_SET_INFO_ERROR = 1;
211 error = tdm_pp_set_info(&pp, &info);
213 ASSERT_NE(error, not_expected_error);
216 TEST(tdm_pp_set_info, work_flow_success_1)
218 tdm_error error = TDM_ERROR_NONE;
219 tdm_error expected_error = TDM_ERROR_NOT_IMPLEMENTED;
222 tdm_private_display private_display;
226 pp.private_display = &private_display;
227 private_display.func_pp.pp_set_info = NULL;
229 error = tdm_pp_set_info(&pp, &info);
231 ASSERT_EQ(error, expected_error);
234 TEST(tdm_pp_set_info, null_ptr_fail_2)
236 tdm_error error = TDM_ERROR_NONE;
237 tdm_error expected_error = TDM_ERROR_INVALID_PARAMETER;
239 tdm_private_display private_display;
243 pp.private_display = &private_display;
245 error = tdm_pp_set_info(&pp, NULL);
247 ASSERT_EQ(error, expected_error);
250 TEST(tdm_pp_set_info, null_ptr_fail_1)
252 tdm_error error = TDM_ERROR_NONE;
253 tdm_error expected_error = TDM_ERROR_INVALID_PARAMETER;
258 error = tdm_pp_set_info(NULL, &info);
260 ASSERT_EQ(error, expected_error);