• 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 "mock_ability_token.h"
22 
23 using namespace testing::ext;
24 namespace OHOS {
25 namespace AppExecFwk {
26 class AmsAppStateCallBackTest : public testing::Test {
27 public:
28     static void SetUpTestCase();
29     static void TearDownTestCase();
30     void SetUp();
31     void TearDown();
32 };
33 
SetUpTestCase()34 void AmsAppStateCallBackTest::SetUpTestCase()
35 {}
TearDownTestCase()36 void AmsAppStateCallBackTest::TearDownTestCase()
37 {}
SetUp()38 void AmsAppStateCallBackTest::SetUp()
39 {}
TearDown()40 void AmsAppStateCallBackTest::TearDown()
41 {}
42 
43 /*
44  * Feature: AppStateCallBackHost
45  * Function: AppStateCallBackHost
46  * SubFunction: OnRemoteRequest Function
47  * FunctionPoints: AppStateCallBackHost Onreceived interface
48  * EnvConditions: Mobile that can run ohos test framework
49  * CaseDescription: Verify if Onreceived works when app state changed.
50  */
51 HWTEST_F(AmsAppStateCallBackTest, OnRemoteRequest_001, TestSize.Level1)
52 {
53     sptr<AppStateCallbackHost> host(new AppStateCallbackHost());
54     MessageParcel data;
55     MessageParcel reply;
56     MessageOption option {MessageOption::TF_ASYNC};
57 
58     AppData appDataInfo;
59     AppProcessData processData;
60     appDataInfo.appName = "test_name";
61     appDataInfo.uid = 2;
62     processData.appDatas.emplace_back(appDataInfo);
63     processData.pid = 1;
64     processData.appState = ApplicationState::APP_STATE_FOREGROUND;
65     data.WriteParcelable(&processData);
66     int32_t ret = 0;
67     EXPECT_EQ(0, ret);
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     MessageParcel data;
82     MessageParcel reply;
83     MessageOption option {MessageOption::TF_ASYNC};
84     sptr<IRemoteObject> token = new MockAbilityToken();
85 
86     data.WriteParcelable(token.GetRefPtr());
87     int32_t abilityState = static_cast<int32_t>(AbilityState::ABILITY_STATE_FOREGROUND);
88     data.WriteInt32(abilityState);
89     int32_t ret = 0;
90     EXPECT_EQ(0, ret);
91 }
92 
93 /*
94  * Feature: AppStateCallBackHost
95  * Function: AppStateCallBackHost
96  * SubFunction: OnAbilityRequestDone Function
97  * FunctionPoints: OnAbilityRequestDone Onreceived interface
98  * EnvConditions: Mobile that can run ohos test framework
99  * CaseDescription: Verify if Onreceived works when ability request done.
100  */
101 HWTEST_F(AmsAppStateCallBackTest, OnAbilityRequestDone_001, TestSize.Level1)
102 {
103     sptr<IRemoteObject> token = nullptr;
104     AbilityState state = AbilityState::ABILITY_STATE_BEGIN;
105     sptr<AppStateCallbackHost> host(new AppStateCallbackHost());
106     host->OnAbilityRequestDone(token, state);
107 
108     int32_t ret = 0;
109     EXPECT_EQ(0, ret);
110 }
111 
112 /*
113  * Feature: AppStateCallBackHost
114  * Function: AppStateCallBackHost
115  * SubFunction: OnAppStateChanged Function
116  * FunctionPoints: OnAppStateChanged Onreceived interface
117  * EnvConditions: Mobile that can run ohos test framework
118  * CaseDescription: Verify if Onreceived works when app state changed.
119  */
120 HWTEST_F(AmsAppStateCallBackTest, OnAppStateChanged_001, TestSize.Level1)
121 {
122     AppProcessData data;
123     sptr<AppStateCallbackHost> host(new AppStateCallbackHost());
124     host->OnAppStateChanged(data);
125 
126     int32_t ret = 0;
127     EXPECT_EQ(0, ret);
128 }
129 
130 /*
131 * Feature: AppProcessData
132 * Function: AppProcessData
133 * SubFunction: Marshalling and Unmarshalling
134 * FunctionPoints: Marshalling and Unmarshalling can work normal
135 * EnvConditions: Mobile that can run normal
136 * CaseDescription: 1. Verify process data can write to parcel.
137             2. verify process data can read from parcel.
138 */
139 HWTEST_F(AmsAppStateCallBackTest, AppProcessData_001, TestSize.Level1)
140 {
141     Parcel data;
142     AppData appDataInfo;
143     AppProcessData processData;
144     appDataInfo.appName = "test_name";
145     appDataInfo.uid = 2;
146     processData.appDatas.emplace_back(appDataInfo);
147     processData.pid = 1;
148     processData.appState = ApplicationState::APP_STATE_FOREGROUND;
149 
150     bool ret = processData.Marshalling(data);
151     EXPECT_EQ(true, ret);
152 
153     sptr<AppProcessData> newProcessData = AppProcessData::Unmarshalling(data);
154     EXPECT_NE(nullptr, newProcessData);
155 
156     for (size_t i = 0; i < processData.appDatas.size(); i++) {
157         EXPECT_EQ(processData.appDatas[i].appName, newProcessData->appDatas[i].appName);
158         EXPECT_EQ(processData.appDatas[i].uid, newProcessData->appDatas[i].uid);
159     }
160 
161     EXPECT_EQ(processData.pid, newProcessData->pid);
162     EXPECT_EQ(processData.appState, newProcessData->appState);
163 }
164 }  // namespace AppExecFwk
165 }  // namespace OHOS
166