2 * Copyright (c) 2020 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 #include <gtest/gtest.h>
20 #include <rua_manager.h>
27 #include "sqlite3_mock.h"
28 #include "pkgmgr_info_mock.h"
29 #include "test_fixture.h"
32 using ::testing::DoAll;
33 using ::testing::SetArgPointee;
34 using ::testing::Return;
36 static bool __rua_info_cb(rua_info_h info, void* user_data) {
38 rua_info_h* cloned = (rua_info_h*)user_data;
39 rua_info_clone(info, cloned);
45 static char** __create_table(void) {
46 char** table = (char** )calloc(10, sizeof(char*));
47 table[0] = strdup("pkgname");
48 if (table[0] == nullptr)
51 table[1] = strdup("apppath");
52 if (table[1] == nullptr)
55 table[2] = strdup("arg");
56 if (table[2] == nullptr)
59 table[3] = strdup("122232");
60 if (table[3] == nullptr)
63 table[4] = strdup("instance_id");
64 if (table[4] == nullptr)
67 table[5] = strdup("instance_name");
68 if (table[5] == nullptr)
71 table[6] = strdup("icon");
72 if (table[6] == nullptr)
75 table[7] = strdup("uri");
76 if (table[7] == nullptr)
79 table[8] = strdup("image");
80 if (table[8] == nullptr)
83 table[9] = strdup("compid");
84 if (table[9] == nullptr)
90 for (int i = 0; i < 10; i++) {
99 class ManagerMocks : public ::testing::NiceMock<AulMock>,
100 public ::testing::NiceMock<PkgmgrInfoMock>,
101 public ::testing::NiceMock<SqlMock> {};
103 class RuaManagerTest : public TestFixture {
105 RuaManagerTest() : TestFixture(std::make_unique<ManagerMocks>()) {}
106 virtual ~RuaManagerTest() {}
108 virtual void SetUp() {
109 table_ = __create_table();
110 if (table_ == nullptr)
113 temp_ = (void*)malloc(1);
114 if (temp_ == nullptr)
117 EXPECT_CALL(GetMock<SqlMock>(),
118 sqlite3_open_v2(_, _, _, _)).WillRepeatedly(Return(0));
119 EXPECT_CALL(GetMock<SqlMock>(),
120 sqlite3_close_v2(_)).WillRepeatedly(Return(0));
121 EXPECT_CALL(GetMock<SqlMock>(),
122 sqlite3_free_table(_));
123 EXPECT_CALL(GetMock<SqlMock>(),
124 sqlite3_busy_handler(_, _, _)).WillRepeatedly(Return(0));
125 EXPECT_CALL(GetMock<SqlMock>(),
126 sqlite3_get_table(_, _, _, _, _, _)).
127 WillOnce(DoAll(SetArgPointee<2>(table_),
129 SetArgPointee<4>(0), (Return(0))));
130 EXPECT_CALL(GetMock<PkgmgrInfoMock>(),
131 pkgmgrinfo_appinfo_get_appinfo(_, _)).
132 WillOnce(DoAll(SetArgPointee<1>(temp_),Return(0)));
133 EXPECT_CALL(GetMock<AulMock>(),
134 aul_comp_info_create(_, _)).
135 WillOnce(DoAll(SetArgPointee<1>(temp_),Return(0)));
136 EXPECT_CALL(GetMock<AulMock>(),
137 aul_comp_info_destroy(_)).
138 WillRepeatedly(Return(0));
139 EXPECT_CALL(GetMock<PkgmgrInfoMock>(),
140 pkgmgrinfo_appinfo_destroy_appinfo(_)).
141 WillRepeatedly(Return(0));
142 EXPECT_CALL(GetMock<PkgmgrInfoMock>(),
143 pkgmgrinfo_appinfo_clone_appinfo(_, _)).
144 WillOnce(DoAll(SetArgPointee<1>(temp_),Return(0)));
145 EXPECT_CALL(GetMock<AulMock>(),
146 aul_comp_info_clone(_, _)).
147 WillOnce(DoAll(SetArgPointee<1>(temp_),Return(0)));
149 rua_manager_foreach_rua_info(__rua_info_cb, &info_);
152 virtual void TearDown() {
154 for (int i = 0; i < 10; i++)
161 rua_info_destroy(info_);
165 rua_info_h info_ = nullptr;
168 char** table_ = nullptr;
169 void* temp_ = nullptr;
172 TEST_F(RuaManagerTest, rua_manager_delete_rua_info) {
173 EXPECT_CALL(GetMock<AulMock>(),
174 aul_delete_rua_history_for_uid(_, _)).
177 int ret = rua_manager_delete_rua_info(info_);
181 TEST_F(RuaManagerTest, rua_manager_delete_all_rua_info) {
182 EXPECT_CALL(GetMock<AulMock>(),
183 aul_delete_rua_history_for_uid(_, _)).
186 int ret = rua_manager_delete_all_rua_info();
190 TEST_F(RuaManagerTest, rua_manager_get_app_control_from_rua_info_N) {
193 int ret = rua_manager_get_app_control_from_rua_info(info_, &ac);
197 TEST_F(RuaManagerTest, rua_manager_get_rua_context_from_rua_info) {
200 int ret = rua_manager_get_rua_context_from_rua_info(info_, &ctx);
203 ret = rua_context_destroy(ctx);
208 TEST_F(RuaManagerTest, rua_manager_is_running_N) {
212 int ret = rua_manager_get_rua_context_from_rua_info(info_, &ctx);
215 ret = rua_manager_is_running(ctx, &running);
218 ret = rua_context_destroy(ctx);
222 TEST_F(RuaManagerTest, rua_manager_resume_N) {
225 int ret = rua_manager_get_rua_context_from_rua_info(info_, &ctx);
228 ret = rua_manager_resume(ctx);
231 ret = rua_context_destroy(ctx);
235 TEST_F(RuaManagerTest, rua_manager_terminate_N) {
238 int ret = rua_manager_get_rua_context_from_rua_info(info_, &ctx);
241 ret = rua_manager_terminate(ctx);
244 ret = rua_context_destroy(ctx);
248 TEST_F(RuaManagerTest, rua_context_get_app_id) {
252 int ret = rua_manager_get_rua_context_from_rua_info(info_, &ctx);
255 ret = rua_context_get_app_id(ctx, &appid);
257 EXPECT_EQ(appid, std::string("pkgname"));
262 TEST_F(RuaManagerTest, rua_context_get_instance_id) {
266 int ret = rua_manager_get_rua_context_from_rua_info(info_, &ctx);
269 ret = rua_context_get_instance_id(ctx, &instanceid);
271 EXPECT_EQ(instanceid, std::string("instance_id"));
276 TEST_F(RuaManagerTest, rua_context_get_component_id) {
280 int ret = rua_manager_get_rua_context_from_rua_info(info_, &ctx);
283 ret = rua_context_get_component_id(ctx, &compid);
285 EXPECT_EQ(compid, std::string("compid"));
290 TEST_F(RuaManagerTest, rua_info_get_app_id) {
293 int ret = rua_info_get_app_id(info_, &app_id);
295 EXPECT_EQ(app_id, std::string("pkgname"));
300 TEST_F(RuaManagerTest, rua_info_get_app_path) {
303 int ret = rua_info_get_app_path(info_, &app_path);
305 EXPECT_EQ(app_path, std::string("apppath"));
310 TEST_F(RuaManagerTest, rua_info_get_args) {
313 int ret = rua_info_get_args(info_, &args);
315 EXPECT_EQ(args, std::string("arg"));
320 TEST_F(RuaManagerTest, rua_info_get_launch_time) {
323 int ret = rua_info_get_launch_time(info_, &launch_time);
325 EXPECT_EQ(launch_time, 122232);
328 TEST_F(RuaManagerTest, rua_info_get_instance_id) {
331 int ret = rua_info_get_instance_id(info_, &instance_id);
333 EXPECT_EQ(instance_id, std::string("instance_id"));
338 TEST_F(RuaManagerTest, rua_info_get_instance_name) {
341 int ret = rua_info_get_instance_name(info_, &instance_name);
343 EXPECT_EQ(instance_name, std::string("instance_name"));
348 TEST_F(RuaManagerTest, rua_info_get_icon) {
351 int ret = rua_info_get_icon(info_, &icon);
353 EXPECT_EQ(icon, std::string("icon"));
358 TEST_F(RuaManagerTest, rua_info_get_uri) {
361 int ret = rua_info_get_uri(info_, &uri);
363 EXPECT_EQ(uri, std::string("uri"));
368 TEST_F(RuaManagerTest, rua_info_get_image) {
371 int ret = rua_info_get_image(info_, &image);
373 EXPECT_EQ(image, std::string("image"));
378 TEST_F(RuaManagerTest, rua_info_get_component_id) {
381 int ret = rua_info_get_component_id(info_, &comp_id);
383 EXPECT_EQ(comp_id, std::string("compid"));
388 TEST_F(RuaManagerTest, rua_info_is_managed_by_task_manager) {
389 EXPECT_CALL(GetMock<AulMock>(),
390 aul_comp_info_is_taskmanage(_, _)).
395 int ret = rua_info_is_managed_by_task_manager(info_, &managed);
399 TEST_F(RuaManagerTest, rua_info_get_label) {
400 EXPECT_CALL(GetMock<AulMock>(),
401 aul_comp_info_get_label(_, _)).
405 int ret = rua_info_get_label(info_, &label);
406 auto p = std::unique_ptr<char, decltype(std::free)*>(label, std::free);