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>
19 #include <gmock/gmock.h>
21 #include <watch_holder.hh>
24 #include <appsvc_mock.h>
25 #include <vconf_mock.h>
28 using namespace tizen_base;
29 using namespace watch_holder;
31 class WatchHolderStub : public WatchHolder {
33 WatchHolderStub(Evas_Object* win)
37 void InvokeAmbientChanged(bool enter, Bundle& extra) {
38 OnAmbientChanged(enter, extra);
40 void InvokeAmbientEvent(EventType ev, string sender,
42 OnAmbientEvent(ev, sender, extra);
44 void OnAdded(const WatchBase& watch) override {}
45 void OnUpdated(const WatchBase& watch) override {}
46 void OnRemoved(const WatchBase& watch) override {}
47 void OnLaunched(const WatchBase& watch) override {}
48 void OnDead(const WatchBase& watch) override {}
49 void OnBound(const WatchBase& watch) override {}
51 std::shared_ptr<WatchBase> CreateWatch(int rid, std::string id,
52 std::string appid, bool mock) override {
53 return WatchHolder::CreateWatch(rid, id, appid, true);
56 std::shared_ptr<WatchBase> CreateWatch(int rid, std::string id,
57 std::string appid, tizen_base::Bundle extra, bool mock) override {
58 return WatchHolder::CreateWatch(rid, id, appid, extra, true);
62 static int (*__app_com_cb)(const char *endpoint, aul_app_com_result_e result, bundle *envelope, void *user_data);
64 static string global_end;
65 aul_app_com_connection_h *global_conn;
67 static int __aul_app_get_appid_bypid_fake(int pid, char* appid, int len) {
68 snprintf(appid, len, "%s", "org.tizen.watch");
72 static int __aul_app_com_create_fake(const char* end, aul_app_com_permission_h permission,
73 app_com_cb cb, void* user_data, aul_app_com_connection_h* conn) {
76 b.Add("__AUL_APPID__", "org.tizen.watch");
77 b.Add("__AUL_PID__", "111");
78 b.Add("__AUL_IS_FAULT__", "is_fault");
79 b.Add("__AUL_WIDGET_VIEWER__", "org.tizen.watch");
80 b.Add("__AMBIENT_MODE__", "100");
81 b.Add("__APP_AMBIENT_EVENT__", "0");
82 b.Add("__APP_AMBIENT_SENDER__", "sender");
84 if(strcmp(end, global_end.c_str()) == 0)
89 static int __aul_app_com_leave_fake(aul_app_com_connection_h conn) {
93 static int __appsvc_run_service_fake(bundle* b, int r, appsvc_res_fn cb, void* data) {
97 class WatchHolderTest : public ::testing::Test {
99 WatchHolderStub* stub;
101 virtual void SetUp() {
102 aul_app_com_create_fake.custom_fake = __aul_app_com_create_fake;
103 aul_app_com_leave_fake.custom_fake = __aul_app_com_leave_fake;
104 aul_app_get_appid_bypid_fake.custom_fake = __aul_app_get_appid_bypid_fake;
105 global_conn = (aul_app_com_connection_h*)malloc(sizeof(aul_app_com_connection_h));
107 Evas_Object* win = elm_win_add(NULL, "Watch Holder", ELM_WIN_BASIC);
108 stub = new WatchHolderStub(win);
110 virtual void TearDown() {
116 TEST_F(WatchHolderTest, CreateInstance) {
117 EXPECT_NE(WatchHolderTest::stub, nullptr);
120 TEST_F(WatchHolderTest, CreateWatch) {
121 std::shared_ptr<WatchBase> w =
122 WatchHolderTest::stub->CreateWatch(1, string("id"), string("appid"), true);
123 EXPECT_NE(w, nullptr);
126 b.Add("__APP_AMBIENT_EVENT__", "1");
127 std::shared_ptr<WatchBase> w2 =
128 WatchHolderTest::stub->CreateWatch(1, string("id"),
129 string("appid"), b, true);
130 EXPECT_NE(w2, nullptr);
133 TEST_F(WatchHolderTest, LaunchWatch) {
134 appsvc_run_service_fake.custom_fake = __appsvc_run_service_fake;
135 string appid("org.tizen.watch");
138 ret = WatchHolderTest::stub->Launch(appid, false, nullptr);
142 TEST_F(WatchHolderTest, GetStack) {
143 std::list<std::shared_ptr<WatchBase>> list;
144 list = WatchHolderTest::stub->GetStack();
145 EXPECT_EQ(list.size(), 0);
148 TEST_F(WatchHolderTest, GetCurrent_N) {
149 EXPECT_EQ(WatchHolderTest::stub->GetCurrent(), nullptr);
150 global_end = "watch.launch";
153 TEST_F(WatchHolderTest, OnLaunchSignal) {
154 EXPECT_NE(WatchHolderTest::stub, nullptr);
156 string appid("org.tizen.watch");
157 ret = WatchHolderTest::stub->Launch(appid, false, b.GetHandle());
159 __app_com_cb("end", AUL_APP_COM_R_OK, b.GetHandle(), stub);
161 ret = WatchHolderTest::stub->Launch(appid, false, nullptr);
163 __app_com_cb("end", AUL_APP_COM_R_OK, b.GetHandle(), stub);
164 global_end = "watch.dead";
167 TEST_F(WatchHolderTest, OnDeadSignal) {
168 EXPECT_NE(WatchHolderTest::stub, nullptr);
169 __app_com_cb("end", AUL_APP_COM_R_OK, b.GetHandle(), stub);
170 global_end = "watch.ambientchange";
173 TEST_F(WatchHolderTest, OnAmbientChangedSignal) {
174 EXPECT_NE(WatchHolderTest::stub, nullptr);
175 __app_com_cb("end", AUL_APP_COM_R_OK, b.GetHandle(), stub);
176 global_end = "aod.ambientevent";
179 TEST_F(WatchHolderTest, OnReceiveSignal) {
180 EXPECT_NE(WatchHolderTest::stub, nullptr);
181 __app_com_cb("end", AUL_APP_COM_R_OK, b.GetHandle(), stub);
184 TEST_F(WatchHolderTest, OnAmbientChanged) {
186 EXPECT_NE(WatchHolderTest::stub, nullptr);
187 WatchHolderTest::stub->InvokeAmbientChanged(true, *b);
190 TEST_F(WatchHolderTest, OnAmbientEvent) {
192 b.Add("__APP_AMBIENT_EVENT__", "1");
193 EXPECT_NE(WatchHolderTest::stub, nullptr);
194 WatchHolderTest::stub->InvokeAmbientEvent(AmbientListener::EVENT_AOD_READY, string("sender"), b);