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