1 /*
2 * Copyright (c) 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 "mission_info_converter_test.h"
17
18 #include "mission/distributed_mission_info.h"
19 #include "mission/mission_constant.h"
20 #include "mission/mission_info_converter.h"
21 #include "parcel_helper.h"
22 #include "test_log.h"
23
24 using namespace testing;
25 using namespace testing::ext;
26
27 namespace OHOS {
28 namespace DistributedSchedule {
29 namespace {
30 const std::string TAG = "MissionInfoConverter";
31 }
32
SetUpTestCase()33 void MissionInfoConverterTest::SetUpTestCase()
34 {
35 }
36
TearDownTestCase()37 void MissionInfoConverterTest::TearDownTestCase()
38 {
39 }
40
SetUp()41 void MissionInfoConverterTest::SetUp()
42 {
43 }
44
TearDown()45 void MissionInfoConverterTest::TearDown()
46 {
47 }
48
49 /**
50 * @tc.name: testConvertToDstbMissionInfos_001
51 * @tc.desc: test ConvertToDstbMissionInfos when missionInfos is empty
52 * @tc.type: FUNC
53 */
54 HWTEST_F(MissionInfoConverterTest, testConvertToDstbMissionInfos_001, TestSize.Level1)
55 {
56 DTEST_LOG << "MissionInfoConverterTest testConvertToDstbMissionInfos_001 begin" << std::endl;
57 std::vector<AAFwk::MissionInfo> missionInfos;
58 std::vector<DstbMissionInfo> dstbMissionInfos;
59 int32_t result = MissionInfoConverter::ConvertToDstbMissionInfos(missionInfos, dstbMissionInfos);
60 EXPECT_EQ(ERR_OK, result);
61 DTEST_LOG << "MissionInfoConverterTest testConvertToDstbMissionInfos_001 end" << std::endl;
62 }
63
64 /**
65 * @tc.name: testConvertToDstbMissionInfos_002
66 * @tc.desc: test ConvertToDstbMissionInfos when missionInfos is not empty
67 * @tc.type: FUNC
68 * @tc.require: I621C1
69 */
70 HWTEST_F(MissionInfoConverterTest, testConvertToDstbMissionInfos_002, TestSize.Level3)
71 {
72 DTEST_LOG << "MissionInfoConverterTest testConvertToDstbMissionInfos_002 begin" << std::endl;
73 std::vector<AAFwk::MissionInfo> missionInfos;
74 std::vector<DstbMissionInfo> dstbMissionInfos;
75 AAFwk::MissionInfo missionInfo;
76 missionInfo.want = AAFwk::Want();
77 missionInfos.emplace_back(missionInfo);
78 int32_t result = MissionInfoConverter::ConvertToDstbMissionInfos(missionInfos, dstbMissionInfos);
79 EXPECT_EQ(ERR_OK, result);
80 EXPECT_FALSE(dstbMissionInfos.empty());
81 DTEST_LOG << "MissionInfoConverterTest testConvertToDstbMissionInfos_002 end" << std::endl;
82 }
83
84 /**
85 * @tc.name: testConvertToMissionInfos_001
86 * @tc.desc: test ConvertToMissionInfos when missionInfos is empty
87 * @tc.type: FUNC
88 */
89 HWTEST_F(MissionInfoConverterTest, testConvertToMissionInfos_001, TestSize.Level1)
90 {
91 DTEST_LOG << "MissionInfoConverterTest testConvertToMissionInfos_001 begin" << std::endl;
92 std::vector<AAFwk::MissionInfo> missionInfos;
93 std::vector<DstbMissionInfo> dstbMissionInfos;
94 int32_t result = MissionInfoConverter::ConvertToMissionInfos(dstbMissionInfos, missionInfos);
95 EXPECT_EQ(ERR_OK, result);
96 DTEST_LOG << "MissionInfoConverterTest testConvertToMissionInfos_001 end" << std::endl;
97 }
98
99 /**
100 * @tc.name: testConvertToMissionInfos_002
101 * @tc.desc: test ConvertToMissionInfos when missionInfos is not empty
102 * @tc.type: FUNC
103 * @tc.require: I621C1
104 */
105 HWTEST_F(MissionInfoConverterTest, testConvertToMissionInfos_002, TestSize.Level3)
106 {
107 DTEST_LOG << "MissionInfoConverterTest testConvertToMissionInfos_002 begin" << std::endl;
108 std::vector<AAFwk::MissionInfo> missionInfos;
109 std::vector<DstbMissionInfo> dstbMissionInfos;
110 DstbMissionInfo dstbMissionInfo;
111 std::shared_ptr<AAFwk::Want> spWant = std::make_shared<AAFwk::Want>();
112 dstbMissionInfo.baseWant = spWant;
113 dstbMissionInfos.emplace_back(dstbMissionInfo);
114 int32_t result = MissionInfoConverter::ConvertToMissionInfos(dstbMissionInfos, missionInfos);
115 EXPECT_EQ(ERR_OK, result);
116 DTEST_LOG << "MissionInfoConverterTest testConvertToMissionInfos_002 end" << std::endl;
117 }
118
119 /**
120 * @tc.name: testWriteMissionInfosToParcel_001
121 * @tc.desc: test WriteMissionInfosToParcel when missionInfos is empty
122 * @tc.type: FUNC
123 */
124 HWTEST_F(MissionInfoConverterTest, testWriteMissionInfosToParcel_001, TestSize.Level1)
125 {
126 DTEST_LOG << "MissionInfoConverterTest testWriteMissionInfosToParcel_001 begin" << std::endl;
127 Parcel parcel;
128 std::vector<AAFwk::MissionInfo> missionInfos;
129 /**
130 * @tc.steps: step1. test WriteMissionInfosToParcel when missionInfos.size is 0;
131 */
132 bool result = MissionInfoConverter::WriteMissionInfosToParcel(parcel, missionInfos);
133 EXPECT_TRUE(result);
134 /**
135 * @tc.steps: step2. test ReadMissionInfosFromParcel when empty is not VALUE_OBJECT;
136 */
137 result = MissionInfoConverter::ReadMissionInfosFromParcel(parcel, missionInfos);
138 EXPECT_TRUE(result);
139 /**
140 * @tc.steps: step3. test WriteMissionInfosToParcel when missionInfos is not empty;
141 */
142 AAFwk::MissionInfo missionInfo;
143 missionInfos.emplace_back(missionInfo);
144 result = MissionInfoConverter::WriteMissionInfosToParcel(parcel, missionInfos);
145 EXPECT_TRUE(result);
146 }
147
148 /**
149 * @tc.name: ReadMissionInfosFromParcel_001
150 * @tc.desc: test ReadMissionInfosFromParcel when missionInfos is empty
151 * @tc.type: FUNC
152 */
153 HWTEST_F(MissionInfoConverterTest, ReadMissionInfosFromParcel_001, TestSize.Level1)
154 {
155 DTEST_LOG << "MissionInfoConverterTest ReadMissionInfosFromParcel_001 begin" << std::endl;
156 MessageParcel parcel;
157 std::vector<AAFwk::MissionInfo> missionInfos;
158 /**
159 * @tc.steps: step1. test ReadMissionInfosFromParcel when len is less than 0;
160 */
161 PARCEL_WRITE_HELPER_NORET(parcel, Int32, 1);
162 PARCEL_WRITE_HELPER_NORET(parcel, Int32, -1);
163 bool result = MissionInfoConverter::ReadMissionInfosFromParcel(parcel, missionInfos);
164 EXPECT_FALSE(result);
165 EXPECT_TRUE(missionInfos.empty());
166 /**
167 * @tc.steps: step2. test ReadMissionInfosFromParcel when len = parcel.GetReadableBytes() + 1;
168 */
169 PARCEL_WRITE_HELPER_NORET(parcel, Int32, 1);
170 PARCEL_WRITE_HELPER_NORET(parcel, Int32, parcel.GetReadableBytes() + 1);
171 result = MissionInfoConverter::ReadMissionInfosFromParcel(parcel, missionInfos);
172 EXPECT_FALSE(result);
173 EXPECT_TRUE(missionInfos.empty());
174 /**
175 * @tc.steps: step3. test ReadMissionInfosFromParcel when len = GET_MAX_MISSIONS + 1;
176 */
177 PARCEL_WRITE_HELPER_NORET(parcel, Int32, 1);
178 PARCEL_WRITE_HELPER_NORET(parcel, Int32, Constants::Mission::GET_MAX_MISSIONS + 1);
179 result = MissionInfoConverter::ReadMissionInfosFromParcel(parcel, missionInfos);
180 EXPECT_FALSE(result);
181 EXPECT_TRUE(missionInfos.empty());
182 /**
183 * @tc.steps: step4. test ReadMissionInfosFromParcel when len = GET_MAX_MISSIONS - 1;
184 */
185 PARCEL_WRITE_HELPER_NORET(parcel, Int32, 1);
186 PARCEL_WRITE_HELPER_NORET(parcel, Int32, Constants::Mission::GET_MAX_MISSIONS - 1);
187 result = MissionInfoConverter::ReadMissionInfosFromParcel(parcel, missionInfos);
188 EXPECT_FALSE(result);
189 EXPECT_TRUE(missionInfos.empty());
190 /**
191 * @tc.steps: step5. test ReadMissionInfosFromParcel when missionInfo is not nullptr;
192 */
193 AAFwk::MissionInfo missionInfo;
194 PARCEL_WRITE_HELPER_NORET(parcel, Int32, 1);
195 PARCEL_WRITE_HELPER_NORET(parcel, Int32, 1);
196 PARCEL_WRITE_HELPER_NORET(parcel, Parcelable, &missionInfo);
197 result = MissionInfoConverter::ReadMissionInfosFromParcel(parcel, missionInfos);
198 EXPECT_TRUE(result);
199 EXPECT_FALSE(missionInfos.empty());
200 DTEST_LOG << "MissionInfoConverterTest ReadMissionInfosFromParcel_001 end" << std::endl;
201 }
202 } // DistributedSchedule
203 } // namespace OHOS