• 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: OnAppStateChanged Function
129  * FunctionPoints: OnAppStateChanged Onreceived interface
130  * EnvConditions: Mobile that can run ohos test framework
131  * CaseDescription: Verify if Onreceived works when app state changed.
132  */
133 HWTEST_F(AmsAppStateCallBackTest, OnAppStateChanged_001, TestSize.Level1)
134 {
135     AppProcessData data;
136     sptr<AppStateCallbackHost> host(new AppStateCallbackHost());
137     EXPECT_NE(host, nullptr);
138     host->OnAppStateChanged(data);
139 }
140 
141 /*
142 * Feature: AppProcessData
143 * Function: AppProcessData
144 * SubFunction: Marshalling and Unmarshalling
145 * FunctionPoints: Marshalling and Unmarshalling can work normal
146 * EnvConditions: Mobile that can run normal
147 * CaseDescription: 1. Verify process data can write to parcel.
148             2. verify process data can read from parcel.
149 */
150 HWTEST_F(AmsAppStateCallBackTest, AppProcessData_001, TestSize.Level1)
151 {
152     Parcel data;
153     AppData appDataInfo;
154     AppProcessData processData;
155     appDataInfo.appName = "test_name";
156     appDataInfo.uid = 2;
157     processData.appDatas.emplace_back(appDataInfo);
158     processData.pid = 1;
159     processData.appState = ApplicationState::APP_STATE_FOREGROUND;
160 
161     bool ret = processData.Marshalling(data);
162     EXPECT_EQ(true, ret);
163 
164     sptr<AppProcessData> newProcessData = AppProcessData::Unmarshalling(data);
165     EXPECT_NE(nullptr, newProcessData);
166 
167     for (size_t i = 0; i < processData.appDatas.size(); i++) {
168         EXPECT_EQ(processData.appDatas[i].appName, newProcessData->appDatas[i].appName);
169         EXPECT_EQ(processData.appDatas[i].uid, newProcessData->appDatas[i].uid);
170     }
171 
172     EXPECT_EQ(processData.pid, newProcessData->pid);
173     EXPECT_EQ(processData.appState, newProcessData->appState);
174 }
175 }  // namespace AppExecFwk
176 }  // namespace OHOS
177