1 /**************************************************************************
3 * Copyright 2016 Samsung Electronics co., Ltd. All Rights Reserved.
5 * Contact: Konstantin Drabeniuk <k.drabeniuk@samsung.com>
6 * Contact: Andrii Sokolenko <a.sokolenko@samsung.com>
7 * Contact: Roman Marchenko <r.marchenko@samsung.com>
9 * Permission is hereby granted, free of charge, to any person obtaining a
10 * copy of this software and associated documentation files (the
11 * "Software"), to deal in the Software without restriction, including
12 * without limitation the rights to use, copy, modify, merge, publish,
13 * distribute, sub license, and/or sell copies of the Software, and to
14 * permit persons to whom the Software is furnished to do so, subject to
15 * the following conditions:
17 * The above copyright notice and this permission notice (including the
18 * next paragraph) shall be included in all copies or substantial portions
21 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
22 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
24 * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
25 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
26 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
27 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29 **************************************************************************/
33 void TBMEnv::SetUp(void)
35 setenv("XDG_RUNTIME_DIR", "/run", 1);
36 setenv("TBM_DISPLAY_SERVER", "1", 1);
38 const char *test_backend;
40 tdm_config_set_int(TBM_CONFIG_KEY_GENERAL_THREAD, ::testing::get<0>(GetParam()));
41 tdm_config_set_int(TBM_CONFIG_KEY_GENERAL_COMMIT_PER_VBLANK, ::testing::get<1>(GetParam()));
42 if (getenv("TBM_DEBUG_MODULE"))
43 tdm_config_set_string(TBM_CONFIG_KEY_DEBUG_MODULE, "buffer,thread,event,vblank,commit,pp,capture");
45 test_backend = ::testing::get<2>(GetParam());
47 test_backend = TBM_DEFAULT_MODULE;
48 tdm_config_set_string(TBM_CONFIG_KEY_GENERAL_BACKENDS, test_backend);
52 void TBMEnv::TearDown(void)
54 unsetenv("XDG_RUNTIME_DIR");
55 unsetenv("TBM_DISPLAY_SERVER");
58 /* tbm_bufmgr_init(), tbm_bufmgr_deinit() */
60 TEST_F(TBMEnv, BufmgrInitDeinit)
64 bufmgr = tbm_bufmgr_init(-1);
65 EXPECT_NE(bufmgr, nullptr);
66 EXPECT_STREQ(tbm_error_str(tbm_get_last_error()), tbm_error_str(TBM_ERROR_NONE));
68 tbm_bufmgr_deinit(bufmgr);
70 ASSERT_TRUE(tbm_bufmgr_debug_get_ref_count() == 0);
73 TEST_F(TBMEnv, BufmgrInitWithoutEnv)
79 bufmgr = tbm_bufmgr_init(-1);
80 EXPECT_EQ(bufmgr, nullptr);
82 ASSERT_TRUE(tbm_bufmgr_debug_get_ref_count() == 0);
85 TEST_F(TBMEnv, BufmgrInitFewTimes)
87 tbm_bufmgr bufmgr[10];
90 for (i = 0; i < 10; i++) {
91 bufmgr[i] = tbm_bufmgr_init(-1);
92 EXPECT_NE(bufmgr[i], nullptr);
93 EXPECT_STREQ(tbm_error_str(tbm_get_last_error()), tbm_error_str(TBM_ERROR_NONE));
96 for (i = 0; i < 10; i++)
97 tbm_bufmgr_deinit(bufmgr[i]);
99 ASSERT_TRUE(tbm_bufmgr_debug_get_ref_count() == 0);
102 TEST_F(TBMEnv, BufmgrDeinitWithNULL)
104 tbm_bufmgr_deinit(NULL);
106 ASSERT_TRUE(tbm_bufmgr_debug_get_ref_count() == 0);
109 /* tbm_bufmgr_server_init() */
110 TEST_F(TBMEnv, BufmgrServerInitDeinit)
114 bufmgr = tbm_bufmgr_server_init();
115 EXPECT_NE(bufmgr, nullptr);
116 EXPECT_STREQ(tbm_error_str(tbm_get_last_error()), tbm_error_str(TBM_ERROR_NONE));
118 tbm_bufmgr_deinit(bufmgr);
120 ASSERT_TRUE(tbm_bufmgr_debug_get_ref_count() == 0);
123 TEST_F(TBMEnv, BufmgrServerInitWithoutEnv)
129 bufmgr = tbm_bufmgr_server_init();
130 EXPECT_NE(bufmgr, nullptr);
131 EXPECT_STREQ(tbm_error_str(tbm_get_last_error()), tbm_error_str(TBM_ERROR_NONE));
133 tbm_bufmgr_deinit(bufmgr);
135 ASSERT_TRUE(tbm_bufmgr_debug_get_ref_count() == 0);
138 TEST_F(TBMEnv, BufmgrServerInitFewTimes)
140 tbm_bufmgr bufmgr[10];
143 for (i = 0; i < 10; i++) {
144 bufmgr[i] = tbm_bufmgr_server_init();
145 EXPECT_NE(bufmgr[i], nullptr);
146 EXPECT_STREQ(tbm_error_str(tbm_get_last_error()), tbm_error_str(TBM_ERROR_NONE));
149 for (i = 0; i < 10; i++)
150 tbm_bufmgr_deinit(bufmgr[i]);
152 ASSERT_TRUE(tbm_bufmgr_debug_get_ref_count() == 0);
155 /* int tbm_surface_internal_query_supported_formats(uint32_t **formats, uint32_t *num) */
156 TEST_F(TBMEnv, SurfaceInternalQueryFormats)
160 tbm_format *formats = NULL;
162 bufmgr = tbm_bufmgr_server_init();
163 EXPECT_NE(bufmgr, nullptr);
165 EXPECT_EQ(tbm_surface_internal_query_supported_formats(&formats, &num), 1);
166 EXPECT_STREQ(tbm_error_str(tbm_get_last_error()), tbm_error_str(TBM_ERROR_NONE));
168 EXPECT_NE(formats, nullptr);
169 for (uint32_t i = 0; i < num; i++)
170 EXPECT_NE(formats[i], 0);
175 tbm_bufmgr_deinit(bufmgr);
178 TEST_F(TBMEnv, SurfaceInternalQueryFormatsFailNull)
182 tbm_format *formats = NULL;
184 bufmgr = tbm_bufmgr_server_init();
185 EXPECT_NE(bufmgr, nullptr);
186 EXPECT_STREQ(tbm_error_str(tbm_get_last_error()), tbm_error_str(TBM_ERROR_NONE));
188 EXPECT_EQ(tbm_surface_internal_query_supported_formats(&formats, NULL), 0);
189 EXPECT_STREQ(tbm_error_str(tbm_get_last_error()), tbm_error_str(TBM_ERROR_INVALID_PARAMETER));
190 EXPECT_EQ(tbm_surface_internal_query_supported_formats(NULL, &num), 0);
191 EXPECT_STREQ(tbm_error_str(tbm_get_last_error()), tbm_error_str(TBM_ERROR_INVALID_PARAMETER));
193 tbm_bufmgr_deinit(bufmgr);
196 TEST_F(TBMEnv, SurfaceQueryFormatsFailNull)
199 tbm_format *formats = NULL;
200 tbm_surface_error_e result = TBM_SURFACE_ERROR_NONE;
202 result = (tbm_surface_error_e)tbm_surface_query_formats(&formats, NULL);
203 EXPECT_STREQ(tbm_error_str(result), tbm_error_str(TBM_ERROR_INVALID_PARAMETER));
205 result = (tbm_surface_error_e)tbm_surface_query_formats(NULL, &num);
206 EXPECT_STREQ(tbm_error_str(result), tbm_error_str(TBM_ERROR_INVALID_PARAMETER));
209 TEST_F(TBMEnv, SurfaceQueryFormatSuccess)
212 tbm_format *formats = NULL;
213 tbm_surface_error_e result = TBM_SURFACE_ERROR_NONE;
215 result = (tbm_surface_error_e)tbm_surface_query_formats(&formats, &num);
216 EXPECT_EQ(TBM_SURFACE_ERROR_NONE, result);
218 EXPECT_NE((tbm_format *)NULL, formats);
219 for (uint32_t i = 0; i < num; i++)
220 EXPECT_NE(0, formats[i]);
224 INSTANTIATE_TEST_CASE_P(TBMEnvParams,
226 Combine(Bool(), Bool(), Values("none")));