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 #include <string>
16 #include <sstream>
17 #include <vector>
18 #include <fstream>
19 #include <cstdio>
20 #include <unistd.h>
21 #include "gtest/gtest.h"
22 #define private public
23 #include "CommandParser.h"
24 
25 namespace {
26     class CommandParserTest : public ::testing::Test {
27     public:
CommandParserTest()28         CommandParserTest() {}
~CommandParserTest()29         ~CommandParserTest() {}
30     protected:
31         // 在整个测试夹具类执行前执行一次初始化操作
SetUpTestCase()32         static void SetUpTestCase()
33         {
34             std::stringstream ss1(invalidParams);
35             std::string invalidParam;
36             // 使用空格分割字符串,并存入vector
37             char buffer[FILENAME_MAX];
38             if (getcwd(buffer, FILENAME_MAX) != nullptr) {
39                 currDir = std::string(buffer);
40                 currFile = currDir + "/mytestfilename";
41                 // 创建文件流对象并打开文件
42                 std::ofstream file(currFile);
43                 // 检查文件是否成功打开
44                 if (file.is_open()) {
45                     file.close();
46                 } else {
47                     printf("Error creating file!\n");
48                 }
49             } else {
50                 printf("error: getcwd failed\n");
51             }
52             while (std::getline(ss1, invalidParam, ' ')) {
53                 invalidParamVec.push_back(invalidParam);
54                 if (invalidParam == "=dir=") {
55                     invalidParam = currDir;
56                 } else if (invalidParam == "=file=") {
57                     invalidParam = currFile;
58                 } else if (invalidParam == "-h") {
59                     continue; // 不存在的参数存储
60                 }
61                 validParamVec.push_back(invalidParam);
62             }
63         }
64         // 在整个测试夹具类执行后执行一次清理操作
TearDownTestCase()65         static void TearDownTestCase()
66         {
67             if (std::remove(currFile.c_str()) != 0) {
68                 printf("Error deleting file!\n");
69             }
70         }
71 
72         static std::vector<std::string> invalidParamVec;
73         static std::vector<std::string> validParamVec;
74         static std::string invalidParams;
75         static std::string currDir;
76         static std::string currFile;
77     };
78     std::string CommandParserTest::currDir = "";
79     std::string CommandParserTest::currFile = "";
80     std::vector<std::string> CommandParserTest::invalidParamVec = {};
81     std::vector<std::string> CommandParserTest::validParamVec = {};
82     std::string CommandParserTest::invalidParams = "-refresh region "
83         "-projectID 138968279 "
84         "-ts trace_70259_commandPipe "
85         "-j =dir= "
86         "-s componentpreviewinstance_1712054594321_1 "
87         "-cpm true "
88         "-device phone "
89         "-shape rect "
90         "-sd 480 "
91         "-ljPath =file= "
92         "-or 1080 2340 "
93         "-cr 1080 2340 "
94         "-fr 1080 2504 "
95         "-f =file= "
96         "-n entry "
97         "-av ACE_2_0 "
98         "-url pages/BigImg_1M "
99         "-pages main_pages "
100         "-arp =dir= "
101         "-pm Stage "
102         "-hsp =dir= "
103         "-l zh_CN "
104         "-cm light "
105         "-o portrait "
106         "-lws 40003 "
107         "-card true "
108         "-p 8888 "
109         "-abn EntryAbility "
110         "-abp ets/entryability/EntryAbility.abc "
111         "-d "
112         "-sm static "
113         "-staticCard true "
114         "-foldable true "
115         "-foldStatus half_fold "
116         "-hs 100000 "
117         "-hf true "
118         "-h";
119 
TEST_F(CommandParserTest, IsSetTest)120     TEST_F(CommandParserTest, IsSetTest)
121     {
122         CommandParser::GetInstance().argsMap.clear();
123         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
124         EXPECT_TRUE(CommandParser::GetInstance().IsSet("arp"));
125         EXPECT_FALSE(CommandParser::GetInstance().IsSet("abc"));
126     }
127 
TEST_F(CommandParserTest, IsCommandValidTest2)128     TEST_F(CommandParserTest, IsCommandValidTest2)
129     {
130         CommandParser::GetInstance().argsMap.clear();
131         EXPECT_FALSE(CommandParser::GetInstance().ProcessCommand(invalidParamVec));
132         EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid());
133     }
134 
TEST_F(CommandParserTest, IsCommandValidTest_VErr)135     TEST_F(CommandParserTest, IsCommandValidTest_VErr)
136     {
137         CommandParser::GetInstance().argsMap.clear();
138         invalidParamVec.push_back("-v");
139         EXPECT_FALSE(CommandParser::GetInstance().ProcessCommand(invalidParamVec));
140         EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid());
141     }
142 
TEST_F(CommandParserTest, IsCommandValidTest_PErr)143     TEST_F(CommandParserTest, IsCommandValidTest_PErr)
144     {
145         CommandParser::GetInstance().argsMap.clear();
146         auto it = std::find(validParamVec.begin(), validParamVec.end(), "-p");
147         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
148             *std::next(it) = "new_value";
149         }
150         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
151         EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid());
152         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
153             *std::next(it) = "655350";
154         }
155         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
156         EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid());
157         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
158             *std::next(it) = "8888";
159         }
160     }
161 
TEST_F(CommandParserTest, IsCommandValidTest_JErr)162     TEST_F(CommandParserTest, IsCommandValidTest_JErr)
163     {
164         CommandParser::GetInstance().argsMap.clear();
165         auto it = std::find(validParamVec.begin(), validParamVec.end(), "-j");
166         if (it != validParamVec.end()) {
167             *it = "-jjjjj";
168         }
169         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
170         EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid());
171         if (it != validParamVec.end()) {
172             *it = "-j";
173         }
174     }
175 
TEST_F(CommandParserTest, IsCommandValidTest_NErr)176     TEST_F(CommandParserTest, IsCommandValidTest_NErr)
177     {
178         CommandParser::GetInstance().argsMap.clear();
179         auto it = std::find(validParamVec.begin(), validParamVec.end(), "-n");
180         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
181             *std::next(it) = "~!@#$%^&";
182         }
183         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
184         EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid());
185         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
186             std::string str(257, 'a');
187             *std::next(it) = str;
188         }
189         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
190         EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid());
191         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
192             *std::next(it) = "entry";
193         }
194     }
195 
TEST_F(CommandParserTest, IsCommandValidTest_CrOrErr)196     TEST_F(CommandParserTest, IsCommandValidTest_CrOrErr)
197     {
198         CommandParser::GetInstance().argsMap.clear();
199         // no -cr param
200         auto it = std::find(validParamVec.begin(), validParamVec.end(), "-cr");
201         if (it != validParamVec.end()) {
202             *it = "~!@#$%^&";
203         }
204         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
205         EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid());
206         if (it != validParamVec.end()) {
207             *it = "-cr";
208         }
209         // -cr value invalid
210         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
211             *std::next(it) = "aaaa";
212         }
213         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
214         EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid());
215         // params value invalid
216         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
217             *std::next(it) = "4000";
218         }
219         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
220         EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid());
221         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
222             *std::next(it) = "1080";
223         }
224     }
225 
TEST_F(CommandParserTest, IsCommandValidTest_HsErr)226     TEST_F(CommandParserTest, IsCommandValidTest_HsErr)
227     {
228         CommandParser::GetInstance().argsMap.clear();
229         auto it = std::find(validParamVec.begin(), validParamVec.end(), "-hs");
230         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
231             *std::next(it) = "~!@#$%^&";
232         }
233         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
234         EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid());
235         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
236             *std::next(it) = "524289";
237         }
238         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
239         EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid());
240         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
241             *std::next(it) = "100000";
242         }
243     }
244 
TEST_F(CommandParserTest, IsCommandValidTest_HfErr)245     TEST_F(CommandParserTest, IsCommandValidTest_HfErr)
246     {
247         CommandParser::GetInstance().argsMap.clear();
248         auto it = std::find(validParamVec.begin(), validParamVec.end(), "-hf");
249         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
250             *std::next(it) = "~!@#$%^&";
251         }
252         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
253         EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid());
254         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
255             *std::next(it) = "true";
256         }
257     }
258 
TEST_F(CommandParserTest, IsCommandValidTest_ShapeErr)259     TEST_F(CommandParserTest, IsCommandValidTest_ShapeErr)
260     {
261         CommandParser::GetInstance().argsMap.clear();
262         auto it = std::find(validParamVec.begin(), validParamVec.end(), "-shape");
263         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
264             *std::next(it) = "~!@#$%^&";
265         }
266         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
267         EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid());
268         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
269             *std::next(it) = "rect";
270         }
271     }
272 
TEST_F(CommandParserTest, IsCommandValidTest_DeviceErr)273     TEST_F(CommandParserTest, IsCommandValidTest_DeviceErr)
274     {
275         CommandParser::GetInstance().argsMap.clear();
276         auto it = std::find(validParamVec.begin(), validParamVec.end(), "-device");
277         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
278             *std::next(it) = "~!@#$%^&";
279         }
280         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
281         EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid());
282         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
283             *std::next(it) = "phone";
284         }
285     }
286 
TEST_F(CommandParserTest, IsCommandValidTest_UrlErr)287     TEST_F(CommandParserTest, IsCommandValidTest_UrlErr)
288     {
289         CommandParser::GetInstance().argsMap.clear();
290         auto it = std::find(validParamVec.begin(), validParamVec.end(), "-url");
291         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
292             *std::next(it) = "";
293         }
294         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
295         EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid());
296         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
297             *std::next(it) = "pages/BigImg_1M";
298         }
299     }
300 
TEST_F(CommandParserTest, IsCommandValidTest_FErr)301     TEST_F(CommandParserTest, IsCommandValidTest_FErr)
302     {
303         CommandParser::GetInstance().argsMap.clear();
304         auto it = std::find(validParamVec.begin(), validParamVec.end(), "-f");
305         if (it != validParamVec.end()) {
306             *it = "ffff";
307         }
308         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
309         EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid());
310         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
311             *it = "-f";
312             *std::next(it) = "pages/BigImg_1M";
313         }
314         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
315         EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid());
316         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
317             *std::next(it) = currFile;
318         }
319     }
320 
TEST_F(CommandParserTest, IsCommandValidTest_ArpErr)321     TEST_F(CommandParserTest, IsCommandValidTest_ArpErr)
322     {
323         CommandParser::GetInstance().argsMap.clear();
324         auto it = std::find(validParamVec.begin(), validParamVec.end(), "-arp");
325         if (it != validParamVec.end()) {
326             *it = "aaarp";
327         }
328         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
329         EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid());
330         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
331             *it = "-arp";
332             *std::next(it) = "pages/BigImg_1M";
333         }
334         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
335         EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid());
336         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
337             *std::next(it) = currDir;
338         }
339     }
340 
TEST_F(CommandParserTest, IsCommandValidTest_PmErr)341     TEST_F(CommandParserTest, IsCommandValidTest_PmErr)
342     {
343         CommandParser::GetInstance().argsMap.clear();
344         auto it = std::find(validParamVec.begin(), validParamVec.end(), "-pm");
345         if (it != validParamVec.end()) {
346             *it = "aaapm";
347         }
348         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
349         EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid());
350         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
351             *it = "-pm";
352             *std::next(it) = "aaa";
353         }
354         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
355         EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid());
356         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
357             *std::next(it) = "Stage";
358         }
359     }
360 
TEST_F(CommandParserTest, IsCommandValidTest_PagesErr)361     TEST_F(CommandParserTest, IsCommandValidTest_PagesErr)
362     {
363         CommandParser::GetInstance().argsMap.clear();
364         auto it = std::find(validParamVec.begin(), validParamVec.end(), "-pages");
365         if (it != validParamVec.end()) {
366             *it = "aaapages";
367         }
368         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
369         EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid());
370         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
371             *it = "-pages";
372             *std::next(it) = "~!@#$%^";
373         }
374         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
375         EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid());
376         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
377             *std::next(it) = "main_pages";
378         }
379     }
380 
TEST_F(CommandParserTest, IsCommandValidTest_RefreshErr)381     TEST_F(CommandParserTest, IsCommandValidTest_RefreshErr)
382     {
383         CommandParser::GetInstance().argsMap.clear();
384         auto it = std::find(validParamVec.begin(), validParamVec.end(), "-refresh");
385         if (it != validParamVec.end()) {
386             *it = "aaarefresh";
387         }
388         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
389         EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid());
390         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
391             *it = "-refresh";
392             *std::next(it) = "~!@#$%^";
393         }
394         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
395         EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid());
396         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
397             *std::next(it) = "region";
398         }
399     }
400 
TEST_F(CommandParserTest, IsCommandValidTest_CardErr)401     TEST_F(CommandParserTest, IsCommandValidTest_CardErr)
402     {
403         CommandParser::GetInstance().argsMap.clear();
404         auto it = std::find(validParamVec.begin(), validParamVec.end(), "-card");
405         if (it != validParamVec.end()) {
406             *it = "aaacard";
407         }
408         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
409         EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid());
410         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
411             *it = "-card";
412             *std::next(it) = "~!@#$%^";
413         }
414         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
415         EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid());
416         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
417             *std::next(it) = "true";
418         }
419     }
420 
TEST_F(CommandParserTest, IsCommandValidTest_ProjectIdErr)421     TEST_F(CommandParserTest, IsCommandValidTest_ProjectIdErr)
422     {
423         CommandParser::GetInstance().argsMap.clear();
424         auto it = std::find(validParamVec.begin(), validParamVec.end(), "-projectID");
425         if (it != validParamVec.end()) {
426             *it = "aaaprojectID";
427         }
428         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
429         EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid());
430         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
431             *it = "-projectID";
432             *std::next(it) = "~!@#$%^";
433         }
434         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
435         EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid());
436         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
437             *std::next(it) = "138968279";
438         }
439     }
440 
TEST_F(CommandParserTest, IsCommandValidTest_CmErr)441     TEST_F(CommandParserTest, IsCommandValidTest_CmErr)
442     {
443         CommandParser::GetInstance().argsMap.clear();
444         auto it = std::find(validParamVec.begin(), validParamVec.end(), "-cm");
445         if (it != validParamVec.end()) {
446             *it = "aaacm";
447         }
448         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
449         EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid());
450         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
451             *it = "-cm";
452             *std::next(it) = "~!@#$%^";
453         }
454         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
455         EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid());
456         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
457             *std::next(it) = "light";
458         }
459     }
460 
TEST_F(CommandParserTest, IsCommandValidTest_AvErr)461     TEST_F(CommandParserTest, IsCommandValidTest_AvErr)
462     {
463         CommandParser::GetInstance().argsMap.clear();
464         auto it = std::find(validParamVec.begin(), validParamVec.end(), "-av");
465         if (it != validParamVec.end()) {
466             *it = "aaaav";
467         }
468         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
469         EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid());
470         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
471             *it = "-av";
472             *std::next(it) = "~!@#$%^";
473         }
474         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
475         EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid());
476         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
477             *std::next(it) = "ACE_2_0";
478         }
479     }
480 
TEST_F(CommandParserTest, IsCommandValidTest_OErr)481     TEST_F(CommandParserTest, IsCommandValidTest_OErr)
482     {
483         CommandParser::GetInstance().argsMap.clear();
484         auto it = std::find(validParamVec.begin(), validParamVec.end(), "-o");
485         if (it != validParamVec.end()) {
486             *it = "aaao";
487         }
488         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
489         EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid());
490         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
491             *it = "-o";
492             *std::next(it) = "~!@#$%^";
493         }
494         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
495         EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid());
496         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
497             *std::next(it) = "portrait";
498         }
499     }
500 
TEST_F(CommandParserTest, IsCommandValidTest_LwsErr)501     TEST_F(CommandParserTest, IsCommandValidTest_LwsErr)
502     {
503         CommandParser::GetInstance().argsMap.clear();
504         auto it = std::find(validParamVec.begin(), validParamVec.end(), "-lws");
505         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
506             *std::next(it) = "~!@#$%^";
507         }
508         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
509         EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid());
510         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
511             *std::next(it) = "65536";
512         }
513         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
514         EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid());
515         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
516             *std::next(it) = "40003";
517         }
518     }
519 
TEST_F(CommandParserTest, IsCommandValidTest_SmErr)520     TEST_F(CommandParserTest, IsCommandValidTest_SmErr)
521     {
522         CommandParser::GetInstance().argsMap.clear();
523         auto it = std::find(validParamVec.begin(), validParamVec.end(), "-sm");
524         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
525             *std::next(it) = "~!@#$%^";
526         }
527         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
528         EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid());
529         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
530             *std::next(it) = "static";
531         }
532     }
533 
TEST_F(CommandParserTest, IsCommandValidTest_HspErr)534     TEST_F(CommandParserTest, IsCommandValidTest_HspErr)
535     {
536         CommandParser::GetInstance().argsMap.clear();
537         auto it = std::find(validParamVec.begin(), validParamVec.end(), "-hsp");
538         if (it != validParamVec.end()) {
539             *it = "aaahsp";
540         }
541         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
542         EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid());
543         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
544             *it = "-hsp";
545             *std::next(it) = "~!@#$%^";
546         }
547         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
548         EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid());
549         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
550             *std::next(it) = currDir;
551         }
552     }
553 
TEST_F(CommandParserTest, IsCommandValidTest_CpmErr)554     TEST_F(CommandParserTest, IsCommandValidTest_CpmErr)
555     {
556         CommandParser::GetInstance().argsMap.clear();
557         auto it = std::find(validParamVec.begin(), validParamVec.end(), "-cpm");
558         if (it != validParamVec.end()) {
559             *it = "aaacpm";
560         }
561         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
562         EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid());
563         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
564             *it = "-cpm";
565             *std::next(it) = "~!@#$%^";
566         }
567         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
568         EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid());
569         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
570             *std::next(it) = "true";
571         }
572     }
573 
TEST_F(CommandParserTest, IsCommandValidTest_AbpErr)574     TEST_F(CommandParserTest, IsCommandValidTest_AbpErr)
575     {
576         CommandParser::GetInstance().argsMap.clear();
577         // lite device
578         auto it = std::find(validParamVec.begin(), validParamVec.end(), "-device");
579         if (it != validParamVec.end()) {
580             *std::next(it) = "liteWearable";
581         }
582         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
583         EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid());
584         if (it != validParamVec.end()) {
585             *std::next(it) = "phone";
586         }
587         // no -d
588         it = std::find(validParamVec.begin(), validParamVec.end(), "-d");
589         if (it != validParamVec.end()) {
590             *it = "aaad";
591         }
592         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
593         EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid());
594         if (it != validParamVec.end()) {
595             *it = "-d";
596         }
597         // no -abp
598         CommandParser::GetInstance().argsMap.clear();
599         it = std::find(validParamVec.begin(), validParamVec.end(), "-abp");
600         if (it != validParamVec.end()) {
601             *it = "aaaabp";
602         }
603         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
604         EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid());
605         // -abp value empty
606         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
607             *it = "-abp";
608             *std::next(it) = "";
609         }
610         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
611         EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid());
612         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
613             *std::next(it) = "ets/entryability/EntryAbility.abc";
614         }
615     }
616 
TEST_F(CommandParserTest, IsCommandValidTest_AbnErr)617     TEST_F(CommandParserTest, IsCommandValidTest_AbnErr)
618     {
619         CommandParser::GetInstance().argsMap.clear();
620         // no -d
621         auto it = std::find(validParamVec.begin(), validParamVec.end(), "-d");
622         if (it != validParamVec.end()) {
623             *it = "aaad";
624         }
625         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
626         EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid());
627         if (it != validParamVec.end()) {
628             *it = "-d";
629         }
630         // lite device
631         it = std::find(validParamVec.begin(), validParamVec.end(), "-device");
632         if (it != validParamVec.end()) {
633             *std::next(it) = "liteWearable";
634         }
635         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
636         EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid());
637         if (it != validParamVec.end()) {
638             *std::next(it) = "phone";
639         }
640         // no -abn
641         CommandParser::GetInstance().argsMap.clear();
642         it = std::find(validParamVec.begin(), validParamVec.end(), "-abn");
643         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
644             *it = "aaaabn";
645         }
646         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
647         EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid());
648         // -abn value empty
649         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
650             *it = "-abn";
651             *std::next(it) = "";
652         }
653         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
654         EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid());
655         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
656             *std::next(it) = "EntryAbility";
657         }
658     }
659 
TEST_F(CommandParserTest, IsCommandValidTest_StaticCardErr)660     TEST_F(CommandParserTest, IsCommandValidTest_StaticCardErr)
661     {
662         CommandParser::GetInstance().argsMap.clear();
663         auto it = std::find(validParamVec.begin(), validParamVec.end(), "-staticCard");
664         if (it != validParamVec.end()) {
665             *it = "aaastaticCard";
666         }
667         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
668         EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid());
669         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
670             *it = "-staticCard";
671             *std::next(it) = "~!@#$%^";
672         }
673         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
674         EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid());
675         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
676             *std::next(it) = "true";
677         }
678     }
679 
TEST_F(CommandParserTest, IsCommandValidTest_FoldableErr)680     TEST_F(CommandParserTest, IsCommandValidTest_FoldableErr)
681     {
682         CommandParser::GetInstance().argsMap.clear();
683         auto it = std::find(validParamVec.begin(), validParamVec.end(), "-foldable");
684         if (it != validParamVec.end()) {
685             *it = "aaafoldable";
686         }
687         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
688         EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid());
689         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
690             *it = "-foldable";
691             *std::next(it) = "~!@#$%^";
692         }
693         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
694         EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid());
695         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
696             *std::next(it) = "true";
697         }
698     }
699 
TEST_F(CommandParserTest, IsCommandValidTest_FoldStatusErr)700     TEST_F(CommandParserTest, IsCommandValidTest_FoldStatusErr)
701     {
702         CommandParser::GetInstance().argsMap.clear();
703         // no -foldable
704         auto it = std::find(validParamVec.begin(), validParamVec.end(), "-foldable");
705         if (it != validParamVec.end()) {
706             *it = "aaafoldable";
707         }
708         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
709         EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid());
710         // param -foldable value is false
711         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
712             *it = "-foldable";
713             *std::next(it) = "false";
714         }
715         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
716         EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid());
717         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
718             *std::next(it) = "true";
719         }
720         // param foldStatus value invalid
721         CommandParser::GetInstance().argsMap.clear();
722         it = std::find(validParamVec.begin(), validParamVec.end(), "-foldStatus");
723         if (it != validParamVec.end()) {
724             *it = "aaafoldStatus";
725         }
726         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
727         EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid());
728         if (it != validParamVec.end()) {
729             *it = "-foldStatus";
730         }
731     }
732 
TEST_F(CommandParserTest, IsCommandValidTest_FrErr)733     TEST_F(CommandParserTest, IsCommandValidTest_FrErr)
734     {
735         CommandParser::GetInstance().argsMap.clear();
736         // no -foldable
737         auto it = std::find(validParamVec.begin(), validParamVec.end(), "-foldable");
738         if (it != validParamVec.end()) {
739             *it = "aaafoldable";
740         }
741         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
742         EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid());
743         // param -foldable value is false
744         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
745             *it = "-foldable";
746             *std::next(it) = "false";
747         }
748         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
749         EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid());
750         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
751             *std::next(it) = "true";
752         }
753         // no param -fr
754         CommandParser::GetInstance().argsMap.clear();
755         it = std::find(validParamVec.begin(), validParamVec.end(), "-fr");
756         if (it != validParamVec.end()) {
757             *it = "aaafr";
758         }
759         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
760         EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid());
761         if (it != validParamVec.end()) {
762             *it = "-fr";
763         }
764         // param -fr value is invalid
765         it = std::find(validParamVec.begin(), validParamVec.end(), "-fr");
766         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
767             *std::next(it) = "aaaa";
768         }
769         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
770         EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid());
771         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
772             *std::next(it) = "1080";
773         }
774     }
775 
TEST_F(CommandParserTest, IsCommandValidTest_LjPathErr)776     TEST_F(CommandParserTest, IsCommandValidTest_LjPathErr)
777     {
778         CommandParser::GetInstance().argsMap.clear();
779         auto it = std::find(validParamVec.begin(), validParamVec.end(), "-ljPath");
780         if (it != validParamVec.end()) {
781             *it = "aaaljPath";
782         }
783         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
784         EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid());
785         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
786             *it = "-ljPath";
787             *std::next(it) = "~!@#$%^";
788         }
789         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
790         EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid());
791         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
792             *std::next(it) = currFile;
793         }
794     }
795 
TEST_F(CommandParserTest, IsCommandValidTest_LErr)796     TEST_F(CommandParserTest, IsCommandValidTest_LErr)
797     {
798         CommandParser::GetInstance().argsMap.clear();
799         auto it = std::find(validParamVec.begin(), validParamVec.end(), "-l");
800         if (it != validParamVec.end()) {
801             *it = "aaal";
802         }
803         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
804         EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid());
805         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
806             *it = "-l";
807             *std::next(it) = "~!@#$%^";
808         }
809         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
810         EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid());
811         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
812             *std::next(it) = "zh_CN";
813         }
814     }
815 
TEST_F(CommandParserTest, IsCommandValidTest_TsErr)816     TEST_F(CommandParserTest, IsCommandValidTest_TsErr)
817     {
818         CommandParser::GetInstance().argsMap.clear();
819         auto it = std::find(validParamVec.begin(), validParamVec.end(), "-ts");
820         if (it != validParamVec.end()) {
821             *it = "aaats";
822         }
823         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
824         EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid());
825         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
826             *it = "-ts";
827             *std::next(it) = "~!@#$%^";
828         }
829         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
830         EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid());
831         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
832             *std::next(it) = "trace_70259_commandPipe";
833         }
834     }
835 
TEST_F(CommandParserTest, IsCommandValidTest_SErr)836     TEST_F(CommandParserTest, IsCommandValidTest_SErr)
837     {
838         CommandParser::GetInstance().argsMap.clear();
839         auto it = std::find(validParamVec.begin(), validParamVec.end(), "-s");
840         if (it != validParamVec.end()) {
841             *it = "aaas";
842         }
843         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
844         EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid());
845         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
846             *it = "-s";
847             *std::next(it) = "~!@#$%^";
848         }
849         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
850         EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid());
851         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
852             *std::next(it) = "componentpreviewinstance_1712054594321_1";
853         }
854     }
855 
TEST_F(CommandParserTest, IsCommandValidTest_SdErr)856     TEST_F(CommandParserTest, IsCommandValidTest_SdErr)
857     {
858         CommandParser::GetInstance().argsMap.clear();
859         auto it = std::find(validParamVec.begin(), validParamVec.end(), "-sd");
860         if (it != validParamVec.end()) {
861             *it = "aaasd";
862         }
863         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
864         EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid());
865         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
866             *it = "-sd";
867             *std::next(it) = "~!@#$%^";
868         }
869         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
870         EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid());
871         if (it != validParamVec.end() && std::next(it) != validParamVec.end()) {
872             *std::next(it) = "480";
873         }
874     }
875 
876 
TEST_F(CommandParserTest, IsCommandValidTest1)877     TEST_F(CommandParserTest, IsCommandValidTest1)
878     {
879         CommandParser::GetInstance().argsMap.clear();
880         EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec));
881         EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid());
882     }
883 
TEST_F(CommandParserTest, ValueTest)884     TEST_F(CommandParserTest, ValueTest)
885     {
886         std::string str1 = "abcd";
887         std::string str2 = "rect";
888         std::string str3 = CommandParser::GetInstance().Value("shape");
889         EXPECT_EQ(str2, str3);
890         EXPECT_NE(str1, str3);
891     }
892 
TEST_F(CommandParserTest, ValuesTest)893     TEST_F(CommandParserTest, ValuesTest)
894     {
895         std::vector<std::string> vec1 = {"1111", "2222"};
896         std::vector<std::string> vec2 = {"1080", "2340"};
897         std::vector<std::string> vec3 = CommandParser::GetInstance().Values("or");
898         for (int i = 0; i < vec3.size(); i++) {
899             EXPECT_NE(vec1[i], vec3[i]);
900         }
901         for (int i = 0; i < vec3.size(); i++) {
902             EXPECT_EQ(vec2[i], vec3[i]);
903         }
904     }
905 
TEST_F(CommandParserTest, RegisterTest)906     TEST_F(CommandParserTest, RegisterTest)
907     {
908         std::string key = "-abcd";
909         uint32_t count = 1;
910         CommandParser::GetInstance().Register(key, count, "abcd");
911         uint32_t num = CommandParser::GetInstance().regsArgsCountMap[key];
912         std::string helpStr = CommandParser::GetInstance().regsHelpMap[key];
913         EXPECT_EQ(num, count);
914         EXPECT_EQ(helpStr, "abcd");
915     }
916 
TEST_F(CommandParserTest, IsResolutionValidTest)917     TEST_F(CommandParserTest, IsResolutionValidTest)
918     {
919         int32_t val1 = 0;
920         int32_t val2 = 1;
921         int32_t val3 = 1024;
922         int32_t val4 = 3840;
923         int32_t val5 = 3841;
924         EXPECT_FALSE(CommandParser::GetInstance().IsResolutionValid(val1));
925         EXPECT_TRUE(CommandParser::GetInstance().IsResolutionValid(val2));
926         EXPECT_TRUE(CommandParser::GetInstance().IsResolutionValid(val3));
927         EXPECT_TRUE(CommandParser::GetInstance().IsResolutionValid(val4));
928         EXPECT_FALSE(CommandParser::GetInstance().IsResolutionValid(val5));
929     }
930 
TEST_F(CommandParserTest, GetOrignalResolutionWidthTest)931     TEST_F(CommandParserTest, GetOrignalResolutionWidthTest)
932     {
933         int32_t val1 = 1080;
934         EXPECT_EQ(CommandParser::GetInstance().GetOrignalResolutionWidth(), val1);
935     }
936 
TEST_F(CommandParserTest, GetOrignalResolutionHeightTest)937     TEST_F(CommandParserTest, GetOrignalResolutionHeightTest)
938     {
939         int32_t val1 = 2340;
940         EXPECT_EQ(CommandParser::GetInstance().GetOrignalResolutionHeight(), val1);
941     }
942 
TEST_F(CommandParserTest, GetCompressionResolutionWidthTest)943     TEST_F(CommandParserTest, GetCompressionResolutionWidthTest)
944     {
945         int32_t val1 = 1080;
946         EXPECT_EQ(CommandParser::GetInstance().GetCompressionResolutionWidth(), val1);
947     }
948 
TEST_F(CommandParserTest, GetCompressionResolutionHeightTest)949     TEST_F(CommandParserTest, GetCompressionResolutionHeightTest)
950     {
951         int32_t val1 = 2340;
952         EXPECT_EQ(CommandParser::GetInstance().GetCompressionResolutionHeight(), val1);
953     }
954 
TEST_F(CommandParserTest, GetJsHeapSizeTest)955     TEST_F(CommandParserTest, GetJsHeapSizeTest)
956     {
957         int32_t val1 = 100000;
958         EXPECT_EQ(CommandParser::GetInstance().GetJsHeapSize(), val1);
959     }
960 
TEST_F(CommandParserTest, GetAppNameTest)961     TEST_F(CommandParserTest, GetAppNameTest)
962     {
963         std::string val1 = "entry";
964         EXPECT_EQ(CommandParser::GetInstance().GetAppName(), val1);
965     }
966 
TEST_F(CommandParserTest, IsSendJSHeapTest)967     TEST_F(CommandParserTest, IsSendJSHeapTest)
968     {
969         EXPECT_TRUE(CommandParser::GetInstance().IsSendJSHeap());
970     }
971 
TEST_F(CommandParserTest, GetDeviceTypeTest)972     TEST_F(CommandParserTest, GetDeviceTypeTest)
973     {
974         EXPECT_EQ(CommandParser::GetInstance().GetDeviceType(), "phone");
975     }
976 
TEST_F(CommandParserTest, IsRegionRefreshTest)977     TEST_F(CommandParserTest, IsRegionRefreshTest)
978     {
979         EXPECT_TRUE(CommandParser::GetInstance().IsRegionRefresh());
980     }
981 
TEST_F(CommandParserTest, IsCardDisplayTest)982     TEST_F(CommandParserTest, IsCardDisplayTest)
983     {
984         EXPECT_TRUE(CommandParser::GetInstance().IsCardDisplay());
985     }
986 
TEST_F(CommandParserTest, GetConfigPathTest)987     TEST_F(CommandParserTest, GetConfigPathTest)
988     {
989         EXPECT_EQ(CommandParser::GetInstance().GetConfigPath(), currFile);
990     }
991 
TEST_F(CommandParserTest, GetProjectIDTest)992     TEST_F(CommandParserTest, GetProjectIDTest)
993     {
994         std::string str = "138968279";
995         EXPECT_EQ(CommandParser::GetInstance().GetProjectID(), str);
996     }
997 
TEST_F(CommandParserTest, GetScreenModeTest)998     TEST_F(CommandParserTest, GetScreenModeTest)
999     {
1000         std::string str = "static";
1001         EXPECT_EQ(CommandParser::GetInstance().GetScreenMode(), CommandParser::ScreenMode::STATIC);
1002     }
1003 
TEST_F(CommandParserTest, GetConfigChangesTest)1004     TEST_F(CommandParserTest, GetConfigChangesTest)
1005     {
1006         EXPECT_EQ(CommandParser::GetInstance().GetConfigChanges(), "");
1007     }
1008 
TEST_F(CommandParserTest, GetAppResourcePathTest)1009     TEST_F(CommandParserTest, GetAppResourcePathTest)
1010     {
1011         EXPECT_EQ(CommandParser::GetInstance().GetAppResourcePath(), currDir);
1012     }
1013 
TEST_F(CommandParserTest, GetScreenShapeTest)1014     TEST_F(CommandParserTest, GetScreenShapeTest)
1015     {
1016         std::string str = "rect";
1017         EXPECT_EQ(CommandParser::GetInstance().GetScreenShape(), str);
1018     }
1019 
TEST_F(CommandParserTest, GetProjectModelTest)1020     TEST_F(CommandParserTest, GetProjectModelTest)
1021     {
1022         std::string str = "Stage";
1023         EXPECT_EQ(CommandParser::GetInstance().GetProjectModel(), str);
1024     }
1025 
TEST_F(CommandParserTest, GetProjectModelEnumValueTest)1026     TEST_F(CommandParserTest, GetProjectModelEnumValueTest)
1027     {
1028         int value = 1;
1029         EXPECT_EQ(CommandParser::GetInstance().GetProjectModelEnumValue(), value);
1030     }
1031 
TEST_F(CommandParserTest, GetProjectModelEnumNameTest)1032     TEST_F(CommandParserTest, GetProjectModelEnumNameTest)
1033     {
1034         int index = 0;
1035         EXPECT_EQ(CommandParser::GetInstance().GetProjectModelEnumName(index), "FA");
1036         index = 1;
1037         EXPECT_EQ(CommandParser::GetInstance().GetProjectModelEnumName(index), "Stage");
1038         index = -1;
1039         EXPECT_EQ(CommandParser::GetInstance().GetProjectModelEnumName(index), "FA");
1040         index = 2;
1041         EXPECT_EQ(CommandParser::GetInstance().GetProjectModelEnumName(index), "FA");
1042     }
1043 
TEST_F(CommandParserTest, GetPagesTest)1044     TEST_F(CommandParserTest, GetPagesTest)
1045     {
1046         std::string str = "main_pages";
1047         EXPECT_EQ(CommandParser::GetInstance().GetPages(), str);
1048     }
1049 
TEST_F(CommandParserTest, GetContainerSdkPathTest)1050     TEST_F(CommandParserTest, GetContainerSdkPathTest)
1051     {
1052         EXPECT_EQ(CommandParser::GetInstance().GetContainerSdkPath(), currDir);
1053     }
1054 
TEST_F(CommandParserTest, CheckParamInvalidityTest)1055     TEST_F(CommandParserTest, CheckParamInvalidityTest)
1056     {
1057         std::string param = "0";
1058         EXPECT_FALSE(CommandParser::GetInstance().CheckParamInvalidity(param, true));
1059         EXPECT_FALSE(CommandParser::GetInstance().CheckParamInvalidity(param, false));
1060         param = "110";
1061         EXPECT_FALSE(CommandParser::GetInstance().CheckParamInvalidity(param, true));
1062         EXPECT_FALSE(CommandParser::GetInstance().CheckParamInvalidity(param, false));
1063         param = "01";
1064         EXPECT_TRUE(CommandParser::GetInstance().CheckParamInvalidity(param, true));
1065         EXPECT_FALSE(CommandParser::GetInstance().CheckParamInvalidity(param, false));
1066         param = "ab01";
1067         EXPECT_TRUE(CommandParser::GetInstance().CheckParamInvalidity(param, true));
1068         EXPECT_FALSE(CommandParser::GetInstance().CheckParamInvalidity(param, false));
1069         param = "0.34";
1070         EXPECT_FALSE(CommandParser::GetInstance().CheckParamInvalidity(param, true));
1071         EXPECT_FALSE(CommandParser::GetInstance().CheckParamInvalidity(param, false));
1072         param = "10.34";
1073         EXPECT_FALSE(CommandParser::GetInstance().CheckParamInvalidity(param, true));
1074         EXPECT_FALSE(CommandParser::GetInstance().CheckParamInvalidity(param, false));
1075     }
1076 
TEST_F(CommandParserTest, IsComponentModeTest)1077     TEST_F(CommandParserTest, IsComponentModeTest)
1078     {
1079         EXPECT_TRUE(CommandParser::GetInstance().IsComponentMode());
1080     }
1081 
TEST_F(CommandParserTest, GetAbilityPathTest)1082     TEST_F(CommandParserTest, GetAbilityPathTest)
1083     {
1084         std::string str = "ets/entryability/EntryAbility.abc";
1085         EXPECT_EQ(CommandParser::GetInstance().GetAbilityPath(), str);
1086     }
1087 
TEST_F(CommandParserTest, GetAbilityNameTest)1088     TEST_F(CommandParserTest, GetAbilityNameTest)
1089     {
1090         std::string str = "EntryAbility";
1091         EXPECT_EQ(CommandParser::GetInstance().GetAbilityName(), str);
1092     }
1093 
TEST_F(CommandParserTest, IsStaticCardTest)1094     TEST_F(CommandParserTest, IsStaticCardTest)
1095     {
1096         EXPECT_TRUE(CommandParser::GetInstance().IsStaticCard());
1097     }
1098 
TEST_F(CommandParserTest, IsMainArgLengthInvalidTest)1099     TEST_F(CommandParserTest, IsMainArgLengthInvalidTest)
1100     {
1101         std::string validStr = "1111111";
1102         EXPECT_FALSE(CommandParser::GetInstance().IsMainArgLengthInvalid(validStr.c_str()));
1103         int desiredLength = 1184;
1104         char initialChar = '1';
1105         std::string invalidStr(desiredLength, initialChar);
1106         EXPECT_TRUE(CommandParser::GetInstance().IsMainArgLengthInvalid(invalidStr.c_str()));
1107     }
1108 
TEST_F(CommandParserTest, IsFoldableTest)1109     TEST_F(CommandParserTest, IsFoldableTest)
1110     {
1111         EXPECT_TRUE(CommandParser::GetInstance().IsFoldable());
1112     }
1113 
TEST_F(CommandParserTest, GetFoldStatusTest)1114     TEST_F(CommandParserTest, GetFoldStatusTest)
1115     {
1116         std::string str = "half_fold";
1117         EXPECT_EQ(CommandParser::GetInstance().GetFoldStatus(), str);
1118     }
1119 
TEST_F(CommandParserTest, GetFoldResolutionWidthTest)1120     TEST_F(CommandParserTest, GetFoldResolutionWidthTest)
1121     {
1122         int32_t value = 1080;
1123         EXPECT_EQ(CommandParser::GetInstance().GetFoldResolutionWidth(), value);
1124     }
1125 
TEST_F(CommandParserTest, GetFoldResolutionHeightTest)1126     TEST_F(CommandParserTest, GetFoldResolutionHeightTest)
1127     {
1128         int32_t value = 2504;
1129         EXPECT_EQ(CommandParser::GetInstance().GetFoldResolutionHeight(), value);
1130     }
1131 
TEST_F(CommandParserTest, GetLoaderJsonPathTest)1132     TEST_F(CommandParserTest, GetLoaderJsonPathTest)
1133     {
1134         EXPECT_EQ(CommandParser::GetInstance().GetLoaderJsonPath(), currFile);
1135     }
1136 
TEST_F(CommandParserTest, GetCommandInfoTest)1137     TEST_F(CommandParserTest, GetCommandInfoTest)
1138     {
1139         CommandInfo info;
1140         CommandParser::GetInstance().GetCommandInfo(info);
1141         EXPECT_EQ(info.deviceType, "phone");
1142         EXPECT_TRUE(info.isComponentMode);
1143     }
1144 
TEST_F(CommandParserTest, GetFoldInfoTest)1145     TEST_F(CommandParserTest, GetFoldInfoTest)
1146     {
1147         FoldInfo info;
1148         CommandParser::GetInstance().GetFoldInfo(info);
1149         EXPECT_TRUE(info.foldable);
1150         EXPECT_EQ(info.foldStatus, "half_fold");
1151     }
1152 
TEST_F(CommandParserTest, ParseArgsTest)1153     TEST_F(CommandParserTest, ParseArgsTest)
1154     {
1155         int argc = 5;
1156         char* argv[5]; // 5 is array length
1157         // param value length is out of range
1158         int desiredLength = 1184;
1159         char initialChar = '1';
1160         std::string invalidStr(desiredLength, initialChar);
1161         argv[1] = "-p";
1162         argv[2] = const_cast<char*>(invalidStr.c_str());
1163         int ret = CommandParser::GetInstance().ParseArgs(argc, argv);
1164         EXPECT_EQ(ret, 11); // 11 is expect return value
1165         // param value invalid
1166         argv[2] = "999999999";
1167         ret = CommandParser::GetInstance().ParseArgs(argc, argv);
1168         EXPECT_EQ(ret, 11); // 11 is expect return value
1169         argv[2] = "9999";
1170         ret = CommandParser::GetInstance().ParseArgs(argc, argv);
1171         EXPECT_EQ(ret, -1); // -1 is expect return valu
1172         // invalid param
1173         argv[3] = "-v";
1174         ret = CommandParser::GetInstance().ParseArgs(argc, argv);
1175         EXPECT_EQ(ret, 0); // 0 is expect return value
1176     }
1177 }