• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include <gtest/gtest.h>
17 #include "app_state_callback_host.h"
18 #include "app_mgr_constants.h"
19 #include "iapp_state_callback.h"
20 #include "app_process_data.h"
21 #include "bundle_info.h"
22 #include "mock_ability_token.h"
23 
24 using namespace testing::ext;
25 namespace OHOS {
26 namespace AppExecFwk {
27 class AmsAppStateCallBackTest : public testing::Test {
28 public:
29     static void SetUpTestCase();
30     static void TearDownTestCase();
31     void SetUp();
32     void TearDown();
33 };
34 
SetUpTestCase()35 void AmsAppStateCallBackTest::SetUpTestCase()
36 {}
TearDownTestCase()37 void AmsAppStateCallBackTest::TearDownTestCase()
38 {}
SetUp()39 void AmsAppStateCallBackTest::SetUp()
40 {}
TearDown()41 void AmsAppStateCallBackTest::TearDown()
42 {}
43 
44 /*
45  * Feature: AppStateCallBackHost
46  * Function: AppStateCallBackHost
47  * SubFunction: OnRemoteRequest Function
48  * FunctionPoints: AppStateCallBackHost Onreceived interface
49  * EnvConditions: Mobile that can run ohos test framework
50  * CaseDescription: Verify if Onreceived works when app state changed.
51  */
52 HWTEST_F(AmsAppStateCallBackTest, OnRemoteRequest_001, TestSize.Level1)
53 {
54     sptr<AppStateCallbackHost> host(new AppStateCallbackHost());
55     EXPECT_NE(host, nullptr);
56     MessageParcel data;
57     MessageParcel reply;
58     MessageOption option{ MessageOption::TF_ASYNC };
59 
60     AppData appDataInfo;
61     AppProcessData processData;
62     appDataInfo.appName = "test_name";
63     appDataInfo.uid = 2;
64     processData.appDatas.emplace_back(appDataInfo);
65     processData.pid = 1;
66     processData.appState = ApplicationState::APP_STATE_FOREGROUND;
67     data.WriteParcelable(&processData);
68 }
69 
70 /*
71  * Feature: AppStateCallBackHost
72  * Function: AppStateCallBackHost
73  * SubFunction: OnRemoteRequest Function
74  * FunctionPoints: AppStateCallBackHost Onreceived interface
75  * EnvConditions: Mobile that can run ohos test framework
76  * CaseDescription: Verify if Onreceived works when ability request done.
77  */
78 HWTEST_F(AmsAppStateCallBackTest, OnRemoteRequest_002, TestSize.Level1)
79 {
80     sptr<AppStateCallbackHost> host(new AppStateCallbackHost());
81     EXPECT_NE(host, nullptr);
82     MessageParcel data;
83     MessageParcel reply;
84     MessageOption option{ MessageOption::TF_ASYNC };
85     sptr<IRemoteObject> token = new MockAbilityToken();
86 
87     data.WriteParcelable(token.GetRefPtr());
88     int32_t abilityState = static_cast<int32_t>(AbilityState::ABILITY_STATE_FOREGROUND);
89     data.WriteInt32(abilityState);
90 }
91 
92 /*
93  * Feature: AppStateCallBackHost
94  * Function: AppStateCallBackHost
95  * SubFunction: OnAbilityRequestDone Function
96  * FunctionPoints: OnAbilityRequestDone Onreceived interface
97  * EnvConditions: Mobile that can run ohos test framework
98  * CaseDescription: Verify if Onreceived works when ability request done.
99  */
100 HWTEST_F(AmsAppStateCallBackTest, OnAbilityRequestDone_001, TestSize.Level1)
101 {
102     sptr<IRemoteObject> token = nullptr;
103     AbilityState state = AbilityState::ABILITY_STATE_CREATE;
104     sptr<AppStateCallbackHost> host(new AppStateCallbackHost());
105     EXPECT_NE(host, nullptr);
106     host->OnAbilityRequestDone(token, state);
107 }
108 
109 /*
110  * Feature: AppStateCallBackHost
111  * Function: AppStateCallBackHost
112  * SubFunction: NotifyStartResidentProcess Function
113  * FunctionPoints: NotifyStartResidentProcess Onreceived interface
114  * EnvConditions: Mobile that can run ohos test framework
115  * CaseDescription: Verify if Onreceived works when ability request done.
116  */
117 HWTEST_F(AmsAppStateCallBackTest, NotifyStartResidentProcess_001, TestSize.Level1)
118 {
119     sptr<AppStateCallbackHost> host(new AppStateCallbackHost());
120     EXPECT_NE(host, nullptr);
121     std::vector<AppExecFwk::BundleInfo> bundleInfos;
122     host->NotifyStartResidentProcess(bundleInfos);
123 }
124 
125 /*
126  * Feature: AppStateCallBackHost
127  * Function: AppStateCallBackHost
128  * SubFunction: NotifyStartKeepAliveProcess Function
129  * FunctionPoints: NotifyStartKeepAliveProcess Onreceived interface
130  * EnvConditions: Mobile that can run ohos test framework
131  * CaseDescription: Verify if Onreceived works when ability request done.
132  */
133 HWTEST_F(AmsAppStateCallBackTest, NotifyStartKeepAliveProcess_001, TestSize.Level1)
134 {
135     sptr<AppStateCallbackHost> host(new AppStateCallbackHost());
136     EXPECT_NE(host, nullptr);
137     std::vector<AppExecFwk::BundleInfo> bundleInfos;
138     host->NotifyStartKeepAliveProcess(bundleInfos);
139 }
140 
141 /*
142  * Feature: AppStateCallBackHost
143  * Function: AppStateCallBackHost
144  * SubFunction: OnAppStateChanged Function
145  * FunctionPoints: OnAppStateChanged Onreceived interface
146  * EnvConditions: Mobile that can run ohos test framework
147  * CaseDescription: Verify if Onreceived works when app state changed.
148  */
149 HWTEST_F(AmsAppStateCallBackTest, OnAppStateChanged_001, TestSize.Level1)
150 {
151     AppProcessData data;
152     sptr<AppStateCallbackHost> host(new AppStateCallbackHost());
153     EXPECT_NE(host, nullptr);
154     host->OnAppStateChanged(data);
155 }
156 
157 /*
158 * Feature: AppProcessData
159 * Function: AppProcessData
160 * SubFunction: Marshalling and Unmarshalling
161 * FunctionPoints: Marshalling and Unmarshalling can work normal
162 * EnvConditions: Mobile that can run normal
163 * CaseDescription: 1. Verify process data can write to parcel.
164             2. verify process data can read from parcel.
165 */
166 HWTEST_F(AmsAppStateCallBackTest, AppProcessData_001, TestSize.Level1)
167 {
168     Parcel data;
169     AppData appDataInfo;
170     AppProcessData processData;
171     appDataInfo.appName = "test_name";
172     appDataInfo.uid = 2;
173     processData.appDatas.emplace_back(appDataInfo);
174     processData.pid = 1;
175     processData.appState = ApplicationState::APP_STATE_FOREGROUND;
176 
177     bool ret = processData.Marshalling(data);
178     EXPECT_EQ(true, ret);
179 
180     sptr<AppProcessData> newProcessData = AppProcessData::Unmarshalling(data);
181     EXPECT_NE(nullptr, newProcessData);
182 
183     for (size_t i = 0; i < processData.appDatas.size(); i++) {
184         EXPECT_EQ(processData.appDatas[i].appName, newProcessData->appDatas[i].appName);
185         EXPECT_EQ(processData.appDatas[i].uid, newProcessData->appDatas[i].uid);
186     }
187 
188     EXPECT_EQ(processData.pid, newProcessData->pid);
189     EXPECT_EQ(processData.appState, newProcessData->appState);
190 }
191 }  // namespace AppExecFwk
192 }  // namespace OHOS
193