1 /*
2 * Copyright (c) 2024 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
18 #include "extension_ability_info.h"
19 #include "startup_util.h"
20 #include "want.h"
21
22 using namespace testing::ext;
23 namespace OHOS {
24 namespace AbilityRuntime {
25
26 class StartupUtilTest : public testing::Test {
27 public:
28 static void SetUpTestCase();
29 static void TearDownTestCase();
30 void SetUp();
31 void TearDown();
32 };
33
SetUpTestCase()34 void StartupUtilTest::SetUpTestCase()
35 {}
36
TearDownTestCase()37 void StartupUtilTest::TearDownTestCase()
38 {}
39
SetUp()40 void StartupUtilTest::SetUp()
41 {}
42
TearDown()43 void StartupUtilTest::TearDown()
44 {}
45
46 /**
47 * @tc.name: GetAppIndex_001
48 * @tc.desc: test class StartupUtil number function
49 * @tc.type: FUNC
50 */
HWTEST_F(StartupUtilTest, GetAppIndex_001, TestSize.Level1)51 HWTEST_F(StartupUtilTest, GetAppIndex_001, TestSize.Level1)
52 {
53 AAFwk::Want want;
54 int32_t appIndex = 0;
55 auto queryRet = StartupUtil::GetAppIndex(want, appIndex);
56 EXPECT_TRUE(queryRet);
57 }
58
59 /**
60 * @tc.name: GetAppIndex_002
61 * @tc.desc: test class StartupUtil number function
62 * @tc.type: FUNC
63 */
HWTEST_F(StartupUtilTest, GetAppIndex_002, TestSize.Level1)64 HWTEST_F(StartupUtilTest, GetAppIndex_002, TestSize.Level1)
65 {
66 AAFwk::Want want;
67 want.SetParam(AAFwk::Want::PARAM_APP_CLONE_INDEX_KEY, -1);
68 int32_t appIndex = 0;
69 auto queryRet = StartupUtil::GetAppIndex(want, appIndex);
70 EXPECT_FALSE(queryRet);
71 }
72
73 /**
74 * @tc.name: GetAppIndex_003
75 * @tc.desc: test class StartupUtil number function
76 * @tc.type: FUNC
77 */
HWTEST_F(StartupUtilTest, GetAppIndex_003, TestSize.Level1)78 HWTEST_F(StartupUtilTest, GetAppIndex_003, TestSize.Level1)
79 {
80 AAFwk::Want want;
81 int32_t appIndex = 1001;
82 want.SetParam(AAFwk::Want::PARAM_APP_CLONE_INDEX_KEY, appIndex);
83 auto queryRet = StartupUtil::GetAppIndex(want, appIndex);
84 EXPECT_FALSE(queryRet);
85 }
86
87 /**
88 * @tc.name: IsSupportAppClone_001
89 * @tc.desc: test class StartupUtil number function
90 * @tc.type: FUNC
91 */
HWTEST_F(StartupUtilTest, IsSupportAppClone_001, TestSize.Level1)92 HWTEST_F(StartupUtilTest, IsSupportAppClone_001, TestSize.Level1)
93 {
94 AppExecFwk::ExtensionAbilityType type = AppExecFwk::ExtensionAbilityType::WORK_SCHEDULER;
95 auto queryRet = StartupUtil::IsSupportAppClone(type);
96 EXPECT_TRUE(queryRet);
97 }
98
99 /**
100 * @tc.name: IsSupportAppClone_002
101 * @tc.desc: test class StartupUtil number function
102 * @tc.type: FUNC
103 */
HWTEST_F(StartupUtilTest, IsSupportAppClone_002, TestSize.Level1)104 HWTEST_F(StartupUtilTest, IsSupportAppClone_002, TestSize.Level1)
105 {
106 AppExecFwk::ExtensionAbilityType type = AppExecFwk::ExtensionAbilityType::FORM;
107 auto queryRet = StartupUtil::IsSupportAppClone(type);
108 EXPECT_FALSE(queryRet);
109 }
110
111 /**
112 * @tc.name: GenerateFullRequestCode_001
113 * @tc.desc: test class StartupUtil number function GenerateFullRequestCode
114 * @tc.type: FUNC
115 */
HWTEST_F(StartupUtilTest, GenerateFullRequestCode_001, TestSize.Level1)116 HWTEST_F(StartupUtilTest, GenerateFullRequestCode_001, TestSize.Level1)
117 {
118 auto requestCode = StartupUtil::GenerateFullRequestCode(1, true, 0);
119 EXPECT_EQ(requestCode, 0);
120
121 requestCode = StartupUtil::GenerateFullRequestCode(0, true, 1);
122 EXPECT_EQ(requestCode, 0);
123
124 requestCode = StartupUtil::GenerateFullRequestCode(1, true, 1);
125 uint64_t tempNum = 1;
126 EXPECT_EQ((requestCode & tempNum), 1);
127 EXPECT_EQ((requestCode & (tempNum << 32)), (tempNum << 32));
128 EXPECT_EQ((requestCode & (tempNum << 48)), (tempNum << 48));
129 }
130
131 /**
132 * @tc.name: GenerateFullRequestCode_001
133 * @tc.desc: test class StartupUtil number function ParseFullRequestCode
134 * @tc.type: FUNC
135 */
HWTEST_F(StartupUtilTest, ParseFullRequestCode_001, TestSize.Level1)136 HWTEST_F(StartupUtilTest, ParseFullRequestCode_001, TestSize.Level1)
137 {
138 auto requestInfo = StartupUtil::ParseFullRequestCode(-1);
139 EXPECT_EQ(requestInfo.requestCode, 0);
140
141 requestInfo = StartupUtil::ParseFullRequestCode(0);
142 EXPECT_EQ(requestInfo.requestCode, 0);
143
144 requestInfo = StartupUtil::ParseFullRequestCode(1);
145 EXPECT_EQ(requestInfo.requestCode, 1);
146 EXPECT_EQ(requestInfo.pid, 0);
147 EXPECT_EQ(requestInfo.backFlag, false);
148
149 uint64_t tempNum = 1;
150 requestInfo = StartupUtil::ParseFullRequestCode((tempNum << 49));
151 EXPECT_FALSE(requestInfo.backFlag);
152
153 requestInfo = StartupUtil::ParseFullRequestCode((tempNum << 48));
154 EXPECT_TRUE(requestInfo.backFlag);
155
156 auto requestCode = StartupUtil::GenerateFullRequestCode(1, true, 1);
157 requestInfo = StartupUtil::ParseFullRequestCode(requestCode);
158 EXPECT_EQ(requestInfo.requestCode, 1);
159 EXPECT_EQ(requestInfo.pid, 1);
160 EXPECT_EQ(requestInfo.backFlag, true);
161
162 requestCode = StartupUtil::GenerateFullRequestCode(1, false, 1);
163 requestInfo = StartupUtil::ParseFullRequestCode(requestCode);
164 EXPECT_EQ(requestInfo.requestCode, 1);
165 EXPECT_EQ(requestInfo.pid, 1);
166 EXPECT_EQ(requestInfo.backFlag, false);
167 }
168 } // namespace AbilityRuntime
169 } // namespace OHOS
170