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.
18 #include <gtest/gtest.h>
23 #include "system_info_mock.h"
26 #include "package_manager_mock.h"
27 #include "test_fixture.h"
30 using ::testing::DoAll;
31 using ::testing::Return;
32 using ::testing::SetArgPointee;
34 class Mocks : public ::testing::NiceMock<SystemInfoMock>,
35 public ::testing::NiceMock<GioMock>,
36 public ::testing::NiceMock<AulMock>,
37 public ::testing::NiceMock<PackageManagerMock> {};
39 class BadgeTest : public TestFixture {
41 BadgeTest() : TestFixture(std::make_unique<Mocks>()) {}
42 virtual ~BadgeTest() {}
44 virtual void SetUp() {
47 virtual void TearDown() {
51 TEST_F(BadgeTest, badge_new) {
53 bool is_supported = true;
54 char *_pkgid = (char *)"mypkgid";
55 GDBusConnection *_conn = (GDBusConnection*)g_object_new(G_TYPE_OBJECT, NULL);
56 GDBusMessage *_msg = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL);
57 GDBusMessage *_msg2 = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL);
59 EXPECT_CALL(GetMock<SystemInfoMock>(),
60 system_info_get_platform_bool(_, _)).
61 WillRepeatedly(DoAll(SetArgPointee<1>(is_supported),
64 EXPECT_CALL(GetMock<AulMock>(),
65 aul_app_get_pkgname_bypid(_, _, _)).
66 WillOnce(DoAll(SetArgPointee<1>(*_pkgid),
69 EXPECT_CALL(GetMock<GioMock>(),
70 g_bus_get_sync(_, _, _)).
71 WillOnce(Return(_conn));
73 EXPECT_CALL(GetMock<GioMock>(),
74 g_dbus_message_new_method_call(_, _, _, _)).
75 WillOnce(Return(_msg));
77 EXPECT_CALL(GetMock<GioMock>(),
78 g_dbus_connection_send_message_with_reply_sync(
79 _, _, _, _, _, _, _)).
80 WillOnce(Return(_msg2));
82 EXPECT_CALL(GetMock<GioMock>(),
83 g_dbus_message_to_gerror(_, _)).
84 WillOnce(Return(FALSE));
86 ret = badge_new("testappid");
88 g_object_unref(_conn);
90 EXPECT_EQ(ret, BADGE_ERROR_NONE);
93 TEST_F(BadgeTest, badge_add) {
95 bool is_supported = true;
96 char *_pkgid = (char *)"mypkgid";
97 package_manager_compare_result_type_e comp_ret = PACKAGE_MANAGER_COMPARE_MATCH;
98 GDBusMessage *_msg = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL);
99 GDBusMessage *_msg2 = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL);
101 EXPECT_CALL(GetMock<SystemInfoMock>(),
102 system_info_get_platform_bool(_, _)).
103 WillRepeatedly(DoAll(SetArgPointee<1>(is_supported),
106 EXPECT_CALL(GetMock<AulMock>(),
107 aul_app_get_pkgname_bypid(_, _, _)).
108 WillOnce(DoAll(SetArgPointee<1>(*_pkgid),
111 EXPECT_CALL(GetMock<PackageManagerMock>(),
112 package_manager_compare_app_cert_info(_, _, _)).
113 WillOnce(DoAll(SetArgPointee<2>(comp_ret),
116 EXPECT_CALL(GetMock<GioMock>(),
117 g_dbus_message_new_method_call(_, _, _, _)).
118 WillOnce(Return(_msg));
120 EXPECT_CALL(GetMock<GioMock>(),
121 g_dbus_connection_send_message_with_reply_sync(
122 _, _, _, _, _, _, _)).
123 WillOnce(Return(_msg2));
125 EXPECT_CALL(GetMock<GioMock>(),
126 g_dbus_message_to_gerror(_, _)).
127 WillOnce(Return(FALSE));
129 ret = badge_add("myappid");
131 EXPECT_EQ(ret, BADGE_ERROR_NONE);
134 TEST_F(BadgeTest, badge_remove) {
136 bool is_supported = true;
137 char *_pkgid = (char *)"mypkgid";
138 GDBusMessage *_msg = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL);
139 GDBusMessage *_msg2 = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL);
141 EXPECT_CALL(GetMock<SystemInfoMock>(),
142 system_info_get_platform_bool(_, _)).
143 WillRepeatedly(DoAll(SetArgPointee<1>(is_supported),
146 EXPECT_CALL(GetMock<AulMock>(),
147 aul_app_get_pkgname_bypid(_, _, _)).
148 WillOnce(DoAll(SetArgPointee<1>(*_pkgid),
151 EXPECT_CALL(GetMock<GioMock>(),
152 g_dbus_message_new_method_call(_, _, _, _)).
153 WillOnce(Return(_msg));
155 EXPECT_CALL(GetMock<GioMock>(),
156 g_dbus_connection_send_message_with_reply_sync(
157 _, _, _, _, _, _, _)).
158 WillOnce(Return(_msg2));
160 EXPECT_CALL(GetMock<GioMock>(),
161 g_dbus_message_to_gerror(_, _)).
162 WillOnce(Return(FALSE));
164 ret = badge_remove("myappid");
166 EXPECT_EQ(ret, BADGE_ERROR_NONE);
169 TEST_F(BadgeTest, badge_set_count) {
171 bool is_supported = true;
172 char *_pkgid = (char *)"mypkgid";
173 GDBusMessage *_msg = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL);
174 GDBusMessage *_msg2 = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL);
176 EXPECT_CALL(GetMock<SystemInfoMock>(),
177 system_info_get_platform_bool(_, _)).
178 WillRepeatedly(DoAll(SetArgPointee<1>(is_supported),
181 EXPECT_CALL(GetMock<AulMock>(),
182 aul_app_get_pkgname_bypid(_, _, _)).
183 WillOnce(DoAll(SetArgPointee<1>(*_pkgid),
186 EXPECT_CALL(GetMock<GioMock>(),
187 g_dbus_message_new_method_call(_, _, _, _)).
188 WillOnce(Return(_msg));
190 EXPECT_CALL(GetMock<GioMock>(),
191 g_dbus_connection_send_message_with_reply_sync(
192 _, _, _, _, _, _, _)).
193 WillOnce(Return(_msg2));
195 EXPECT_CALL(GetMock<GioMock>(),
196 g_dbus_message_to_gerror(_, _)).
197 WillOnce(Return(FALSE));
199 ret = badge_set_count("myappid", 9);
201 EXPECT_EQ(ret, BADGE_ERROR_NONE);
204 TEST_F(BadgeTest, badge_get_count) {
206 bool is_supported = true;
207 unsigned int count = 0;
208 GVariant *body = g_variant_new("(i)", 3);
209 GDBusMessage *_msg = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL);
210 GDBusMessage *_msg2 = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL);
212 EXPECT_CALL(GetMock<SystemInfoMock>(),
213 system_info_get_platform_bool(_, _)).
214 WillRepeatedly(DoAll(SetArgPointee<1>(is_supported),
217 EXPECT_CALL(GetMock<GioMock>(),
218 g_dbus_message_new_method_call(_, _, _, _)).
219 WillOnce(Return(_msg));
221 EXPECT_CALL(GetMock<GioMock>(),
222 g_dbus_connection_send_message_with_reply_sync(
223 _, _, _, _, _, _, _)).
224 WillOnce(Return(_msg2));
226 EXPECT_CALL(GetMock<GioMock>(),
227 g_dbus_message_get_body(_)).
228 WillOnce(Return(body));
230 EXPECT_CALL(GetMock<GioMock>(),
231 g_dbus_message_to_gerror(_, _)).
232 WillOnce(Return(FALSE));
234 ret = badge_get_count("myappid", &count);
237 g_variant_unref(body);
239 EXPECT_EQ(ret, BADGE_ERROR_NONE);
242 TEST_F(BadgeTest, badge_set_display) {
244 bool is_supported = true;
245 char *_pkgid = (char *)"mypkgid";
246 GDBusMessage *_msg = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL);
247 GDBusMessage *_msg2 = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL);
249 EXPECT_CALL(GetMock<SystemInfoMock>(),
250 system_info_get_platform_bool(_, _)).
251 WillRepeatedly(DoAll(SetArgPointee<1>(is_supported),
254 EXPECT_CALL(GetMock<AulMock>(),
255 aul_app_get_pkgname_bypid(_, _, _)).
256 WillOnce(DoAll(SetArgPointee<1>(*_pkgid),
259 EXPECT_CALL(GetMock<GioMock>(),
260 g_dbus_message_new_method_call(_, _, _, _)).
261 WillOnce(Return(_msg));
263 EXPECT_CALL(GetMock<GioMock>(),
264 g_dbus_connection_send_message_with_reply_sync(
265 _, _, _, _, _, _, _)).
266 WillOnce(Return(_msg2));
268 EXPECT_CALL(GetMock<GioMock>(),
269 g_dbus_message_to_gerror(_, _)).
270 WillOnce(Return(FALSE));
272 ret = badge_set_display("myappid", 1);
274 EXPECT_EQ(ret, BADGE_ERROR_NONE);
277 TEST_F(BadgeTest, badge_get_display) {
279 bool is_supported = true;
280 unsigned int is_display = 0;
281 GVariant *body = g_variant_new("(i)", 1);
282 GDBusMessage *_msg = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL);
283 GDBusMessage *_msg2 = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL);
285 EXPECT_CALL(GetMock<SystemInfoMock>(),
286 system_info_get_platform_bool(_, _)).
287 WillRepeatedly(DoAll(SetArgPointee<1>(is_supported),
290 EXPECT_CALL(GetMock<GioMock>(),
291 g_dbus_message_new_method_call(_, _, _, _)).
292 WillOnce(Return(_msg));
294 EXPECT_CALL(GetMock<GioMock>(),
295 g_dbus_connection_send_message_with_reply_sync(
296 _, _, _, _, _, _, _)).
297 WillOnce(Return(_msg2));
299 EXPECT_CALL(GetMock<GioMock>(),
300 g_dbus_message_get_body(_)).
301 WillOnce(Return(body));
303 EXPECT_CALL(GetMock<GioMock>(),
304 g_dbus_message_to_gerror(_, _)).
305 WillOnce(Return(FALSE));
307 ret = badge_get_display("myappid", &is_display);
310 g_variant_unref(body);
312 EXPECT_EQ(ret, BADGE_ERROR_NONE);
315 bool _badge_foreach_cb(const char *app_id, unsigned int count, void *user_data) {
319 TEST_F(BadgeTest, badge_foreach) {
321 bool is_supported = true;
322 GVariant *body = g_variant_new("(a(v))", NULL);
323 GDBusMessage *_msg = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL);
324 GDBusMessage *_msg2 = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL);
326 EXPECT_CALL(GetMock<SystemInfoMock>(),
327 system_info_get_platform_bool(_, _)).
328 WillRepeatedly(DoAll(SetArgPointee<1>(is_supported),
331 EXPECT_CALL(GetMock<GioMock>(),
332 g_dbus_message_new_method_call(_, _, _, _)).
333 WillOnce(Return(_msg));
335 EXPECT_CALL(GetMock<GioMock>(),
336 g_dbus_connection_send_message_with_reply_sync(
337 _, _, _, _, _, _, _)).
338 WillOnce(Return(_msg2));
340 EXPECT_CALL(GetMock<GioMock>(),
341 g_dbus_message_get_body(_)).
342 WillOnce(Return(body));
344 EXPECT_CALL(GetMock<GioMock>(),
345 g_dbus_message_to_gerror(_, _)).
346 WillOnce(Return(FALSE));
348 ret = badge_foreach(_badge_foreach_cb, NULL);
350 EXPECT_EQ(ret, BADGE_ERROR_NONE);
353 void _badge_change_cb(unsigned int action, const char *app_id,
354 unsigned int count, void *user_data) {
357 TEST_F(BadgeTest, badge_register_changed_cb) {
359 bool is_supported = true;
360 GDBusMessage *_msg = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL);
361 GDBusMessage *_msg2 = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL);
362 GDBusMessage *_msg3 = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL);
363 GDBusMessage *_msg4 = (GDBusMessage*)g_object_new(G_TYPE_OBJECT, NULL);
365 EXPECT_CALL(GetMock<SystemInfoMock>(),
366 system_info_get_platform_bool(_, _)).
367 WillRepeatedly(DoAll(SetArgPointee<1>(is_supported),
370 EXPECT_CALL(GetMock<GioMock>(),
371 g_dbus_connection_signal_subscribe(
372 _, _, _, _, _, _, _, _, _, _)).
373 WillOnce(Return(99));
375 EXPECT_CALL(GetMock<GioMock>(),
376 g_dbus_message_new_method_call(_, _, _, _)).
377 WillOnce(Return(_msg)).
378 WillOnce(Return(_msg2));
380 EXPECT_CALL(GetMock<GioMock>(),
381 g_dbus_connection_send_message_with_reply_sync(
382 _, _, _, _, _, _, _)).
383 WillOnce(Return(_msg3)).
384 WillOnce(Return(_msg4));
386 EXPECT_CALL(GetMock<GioMock>(),
387 g_dbus_message_to_gerror(_, _)).
388 WillRepeatedly(Return(FALSE));
390 EXPECT_CALL(GetMock<GioMock>(),
391 g_bus_watch_name_on_connection(
392 _, _, _, _, _, _, _)).
393 WillOnce(Return(88));
395 ret = badge_register_changed_cb(_badge_change_cb, NULL);
397 EXPECT_EQ(ret, BADGE_ERROR_NONE);
400 TEST_F(BadgeTest, badge_unregister_changed_cb) {
402 bool is_supported = true;
404 EXPECT_CALL(GetMock<SystemInfoMock>(),
405 system_info_get_platform_bool(_, _)).
406 WillRepeatedly(DoAll(SetArgPointee<1>(is_supported),
409 EXPECT_CALL(GetMock<GioMock>(),
410 g_bus_unwatch_name(_)).
413 EXPECT_CALL(GetMock<GioMock>(),
414 g_dbus_connection_signal_unsubscribe(_, _)).
417 ret = badge_unregister_changed_cb(_badge_change_cb);
419 EXPECT_EQ(ret, BADGE_ERROR_NONE);