/* * Copyright (c) 2024 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include #include #include "gtest/gtest.h" #define private public #include "CommandParser.h" namespace { class CommandParserTest : public ::testing::Test { public: CommandParserTest() {} ~CommandParserTest() {} protected: // 在整个测试夹具类执行前执行一次初始化操作 static void SetUpTestCase() { std::stringstream ss1(invalidParams); std::string invalidParam; // 使用空格分割字符串,并存入vector char buffer[FILENAME_MAX]; if (getcwd(buffer, FILENAME_MAX) != nullptr) { currDir = std::string(buffer); currFile = currDir + "/mytestfilename"; // 创建文件流对象并打开文件 std::ofstream file(currFile); // 检查文件是否成功打开 if (file.is_open()) { file.close(); } else { printf("Error creating file!\n"); } } else { printf("error: getcwd failed\n"); } while (std::getline(ss1, invalidParam, ' ')) { invalidParamVec.push_back(invalidParam); if (invalidParam == "=dir=") { invalidParam = currDir; } else if (invalidParam == "=file=") { invalidParam = currFile; } else if (invalidParam == "-h") { continue; // 不存在的参数存储 } validParamVec.push_back(invalidParam); } } // 在整个测试夹具类执行后执行一次清理操作 static void TearDownTestCase() { if (std::remove(currFile.c_str()) != 0) { printf("Error deleting file!\n"); } } static std::vector invalidParamVec; static std::vector validParamVec; static std::string invalidParams; static std::string currDir; static std::string currFile; }; std::string CommandParserTest::currDir = ""; std::string CommandParserTest::currFile = ""; std::vector CommandParserTest::invalidParamVec = {}; std::vector CommandParserTest::validParamVec = {}; std::string CommandParserTest::invalidParams = "-refresh region " "-projectID 138968279 " "-ts trace_70259_commandPipe " "-j =dir= " "-s componentpreviewinstance_1712054594321_1 " "-cpm true " "-device phone " "-shape rect " "-sd 480 " "-ljPath =file= " "-or 1080 2340 " "-cr 1080 2340 " "-fr 1080 2504 " "-f =file= " "-n entry " "-av ACE_2_0 " "-url pages/BigImg_1M " "-pages main_pages " "-arp =dir= " "-pm Stage " "-hsp =dir= " "-l zh_CN " "-cm light " "-o portrait " "-lws 40003 " "-card true " "-p 8888 " "-abn EntryAbility " "-abp ets/entryability/EntryAbility.abc " "-d " "-sm static " "-staticCard true " "-foldable true " "-foldStatus half_fold " "-hs 100000 " "-hf true " "-sid abcDef123 " "-h"; TEST_F(CommandParserTest, IsSetTest) { CommandParser::GetInstance().argsMap.clear(); EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_TRUE(CommandParser::GetInstance().IsSet("arp")); EXPECT_FALSE(CommandParser::GetInstance().IsSet("abc")); } TEST_F(CommandParserTest, IsCommandValidTest2) { CommandParser::GetInstance().argsMap.clear(); EXPECT_FALSE(CommandParser::GetInstance().ProcessCommand(invalidParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); } TEST_F(CommandParserTest, IsCommandValidTest_VErr) { CommandParser::GetInstance().argsMap.clear(); invalidParamVec.push_back("-v"); EXPECT_FALSE(CommandParser::GetInstance().ProcessCommand(invalidParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); } TEST_F(CommandParserTest, IsCommandValidTest_PErr) { CommandParser::GetInstance().argsMap.clear(); auto it = std::find(validParamVec.begin(), validParamVec.end(), "-p"); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "new_value"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "655350"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "8888"; } } TEST_F(CommandParserTest, IsCommandValidTest_JErr) { CommandParser::GetInstance().argsMap.clear(); auto it = std::find(validParamVec.begin(), validParamVec.end(), "-j"); if (it != validParamVec.end()) { *it = "-jjjjj"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end()) { *it = "-j"; } } TEST_F(CommandParserTest, IsCommandValidTest_NErr) { CommandParser::GetInstance().argsMap.clear(); auto it = std::find(validParamVec.begin(), validParamVec.end(), "-n"); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "~!@#$%^&"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { std::string str(257, 'a'); *std::next(it) = str; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "entry"; } } TEST_F(CommandParserTest, IsCommandValidTest_CrOrErr) { CommandParser::GetInstance().argsMap.clear(); // no -cr param auto it = std::find(validParamVec.begin(), validParamVec.end(), "-cr"); if (it != validParamVec.end()) { *it = "~!@#$%^&"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end()) { *it = "-cr"; } // -cr value invalid if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "aaaa"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); // params value invalid if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "4000"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "1080"; } } TEST_F(CommandParserTest, IsCommandValidTest_HsErr) { CommandParser::GetInstance().argsMap.clear(); auto it = std::find(validParamVec.begin(), validParamVec.end(), "-hs"); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "~!@#$%^&"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "524289"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "100000"; } } TEST_F(CommandParserTest, IsCommandValidTest_HfErr) { CommandParser::GetInstance().argsMap.clear(); auto it = std::find(validParamVec.begin(), validParamVec.end(), "-hf"); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "~!@#$%^&"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "true"; } } TEST_F(CommandParserTest, IsCommandValidTest_ShapeErr) { CommandParser::GetInstance().argsMap.clear(); auto it = std::find(validParamVec.begin(), validParamVec.end(), "-shape"); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "~!@#$%^&"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "rect"; } } TEST_F(CommandParserTest, IsCommandValidTest_DeviceErr) { CommandParser::GetInstance().argsMap.clear(); auto it = std::find(validParamVec.begin(), validParamVec.end(), "-device"); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "~!@#$%^&"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "phone"; } } TEST_F(CommandParserTest, IsCommandValidTest_UrlErr) { CommandParser::GetInstance().argsMap.clear(); auto it = std::find(validParamVec.begin(), validParamVec.end(), "-url"); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = ""; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "pages/BigImg_1M"; } } TEST_F(CommandParserTest, IsCommandValidTest_FErr) { CommandParser::GetInstance().argsMap.clear(); auto it = std::find(validParamVec.begin(), validParamVec.end(), "-f"); if (it != validParamVec.end()) { *it = "ffff"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *it = "-f"; *std::next(it) = "pages/BigImg_1M"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = currFile; } } TEST_F(CommandParserTest, IsCommandValidTest_ArpErr) { CommandParser::GetInstance().argsMap.clear(); auto it = std::find(validParamVec.begin(), validParamVec.end(), "-arp"); if (it != validParamVec.end()) { *it = "aaarp"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *it = "-arp"; *std::next(it) = "pages/BigImg_1M"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = currDir; } } TEST_F(CommandParserTest, IsCommandValidTest_PmErr) { CommandParser::GetInstance().argsMap.clear(); auto it = std::find(validParamVec.begin(), validParamVec.end(), "-pm"); if (it != validParamVec.end()) { *it = "aaapm"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *it = "-pm"; *std::next(it) = "aaa"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "Stage"; } } TEST_F(CommandParserTest, IsCommandValidTest_PagesErr) { CommandParser::GetInstance().argsMap.clear(); auto it = std::find(validParamVec.begin(), validParamVec.end(), "-pages"); if (it != validParamVec.end()) { *it = "aaapages"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *it = "-pages"; *std::next(it) = "~!@#$%^"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "main_pages"; } } TEST_F(CommandParserTest, IsCommandValidTest_RefreshErr) { CommandParser::GetInstance().argsMap.clear(); auto it = std::find(validParamVec.begin(), validParamVec.end(), "-refresh"); if (it != validParamVec.end()) { *it = "aaarefresh"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *it = "-refresh"; *std::next(it) = "~!@#$%^"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "region"; } } TEST_F(CommandParserTest, IsCommandValidTest_CardErr) { CommandParser::GetInstance().argsMap.clear(); auto it = std::find(validParamVec.begin(), validParamVec.end(), "-card"); if (it != validParamVec.end()) { *it = "aaacard"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *it = "-card"; *std::next(it) = "~!@#$%^"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "true"; } } TEST_F(CommandParserTest, IsCommandValidTest_ProjectIdErr) { CommandParser::GetInstance().argsMap.clear(); auto it = std::find(validParamVec.begin(), validParamVec.end(), "-projectID"); if (it != validParamVec.end()) { *it = "aaaprojectID"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *it = "-projectID"; *std::next(it) = "~!@#$%^"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "138968279"; } } TEST_F(CommandParserTest, IsCommandValidTest_CmErr) { CommandParser::GetInstance().argsMap.clear(); auto it = std::find(validParamVec.begin(), validParamVec.end(), "-cm"); if (it != validParamVec.end()) { *it = "aaacm"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *it = "-cm"; *std::next(it) = "~!@#$%^"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "light"; } } TEST_F(CommandParserTest, IsCommandValidTest_AvErr) { CommandParser::GetInstance().argsMap.clear(); auto it = std::find(validParamVec.begin(), validParamVec.end(), "-av"); if (it != validParamVec.end()) { *it = "aaaav"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *it = "-av"; *std::next(it) = "~!@#$%^"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "ACE_2_0"; } } TEST_F(CommandParserTest, IsCommandValidTest_OErr) { CommandParser::GetInstance().argsMap.clear(); auto it = std::find(validParamVec.begin(), validParamVec.end(), "-o"); if (it != validParamVec.end()) { *it = "aaao"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *it = "-o"; *std::next(it) = "~!@#$%^"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "portrait"; } } TEST_F(CommandParserTest, IsCommandValidTest_LwsErr) { CommandParser::GetInstance().argsMap.clear(); auto it = std::find(validParamVec.begin(), validParamVec.end(), "-lws"); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "~!@#$%^"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "65536"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "40003"; } } TEST_F(CommandParserTest, IsCommandValidTest_SmErr) { CommandParser::GetInstance().argsMap.clear(); auto it = std::find(validParamVec.begin(), validParamVec.end(), "-sm"); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "~!@#$%^"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "static"; } } TEST_F(CommandParserTest, IsCommandValidTest_HspErr) { CommandParser::GetInstance().argsMap.clear(); auto it = std::find(validParamVec.begin(), validParamVec.end(), "-hsp"); if (it != validParamVec.end()) { *it = "aaahsp"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *it = "-hsp"; *std::next(it) = "~!@#$%^"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = currDir; } } TEST_F(CommandParserTest, IsCommandValidTest_CpmErr) { CommandParser::GetInstance().argsMap.clear(); auto it = std::find(validParamVec.begin(), validParamVec.end(), "-cpm"); if (it != validParamVec.end()) { *it = "aaacpm"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *it = "-cpm"; *std::next(it) = "~!@#$%^"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "true"; } } TEST_F(CommandParserTest, IsCommandValidTest_AbpErr) { CommandParser::GetInstance().argsMap.clear(); // lite device auto it = std::find(validParamVec.begin(), validParamVec.end(), "-device"); if (it != validParamVec.end()) { *std::next(it) = "liteWearable"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end()) { *std::next(it) = "phone"; } // no -d it = std::find(validParamVec.begin(), validParamVec.end(), "-d"); if (it != validParamVec.end()) { *it = "aaad"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end()) { *it = "-d"; } // no -abp CommandParser::GetInstance().argsMap.clear(); it = std::find(validParamVec.begin(), validParamVec.end(), "-abp"); if (it != validParamVec.end()) { *it = "aaaabp"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); // -abp value empty if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *it = "-abp"; *std::next(it) = ""; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "ets/entryability/EntryAbility.abc"; } } TEST_F(CommandParserTest, IsCommandValidTest_AbnErr) { CommandParser::GetInstance().argsMap.clear(); // no -d auto it = std::find(validParamVec.begin(), validParamVec.end(), "-d"); if (it != validParamVec.end()) { *it = "aaad"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end()) { *it = "-d"; } // lite device it = std::find(validParamVec.begin(), validParamVec.end(), "-device"); if (it != validParamVec.end()) { *std::next(it) = "liteWearable"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end()) { *std::next(it) = "phone"; } // no -abn CommandParser::GetInstance().argsMap.clear(); it = std::find(validParamVec.begin(), validParamVec.end(), "-abn"); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *it = "aaaabn"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid()); // -abn value empty if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *it = "-abn"; *std::next(it) = ""; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "EntryAbility"; } } TEST_F(CommandParserTest, IsCommandValidTest_StaticCardErr) { CommandParser::GetInstance().argsMap.clear(); auto it = std::find(validParamVec.begin(), validParamVec.end(), "-staticCard"); if (it != validParamVec.end()) { *it = "aaastaticCard"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *it = "-staticCard"; *std::next(it) = "~!@#$%^"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "true"; } } TEST_F(CommandParserTest, IsCommandValidTest_FoldableErr) { CommandParser::GetInstance().argsMap.clear(); auto it = std::find(validParamVec.begin(), validParamVec.end(), "-foldable"); if (it != validParamVec.end()) { *it = "aaafoldable"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *it = "-foldable"; *std::next(it) = "~!@#$%^"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "true"; } } TEST_F(CommandParserTest, IsCommandValidTest_FoldStatusErr) { CommandParser::GetInstance().argsMap.clear(); // no -foldable auto it = std::find(validParamVec.begin(), validParamVec.end(), "-foldable"); if (it != validParamVec.end()) { *it = "aaafoldable"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid()); // param -foldable value is false if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *it = "-foldable"; *std::next(it) = "false"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "true"; } // param foldStatus value invalid CommandParser::GetInstance().argsMap.clear(); it = std::find(validParamVec.begin(), validParamVec.end(), "-foldStatus"); if (it != validParamVec.end()) { *it = "aaafoldStatus"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end()) { *it = "-foldStatus"; } } TEST_F(CommandParserTest, IsCommandValidTest_FrErr) { CommandParser::GetInstance().argsMap.clear(); // no -foldable auto it = std::find(validParamVec.begin(), validParamVec.end(), "-foldable"); if (it != validParamVec.end()) { *it = "aaafoldable"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid()); // param -foldable value is false if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *it = "-foldable"; *std::next(it) = "false"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "true"; } // no param -fr CommandParser::GetInstance().argsMap.clear(); it = std::find(validParamVec.begin(), validParamVec.end(), "-fr"); if (it != validParamVec.end()) { *it = "aaafr"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end()) { *it = "-fr"; } // param -fr value is invalid it = std::find(validParamVec.begin(), validParamVec.end(), "-fr"); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "aaaa"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "1080"; } } TEST_F(CommandParserTest, IsCommandValidTest_LjPathErr) { CommandParser::GetInstance().argsMap.clear(); auto it = std::find(validParamVec.begin(), validParamVec.end(), "-ljPath"); if (it != validParamVec.end()) { *it = "aaaljPath"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *it = "-ljPath"; *std::next(it) = "~!@#$%^"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = currFile; } } TEST_F(CommandParserTest, IsCommandValidTest_LErr) { CommandParser::GetInstance().argsMap.clear(); auto it = std::find(validParamVec.begin(), validParamVec.end(), "-l"); if (it != validParamVec.end()) { *it = "aaal"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *it = "-l"; *std::next(it) = "~!@#$%^"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "zh_CN"; } } TEST_F(CommandParserTest, IsCommandValidTest_TsErr) { CommandParser::GetInstance().argsMap.clear(); auto it = std::find(validParamVec.begin(), validParamVec.end(), "-ts"); if (it != validParamVec.end()) { *it = "aaats"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *it = "-ts"; *std::next(it) = "~!@#$%^"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "trace_70259_commandPipe"; } } TEST_F(CommandParserTest, IsCommandValidTest_SErr) { CommandParser::GetInstance().argsMap.clear(); auto it = std::find(validParamVec.begin(), validParamVec.end(), "-s"); if (it != validParamVec.end()) { *it = "aaas"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *it = "-s"; *std::next(it) = "~!@#$%^"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "componentpreviewinstance_1712054594321_1"; } } TEST_F(CommandParserTest, IsCommandValidTest_SdErr) { CommandParser::GetInstance().argsMap.clear(); auto it = std::find(validParamVec.begin(), validParamVec.end(), "-sd"); if (it != validParamVec.end()) { *it = "aaasd"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *it = "-sd"; *std::next(it) = "~!@#$%^"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "480"; } } TEST_F(CommandParserTest, IsCommandValidTest1) { CommandParser::GetInstance().argsMap.clear(); EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid()); } TEST_F(CommandParserTest, ValueTest) { std::string str1 = "abcd"; std::string str2 = "rect"; std::string str3 = CommandParser::GetInstance().Value("shape"); EXPECT_EQ(str2, str3); EXPECT_NE(str1, str3); } TEST_F(CommandParserTest, ValuesTest) { std::vector vec1 = {"1111", "2222"}; std::vector vec2 = {"1080", "2340"}; std::vector vec3 = CommandParser::GetInstance().Values("or"); for (int i = 0; i < vec3.size(); i++) { EXPECT_NE(vec1[i], vec3[i]); } for (int i = 0; i < vec3.size(); i++) { EXPECT_EQ(vec2[i], vec3[i]); } } TEST_F(CommandParserTest, RegisterTest) { std::string key = "-abcd"; uint32_t count = 1; CommandParser::GetInstance().Register(key, count, "abcd"); uint32_t num = CommandParser::GetInstance().regsArgsCountMap[key]; std::string helpStr = CommandParser::GetInstance().regsHelpMap[key]; EXPECT_EQ(num, count); EXPECT_EQ(helpStr, "abcd"); } TEST_F(CommandParserTest, IsResolutionValidTest) { int32_t val1 = 0; int32_t val2 = 1; int32_t val3 = 1024; int32_t val4 = 3840; int32_t val5 = 3841; EXPECT_FALSE(CommandParser::GetInstance().IsResolutionValid(val1)); EXPECT_TRUE(CommandParser::GetInstance().IsResolutionValid(val2)); EXPECT_TRUE(CommandParser::GetInstance().IsResolutionValid(val3)); EXPECT_TRUE(CommandParser::GetInstance().IsResolutionValid(val4)); EXPECT_FALSE(CommandParser::GetInstance().IsResolutionValid(val5)); } TEST_F(CommandParserTest, GetOrignalResolutionWidthTest) { int32_t val1 = 1080; EXPECT_EQ(CommandParser::GetInstance().GetOrignalResolutionWidth(), val1); } TEST_F(CommandParserTest, GetOrignalResolutionHeightTest) { int32_t val1 = 2340; EXPECT_EQ(CommandParser::GetInstance().GetOrignalResolutionHeight(), val1); } TEST_F(CommandParserTest, GetCompressionResolutionWidthTest) { int32_t val1 = 1080; EXPECT_EQ(CommandParser::GetInstance().GetCompressionResolutionWidth(), val1); } TEST_F(CommandParserTest, GetCompressionResolutionHeightTest) { int32_t val1 = 2340; EXPECT_EQ(CommandParser::GetInstance().GetCompressionResolutionHeight(), val1); } TEST_F(CommandParserTest, GetJsHeapSizeTest) { int32_t val1 = 100000; EXPECT_EQ(CommandParser::GetInstance().GetJsHeapSize(), val1); } TEST_F(CommandParserTest, GetAppNameTest) { std::string val1 = "entry"; EXPECT_EQ(CommandParser::GetInstance().GetAppName(), val1); } TEST_F(CommandParserTest, IsSendJSHeapTest) { EXPECT_TRUE(CommandParser::GetInstance().IsSendJSHeap()); } TEST_F(CommandParserTest, GetDeviceTypeTest) { EXPECT_EQ(CommandParser::GetInstance().GetDeviceType(), "phone"); } TEST_F(CommandParserTest, IsRegionRefreshTest) { EXPECT_TRUE(CommandParser::GetInstance().IsRegionRefresh()); } TEST_F(CommandParserTest, IsCardDisplayTest) { EXPECT_TRUE(CommandParser::GetInstance().IsCardDisplay()); } TEST_F(CommandParserTest, GetConfigPathTest) { EXPECT_EQ(CommandParser::GetInstance().GetConfigPath(), currFile); } TEST_F(CommandParserTest, GetProjectIDTest) { std::string str = "138968279"; EXPECT_EQ(CommandParser::GetInstance().GetProjectID(), str); } TEST_F(CommandParserTest, GetScreenModeTest) { std::string str = "static"; EXPECT_EQ(CommandParser::GetInstance().GetScreenMode(), CommandParser::ScreenMode::STATIC); } TEST_F(CommandParserTest, GetConfigChangesTest) { EXPECT_EQ(CommandParser::GetInstance().GetConfigChanges(), ""); } TEST_F(CommandParserTest, GetAppResourcePathTest) { EXPECT_EQ(CommandParser::GetInstance().GetAppResourcePath(), currDir); } TEST_F(CommandParserTest, GetScreenShapeTest) { std::string str = "rect"; EXPECT_EQ(CommandParser::GetInstance().GetScreenShape(), str); } TEST_F(CommandParserTest, GetProjectModelTest) { std::string str = "Stage"; EXPECT_EQ(CommandParser::GetInstance().GetProjectModel(), str); } TEST_F(CommandParserTest, GetProjectModelEnumValueTest) { int value = 1; EXPECT_EQ(CommandParser::GetInstance().GetProjectModelEnumValue(), value); } TEST_F(CommandParserTest, GetProjectModelEnumNameTest) { int index = 0; EXPECT_EQ(CommandParser::GetInstance().GetProjectModelEnumName(index), "FA"); index = 1; EXPECT_EQ(CommandParser::GetInstance().GetProjectModelEnumName(index), "Stage"); index = -1; EXPECT_EQ(CommandParser::GetInstance().GetProjectModelEnumName(index), "FA"); index = 2; EXPECT_EQ(CommandParser::GetInstance().GetProjectModelEnumName(index), "FA"); } TEST_F(CommandParserTest, GetPagesTest) { std::string str = "main_pages"; EXPECT_EQ(CommandParser::GetInstance().GetPages(), str); } TEST_F(CommandParserTest, GetContainerSdkPathTest) { EXPECT_EQ(CommandParser::GetInstance().GetContainerSdkPath(), currDir); } TEST_F(CommandParserTest, CheckParamInvalidityTest) { std::string param = "0"; EXPECT_FALSE(CommandParser::GetInstance().CheckParamInvalidity(param, true)); EXPECT_FALSE(CommandParser::GetInstance().CheckParamInvalidity(param, false)); param = "110"; EXPECT_FALSE(CommandParser::GetInstance().CheckParamInvalidity(param, true)); EXPECT_FALSE(CommandParser::GetInstance().CheckParamInvalidity(param, false)); param = "01"; EXPECT_TRUE(CommandParser::GetInstance().CheckParamInvalidity(param, true)); EXPECT_FALSE(CommandParser::GetInstance().CheckParamInvalidity(param, false)); param = "ab01"; EXPECT_TRUE(CommandParser::GetInstance().CheckParamInvalidity(param, true)); EXPECT_FALSE(CommandParser::GetInstance().CheckParamInvalidity(param, false)); param = "0.34"; EXPECT_FALSE(CommandParser::GetInstance().CheckParamInvalidity(param, true)); EXPECT_FALSE(CommandParser::GetInstance().CheckParamInvalidity(param, false)); param = "10.34"; EXPECT_FALSE(CommandParser::GetInstance().CheckParamInvalidity(param, true)); EXPECT_FALSE(CommandParser::GetInstance().CheckParamInvalidity(param, false)); } TEST_F(CommandParserTest, IsComponentModeTest) { EXPECT_TRUE(CommandParser::GetInstance().IsComponentMode()); } TEST_F(CommandParserTest, GetAbilityPathTest) { std::string str = "ets/entryability/EntryAbility.abc"; EXPECT_EQ(CommandParser::GetInstance().GetAbilityPath(), str); } TEST_F(CommandParserTest, GetAbilityNameTest) { std::string str = "EntryAbility"; EXPECT_EQ(CommandParser::GetInstance().GetAbilityName(), str); } TEST_F(CommandParserTest, IsStaticCardTest) { EXPECT_TRUE(CommandParser::GetInstance().IsStaticCard()); } TEST_F(CommandParserTest, IsMainArgLengthInvalidTest) { std::string validStr = "1111111"; EXPECT_FALSE(CommandParser::GetInstance().IsMainArgLengthInvalid(validStr.c_str())); int desiredLength = 1184; char initialChar = '1'; std::string invalidStr(desiredLength, initialChar); EXPECT_TRUE(CommandParser::GetInstance().IsMainArgLengthInvalid(invalidStr.c_str())); } TEST_F(CommandParserTest, IsFoldableTest) { EXPECT_TRUE(CommandParser::GetInstance().IsFoldable()); } TEST_F(CommandParserTest, GetFoldStatusTest) { std::string str = "half_fold"; EXPECT_EQ(CommandParser::GetInstance().GetFoldStatus(), str); } TEST_F(CommandParserTest, GetFoldResolutionWidthTest) { int32_t value = 1080; EXPECT_EQ(CommandParser::GetInstance().GetFoldResolutionWidth(), value); } TEST_F(CommandParserTest, GetFoldResolutionHeightTest) { int32_t value = 2504; EXPECT_EQ(CommandParser::GetInstance().GetFoldResolutionHeight(), value); } TEST_F(CommandParserTest, GetLoaderJsonPathTest) { EXPECT_EQ(CommandParser::GetInstance().GetLoaderJsonPath(), currFile); } TEST_F(CommandParserTest, GetCommandInfoTest) { CommandInfo info; CommandParser::GetInstance().GetCommandInfo(info); EXPECT_EQ(info.deviceType, "phone"); EXPECT_TRUE(info.isComponentMode); } TEST_F(CommandParserTest, GetFoldInfoTest) { FoldInfo info; CommandParser::GetInstance().GetFoldInfo(info); EXPECT_TRUE(info.foldable); EXPECT_EQ(info.foldStatus, "half_fold"); } TEST_F(CommandParserTest, ParseArgsTest) { int argc = 5; char* argv[5]; // 5 is array length // param value length is out of range int desiredLength = 1184; char initialChar = '1'; std::string invalidStr(desiredLength, initialChar); argv[1] = "-p"; argv[2] = const_cast(invalidStr.c_str()); int ret = CommandParser::GetInstance().ParseArgs(argc, argv); EXPECT_EQ(ret, 11); // 11 is expect return value // param value invalid argv[2] = "999999999"; ret = CommandParser::GetInstance().ParseArgs(argc, argv); EXPECT_EQ(ret, 11); // 11 is expect return value argv[2] = "9999"; ret = CommandParser::GetInstance().ParseArgs(argc, argv); EXPECT_EQ(ret, -1); // -1 is expect return valu // invalid param argv[3] = "-v"; ret = CommandParser::GetInstance().ParseArgs(argc, argv); EXPECT_EQ(ret, 0); // 0 is expect return value } TEST_F(CommandParserTest, IsCommandValidTest_SidErr) { CommandParser::GetInstance().argsMap.clear(); auto it = std::find(validParamVec.begin(), validParamVec.end(), "-sid"); if (it != validParamVec.end()) { *it = "aaasid"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *it = "-sid"; *std::next(it) = "abcdefg123"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_FALSE(CommandParser::GetInstance().IsCommandValid()); if (it != validParamVec.end() && std::next(it) != validParamVec.end()) { *std::next(it) = "abcDef123"; } EXPECT_TRUE(CommandParser::GetInstance().ProcessCommand(validParamVec)); EXPECT_TRUE(CommandParser::GetInstance().IsCommandValid()); } }