f7bcca285af1dfd5afc3147a64996471aa95918f
[platform/core/uifw/libtdm.git] / ut / src / ut_tdm_pp.cpp
1 /**************************************************************************
2  *
3  * Copyright 2016 Samsung Electronics co., Ltd. All Rights Reserved.
4  *
5  * Contact: Konstantin Drabeniuk <k.drabeniuk@samsung.com>
6  *
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:
14  *
15  * The above copyright notice and this permission notice (including the
16  * next paragraph) shall be included in all copies or substantial portions
17  * of the Software.
18  *
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.
26  *
27 **************************************************************************/
28
29 #include "gtest/gtest.h"
30
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"
36
37 #define pthread_mutex_lock ut_pthread_mutex_lock
38 #define calloc ut_calloc
39 #define free ut_free
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
43
44 #include "tdm_pp.c"
45
46 static void _init_test()
47 {
48         TBM_BUFMGR_DEINIT_CALLED = 0;
49         TBM_BO_GET_USER_DATA_NULL = 0;
50         PTHREAD_MUTEX_INIT_ERROR = 0;
51         CALLOC_ERROR = 0;
52         CALLOC_RETURN_BUFFER = 0;
53         FREE_CALLED = 0;
54         PP_SET_INFO_ERROR = 0;
55         PP_ATACH_ERROR = 0;
56         PP_COMMIT_ERROR = 0;
57 }
58
59 /* UNIT TESTS */
60
61 /* tdm_pp_commit */
62
63 TEST(tdm_pp_commit, work_flow_success_3)
64 {
65         tdm_error error = TDM_ERROR_OPERATION_FAILED;
66         tdm_error expected_error = TDM_ERROR_NONE;
67         tdm_private_pp pp;
68         tdm_private_display private_display;
69
70         _init_test();
71
72         pp.private_display = &private_display;
73         private_display.func_pp.pp_commit = pp_commit;
74
75         error = tdm_pp_commit(&pp);
76
77         ASSERT_EQ(error, expected_error);
78 }
79
80 TEST(tdm_pp_commit, work_flow_success_2)
81 {
82         tdm_error error = TDM_ERROR_NONE;
83         tdm_error not_expected_error = TDM_ERROR_NONE;
84         tdm_private_pp pp;
85         tdm_private_display private_display;
86
87         _init_test();
88
89         pp.private_display = &private_display;
90         private_display.func_pp.pp_commit = pp_commit;
91         PP_COMMIT_ERROR = 1;
92
93         error = tdm_pp_commit(&pp);
94
95         ASSERT_NE(error, not_expected_error);
96 }
97
98 TEST(tdm_pp_commit, work_flow_success_1)
99 {
100         tdm_error error = TDM_ERROR_NONE;
101         tdm_error expected_error = TDM_ERROR_NOT_IMPLEMENTED;
102         tdm_private_pp pp;
103         tdm_private_display private_display;
104
105         _init_test();
106
107         pp.private_display = &private_display;
108         private_display.func_pp.pp_commit = NULL;
109
110         error = tdm_pp_commit(&pp);
111
112         ASSERT_EQ(error, expected_error);
113 }
114
115 TEST(tdm_pp_commit, null_ptr_fail_1)
116 {
117         tdm_error error = TDM_ERROR_NONE;
118         tdm_error expected_error = TDM_ERROR_INVALID_PARAMETER;
119
120         _init_test();
121
122         error = tdm_pp_commit(NULL);
123
124         ASSERT_EQ(error, expected_error);
125 }
126
127 /* tdm_pp_attach */
128
129 TEST(tdm_pp_attach, null_ptr_fail_3)
130 {
131         tdm_error error = TDM_ERROR_NONE;
132         tdm_error expected_error = TDM_ERROR_INVALID_PARAMETER;
133         tdm_private_pp pp;
134         tdm_private_display private_display;
135         struct _tbm_surface src;
136
137         _init_test();
138
139         pp.private_display = &private_display;
140
141         error = tdm_pp_attach(&pp, &src, NULL);
142
143         ASSERT_EQ(error, expected_error);
144 }
145
146 TEST(tdm_pp_attach, null_ptr_fail_2)
147 {
148         tdm_error error = TDM_ERROR_NONE;
149         tdm_error expected_error = TDM_ERROR_INVALID_PARAMETER;
150         tdm_private_pp pp;
151         tdm_private_display private_display;
152         struct _tbm_surface dst;
153
154         _init_test();
155
156         pp.private_display = &private_display;
157
158         error = tdm_pp_attach(&pp, NULL, &dst);
159
160         ASSERT_EQ(error, expected_error);
161 }
162
163 TEST(tdm_pp_attach, null_ptr_fail_1)
164 {
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;
169
170         _init_test();
171
172         error = tdm_pp_attach(NULL, &src, &dst);
173
174         ASSERT_EQ(error, expected_error);
175 }
176
177 /* tdm_pp_set_info */
178
179 TEST(tdm_pp_set_info, work_flow_success_3)
180 {
181         tdm_error error = TDM_ERROR_OPERATION_FAILED;
182         tdm_error expected_error = TDM_ERROR_NONE;
183         tdm_info_pp info;
184         tdm_private_pp pp;
185         tdm_private_display private_display;
186
187         _init_test();
188
189         pp.private_display = &private_display;
190         private_display.func_pp.pp_set_info = pp_set_info;
191
192         error = tdm_pp_set_info(&pp, &info);
193
194         ASSERT_EQ(error, expected_error);
195 }
196
197 TEST(tdm_pp_set_info, work_flow_success_2)
198 {
199         tdm_error error = TDM_ERROR_NONE;
200         tdm_error not_expected_error = TDM_ERROR_NONE;
201         tdm_info_pp info;
202         tdm_private_pp pp;
203         tdm_private_display private_display;
204
205         _init_test();
206
207         pp.private_display = &private_display;
208         private_display.func_pp.pp_set_info = pp_set_info;
209         PP_SET_INFO_ERROR = 1;
210
211         error = tdm_pp_set_info(&pp, &info);
212
213         ASSERT_NE(error, not_expected_error);
214 }
215
216 TEST(tdm_pp_set_info, work_flow_success_1)
217 {
218         tdm_error error = TDM_ERROR_NONE;
219         tdm_error expected_error = TDM_ERROR_NOT_IMPLEMENTED;
220         tdm_info_pp info;
221         tdm_private_pp pp;
222         tdm_private_display private_display;
223
224         _init_test();
225
226         pp.private_display = &private_display;
227         private_display.func_pp.pp_set_info = NULL;
228
229         error = tdm_pp_set_info(&pp, &info);
230
231         ASSERT_EQ(error, expected_error);
232 }
233
234 TEST(tdm_pp_set_info, null_ptr_fail_2)
235 {
236         tdm_error error = TDM_ERROR_NONE;
237         tdm_error expected_error = TDM_ERROR_INVALID_PARAMETER;
238         tdm_private_pp pp;
239         tdm_private_display private_display;
240
241         _init_test();
242
243         pp.private_display = &private_display;
244
245         error = tdm_pp_set_info(&pp, NULL);
246
247         ASSERT_EQ(error, expected_error);
248 }
249
250 TEST(tdm_pp_set_info, null_ptr_fail_1)
251 {
252         tdm_error error = TDM_ERROR_NONE;
253         tdm_error expected_error = TDM_ERROR_INVALID_PARAMETER;
254         tdm_info_pp info;
255
256         _init_test();
257
258         error = tdm_pp_set_info(NULL, &info);
259
260         ASSERT_EQ(error, expected_error);
261 }