17c804472Sopenharmony_ci/* 27c804472Sopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd. 37c804472Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 47c804472Sopenharmony_ci * you may not use this file except in compliance with the License. 57c804472Sopenharmony_ci * You may obtain a copy of the License at 67c804472Sopenharmony_ci * 77c804472Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 87c804472Sopenharmony_ci * 97c804472Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 107c804472Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 117c804472Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 127c804472Sopenharmony_ci * See the License for the specific language governing permissions and 137c804472Sopenharmony_ci * limitations under the License. 147c804472Sopenharmony_ci */ 157c804472Sopenharmony_ci 167c804472Sopenharmony_ci#include <string> 177c804472Sopenharmony_ci#include <thread> 187c804472Sopenharmony_ci#include <fstream> 197c804472Sopenharmony_ci#include <cstdio> 207c804472Sopenharmony_ci#include <unistd.h> 217c804472Sopenharmony_ci#include "gtest/gtest.h" 227c804472Sopenharmony_ci#define private public 237c804472Sopenharmony_ci#include "CommandLineInterface.h" 247c804472Sopenharmony_ci#include "CommandLineFactory.h" 257c804472Sopenharmony_ci#include "CommandParser.h" 267c804472Sopenharmony_ci#include "SharedData.h" 277c804472Sopenharmony_ci#include "MockGlobalResult.h" 287c804472Sopenharmony_ci#include "VirtualScreen.h" 297c804472Sopenharmony_ci 307c804472Sopenharmony_cinamespace { 317c804472Sopenharmony_ci std::string g_configPath = R"( 327c804472Sopenharmony_ci { 337c804472Sopenharmony_ci "setting": { 347c804472Sopenharmony_ci "1.0.0": { 357c804472Sopenharmony_ci "KeepScreenOnState": { 367c804472Sopenharmony_ci "args": { 377c804472Sopenharmony_ci "KeepScreenOnState": true 387c804472Sopenharmony_ci } 397c804472Sopenharmony_ci }, 407c804472Sopenharmony_ci "BrightnessMode": { 417c804472Sopenharmony_ci "args": { 427c804472Sopenharmony_ci "BrightnessMode": 0 437c804472Sopenharmony_ci } 447c804472Sopenharmony_ci }, 457c804472Sopenharmony_ci "Brightness": { 467c804472Sopenharmony_ci "args": { 477c804472Sopenharmony_ci "Brightness": 170 487c804472Sopenharmony_ci } 497c804472Sopenharmony_ci }, 507c804472Sopenharmony_ci "WearingState": { 517c804472Sopenharmony_ci "args": { 527c804472Sopenharmony_ci "WearingState": true 537c804472Sopenharmony_ci } 547c804472Sopenharmony_ci }, 557c804472Sopenharmony_ci "Barometer": { 567c804472Sopenharmony_ci "args": { 577c804472Sopenharmony_ci "Barometer": 101325 587c804472Sopenharmony_ci } 597c804472Sopenharmony_ci }, 607c804472Sopenharmony_ci "HeartRate": { 617c804472Sopenharmony_ci "args": { 627c804472Sopenharmony_ci "HeartRate": 100 637c804472Sopenharmony_ci } 647c804472Sopenharmony_ci }, 657c804472Sopenharmony_ci "StepCount": { 667c804472Sopenharmony_ci "args": { 677c804472Sopenharmony_ci "StepCount": 0 687c804472Sopenharmony_ci } 697c804472Sopenharmony_ci }, 707c804472Sopenharmony_ci "Location": { 717c804472Sopenharmony_ci "args": { 727c804472Sopenharmony_ci "latitude": 39.914417, 737c804472Sopenharmony_ci "longitude": 116.39647 747c804472Sopenharmony_ci } 757c804472Sopenharmony_ci }, 767c804472Sopenharmony_ci "ChargeMode": { 777c804472Sopenharmony_ci "args": { 787c804472Sopenharmony_ci "ChargeMode": 0 797c804472Sopenharmony_ci } 807c804472Sopenharmony_ci }, 817c804472Sopenharmony_ci "Power": { 827c804472Sopenharmony_ci "args": { 837c804472Sopenharmony_ci "Power": 0.1 847c804472Sopenharmony_ci } 857c804472Sopenharmony_ci }, 867c804472Sopenharmony_ci "Language": { 877c804472Sopenharmony_ci "args": { 887c804472Sopenharmony_ci "Language": "en-US" 897c804472Sopenharmony_ci } 907c804472Sopenharmony_ci } 917c804472Sopenharmony_ci }, 927c804472Sopenharmony_ci "1.0.1": { 937c804472Sopenharmony_ci "Language": { 947c804472Sopenharmony_ci "args": { 957c804472Sopenharmony_ci "Language": "zh-CN" 967c804472Sopenharmony_ci } 977c804472Sopenharmony_ci } 987c804472Sopenharmony_ci } 997c804472Sopenharmony_ci }, 1007c804472Sopenharmony_ci "frontend": { 1017c804472Sopenharmony_ci "1.0.0": { 1027c804472Sopenharmony_ci "Resolution": { 1037c804472Sopenharmony_ci "args": { 1047c804472Sopenharmony_ci "Resolution": "454*454" 1057c804472Sopenharmony_ci } 1067c804472Sopenharmony_ci }, 1077c804472Sopenharmony_ci "DeviceType": { 1087c804472Sopenharmony_ci "args": { 1097c804472Sopenharmony_ci "DeviceType": "liteWearable" 1107c804472Sopenharmony_ci } 1117c804472Sopenharmony_ci } 1127c804472Sopenharmony_ci } 1137c804472Sopenharmony_ci } 1147c804472Sopenharmony_ci } 1157c804472Sopenharmony_ci )"; 1167c804472Sopenharmony_ci 1177c804472Sopenharmony_ci // 测试复制构造函数是否被删除 1187c804472Sopenharmony_ci TEST(CommandLineInterfaceTest, DefaultConstructorDeletedTest) 1197c804472Sopenharmony_ci { 1207c804472Sopenharmony_ci EXPECT_TRUE(std::is_copy_constructible<CommandLineInterface>::value == false); 1217c804472Sopenharmony_ci } 1227c804472Sopenharmony_ci 1237c804472Sopenharmony_ci // 测试赋值运算符是否被删除 1247c804472Sopenharmony_ci TEST(CommandLineInterfaceTest, AssignmentOperatorDeletedTest) 1257c804472Sopenharmony_ci { 1267c804472Sopenharmony_ci EXPECT_TRUE(std::is_copy_assignable<CommandLineInterface>::value == false); 1277c804472Sopenharmony_ci } 1287c804472Sopenharmony_ci 1297c804472Sopenharmony_ci TEST(CommandLineInterfaceTest, GetInstanceTest) 1307c804472Sopenharmony_ci { 1317c804472Sopenharmony_ci CommandLineInterface& instance1 = CommandLineInterface::GetInstance(); 1327c804472Sopenharmony_ci CommandLineInterface& instance2 = CommandLineInterface::GetInstance(); 1337c804472Sopenharmony_ci EXPECT_EQ(&instance1, &instance2); 1347c804472Sopenharmony_ci } 1357c804472Sopenharmony_ci 1367c804472Sopenharmony_ci TEST(CommandLineInterfaceTest, InitPipeTest) 1377c804472Sopenharmony_ci { 1387c804472Sopenharmony_ci CommandLineInterface::GetInstance().InitPipe("phone"); 1397c804472Sopenharmony_ci EXPECT_TRUE(CommandLineInterface::isPipeConnected); 1407c804472Sopenharmony_ci } 1417c804472Sopenharmony_ci 1427c804472Sopenharmony_ci TEST(CommandLineInterfaceTest, ProcessCommandTest) 1437c804472Sopenharmony_ci { 1447c804472Sopenharmony_ci // normal 1457c804472Sopenharmony_ci g_input = false; 1467c804472Sopenharmony_ci CommandLineInterface::GetInstance().ProcessCommand(); 1477c804472Sopenharmony_ci EXPECT_TRUE(g_input); 1487c804472Sopenharmony_ci // socket is null 1497c804472Sopenharmony_ci g_input = false; 1507c804472Sopenharmony_ci std::unique_ptr<LocalSocket> temp = std::move(CommandLineInterface::GetInstance().socket); 1517c804472Sopenharmony_ci CommandLineInterface::GetInstance().socket = nullptr; 1527c804472Sopenharmony_ci CommandLineInterface::GetInstance().ProcessCommand(); 1537c804472Sopenharmony_ci EXPECT_FALSE(g_input); 1547c804472Sopenharmony_ci CommandLineInterface::GetInstance().socket = std::move(temp); 1557c804472Sopenharmony_ci // isFirstWsSend 1567c804472Sopenharmony_ci g_input = false; 1577c804472Sopenharmony_ci CommandLineInterface::GetInstance().isPipeConnected = true; 1587c804472Sopenharmony_ci VirtualScreen::isWebSocketListening = true; 1597c804472Sopenharmony_ci CommandLineInterface::GetInstance().isFirstWsSend = true; 1607c804472Sopenharmony_ci CommandLineInterface::GetInstance().ProcessCommand(); 1617c804472Sopenharmony_ci EXPECT_FALSE(CommandLineInterface::GetInstance().isFirstWsSend); 1627c804472Sopenharmony_ci EXPECT_TRUE(g_input); 1637c804472Sopenharmony_ci } 1647c804472Sopenharmony_ci 1657c804472Sopenharmony_ci TEST(CommandLineInterfaceTest, ProcessCommandMessageTest) 1667c804472Sopenharmony_ci { 1677c804472Sopenharmony_ci // normal 1687c804472Sopenharmony_ci g_output = false; 1697c804472Sopenharmony_ci std::string msg = R"({"type" : "action", "command" : "MousePress", "version" : "1.0.1"})"; 1707c804472Sopenharmony_ci CommandLineInterface::GetInstance().ProcessCommandMessage(msg); 1717c804472Sopenharmony_ci EXPECT_TRUE(g_output); 1727c804472Sopenharmony_ci // json parse failed 1737c804472Sopenharmony_ci g_output = false; 1747c804472Sopenharmony_ci std::string msg0 = R"({"type" : "aaaaa", "command" : "MousePress", "bbbb" : "1.0.1", "args" : {}})"; 1757c804472Sopenharmony_ci CommandLineInterface::GetInstance().ProcessCommandMessage(""); 1767c804472Sopenharmony_ci EXPECT_FALSE(g_output); 1777c804472Sopenharmony_ci // json args invalid 1787c804472Sopenharmony_ci g_output = false; 1797c804472Sopenharmony_ci std::string msg1 = R"({"type" : "aaaaa", "command" : "MousePress", "bbbb" : "1.0.1"})"; 1807c804472Sopenharmony_ci CommandLineInterface::GetInstance().ProcessCommandMessage(msg1); 1817c804472Sopenharmony_ci EXPECT_FALSE(g_output); 1827c804472Sopenharmony_ci // cmd type error 1837c804472Sopenharmony_ci g_output = false; 1847c804472Sopenharmony_ci std::string msg2 = R"({"type" : "aaaaa", "command" : "MousePress", "version" : "1.0.1"})"; 1857c804472Sopenharmony_ci CommandLineInterface::GetInstance().ProcessCommandMessage(msg2); 1867c804472Sopenharmony_ci EXPECT_FALSE(g_output); 1877c804472Sopenharmony_ci // static card 1887c804472Sopenharmony_ci g_output = false; 1897c804472Sopenharmony_ci CommandParser::GetInstance().staticCard = true; 1907c804472Sopenharmony_ci CommandLineInterface::GetInstance().ProcessCommandMessage(msg); 1917c804472Sopenharmony_ci CommandParser::GetInstance().staticCard = false; 1927c804472Sopenharmony_ci EXPECT_FALSE(g_output); 1937c804472Sopenharmony_ci } 1947c804472Sopenharmony_ci 1957c804472Sopenharmony_ci TEST(CommandLineInterfaceTest, ProcessCommandValidateTest) 1967c804472Sopenharmony_ci { 1977c804472Sopenharmony_ci CommandLineInterface& instance = CommandLineInterface::GetInstance(); 1987c804472Sopenharmony_ci std::string msg = "{}"; 1997c804472Sopenharmony_ci Json2::Value jsonData1 = JsonReader::ParseJsonData2(msg); 2007c804472Sopenharmony_ci EXPECT_FALSE(instance.ProcessCommandValidate(false, jsonData1, "Failed to parse the JSON")); 2017c804472Sopenharmony_ci msg = "[]"; 2027c804472Sopenharmony_ci Json2::Value jsonData2 = JsonReader::ParseJsonData2(msg); 2037c804472Sopenharmony_ci EXPECT_FALSE(instance.ProcessCommandValidate(true, jsonData2, "Command is not a object")); 2047c804472Sopenharmony_ci msg = R"({"type" : "action", "command" : "MousePress"})"; 2057c804472Sopenharmony_ci Json2::Value jsonData3 = JsonReader::ParseJsonData2(msg); 2067c804472Sopenharmony_ci EXPECT_FALSE(instance.ProcessCommandValidate(true, jsonData3, "Command error")); 2077c804472Sopenharmony_ci msg = R"({"type" : "action", "command" : "MousePress", "version" : "s.0.1"})"; 2087c804472Sopenharmony_ci Json2::Value jsonData4 = JsonReader::ParseJsonData2(msg); 2097c804472Sopenharmony_ci EXPECT_FALSE(instance.ProcessCommandValidate(true, jsonData4, "Invalid command version")); 2107c804472Sopenharmony_ci msg = R"({"type" : "action", "command" : "MousePress", "version" : "1.0.1"})"; 2117c804472Sopenharmony_ci Json2::Value jsonData5 = JsonReader::ParseJsonData2(msg); 2127c804472Sopenharmony_ci EXPECT_TRUE(instance.ProcessCommandValidate(true, jsonData5, "")); 2137c804472Sopenharmony_ci } 2147c804472Sopenharmony_ci 2157c804472Sopenharmony_ci TEST(CommandLineInterfaceTest, GetCommandTypeTest) 2167c804472Sopenharmony_ci { 2177c804472Sopenharmony_ci CommandLineInterface& instance = CommandLineInterface::GetInstance(); 2187c804472Sopenharmony_ci EXPECT_EQ(instance.GetCommandType(""), CommandLine::CommandType::INVALID); 2197c804472Sopenharmony_ci EXPECT_EQ(instance.GetCommandType("set"), CommandLine::CommandType::SET); 2207c804472Sopenharmony_ci EXPECT_EQ(instance.GetCommandType("get"), CommandLine::CommandType::GET); 2217c804472Sopenharmony_ci EXPECT_EQ(instance.GetCommandType("action"), CommandLine::CommandType::ACTION); 2227c804472Sopenharmony_ci } 2237c804472Sopenharmony_ci 2247c804472Sopenharmony_ci TEST(CommandLineInterfaceTest, InitTest) 2257c804472Sopenharmony_ci { 2267c804472Sopenharmony_ci CommandLineInterface& instance = CommandLineInterface::GetInstance(); 2277c804472Sopenharmony_ci instance.Init("phone"); 2287c804472Sopenharmony_ci EXPECT_TRUE(CommandLineFactory::typeMap.size() > 0); 2297c804472Sopenharmony_ci EXPECT_TRUE(CommandLineInterface::isPipeConnected); 2307c804472Sopenharmony_ci } 2317c804472Sopenharmony_ci 2327c804472Sopenharmony_ci TEST(CommandLineInterfaceTest, IsStaticIgnoreCmdTest) 2337c804472Sopenharmony_ci { 2347c804472Sopenharmony_ci CommandLineInterface& instance = CommandLineInterface::GetInstance(); 2357c804472Sopenharmony_ci std::string msg = "Language"; 2367c804472Sopenharmony_ci EXPECT_FALSE(instance.IsStaticIgnoreCmd(msg)); 2377c804472Sopenharmony_ci std::string msg1 = "Language1"; 2387c804472Sopenharmony_ci EXPECT_TRUE(instance.IsStaticIgnoreCmd(msg1)); 2397c804472Sopenharmony_ci } 2407c804472Sopenharmony_ci 2417c804472Sopenharmony_ci void InitSharedData(std::string deviceType) 2427c804472Sopenharmony_ci { 2437c804472Sopenharmony_ci if (deviceType == "liteWearable" || "smartVersion") { 2447c804472Sopenharmony_ci SharedData<bool>(SharedDataType::KEEP_SCREEN_ON, true); 2457c804472Sopenharmony_ci SharedData<uint8_t>(SharedDataType::BATTERY_STATUS, (uint8_t)ChargeState::NOCHARGE, 2467c804472Sopenharmony_ci (uint8_t)ChargeState::NOCHARGE, (uint8_t)ChargeState::CHARGING); 2477c804472Sopenharmony_ci // The brightness ranges from 1 to 255. The default value is 255. 2487c804472Sopenharmony_ci SharedData<uint8_t>(SharedDataType::BRIGHTNESS_VALUE, 255, 1, 255); 2497c804472Sopenharmony_ci SharedData<uint8_t>(SharedDataType::BRIGHTNESS_MODE, (uint8_t)BrightnessMode::MANUAL, 2507c804472Sopenharmony_ci (uint8_t)BrightnessMode::MANUAL, (uint8_t)BrightnessMode::AUTO); 2517c804472Sopenharmony_ci // The value ranges from 0 to 999999. The default value is 0. 2527c804472Sopenharmony_ci SharedData<uint32_t>(SharedDataType::SUMSTEP_VALUE, 0, 0, 999999); 2537c804472Sopenharmony_ci // The volume ranges from 0.0 to 1.0. The default value is 1.0. 2547c804472Sopenharmony_ci SharedData<double>(SharedDataType::VOLUME_VALUE, 1.0, 0.0, 1.0); 2557c804472Sopenharmony_ci // Battery level range: 0.0–1.0; default: 1.0 2567c804472Sopenharmony_ci SharedData<double>(SharedDataType::BATTERY_LEVEL, 1.0, 0.0, 1.0); 2577c804472Sopenharmony_ci // Heart rate range: 0 to 255. The default value is 80. 2587c804472Sopenharmony_ci SharedData<uint8_t>(SharedDataType::HEARTBEAT_VALUE, 80, 0, 255); 2597c804472Sopenharmony_ci SharedData<std::string>(SharedDataType::LANGUAGE, "zh-CN"); 2607c804472Sopenharmony_ci // The value ranges from 180 to 180. The default value is 0. 2617c804472Sopenharmony_ci SharedData<double>(SharedDataType::LONGITUDE, 0, -180, 180); 2627c804472Sopenharmony_ci // The atmospheric pressure ranges from 0 to 999900. The default value is 101325. 2637c804472Sopenharmony_ci SharedData<uint32_t>(SharedDataType::PRESSURE_VALUE, 101325, 0, 999900); 2647c804472Sopenharmony_ci SharedData<bool>(SharedDataType::WEARING_STATE, true); 2657c804472Sopenharmony_ci // The value ranges from -90 to 90. The default value is 0. 2667c804472Sopenharmony_ci SharedData<double>(SharedDataType::LATITUDE, 0, -90, 90); 2677c804472Sopenharmony_ci } else { 2687c804472Sopenharmony_ci SharedData<std::string>(SharedDataType::LANGUAGE, "zh_CN"); 2697c804472Sopenharmony_ci SharedData<std::string>(SharedDataType::LAN, "zh"); 2707c804472Sopenharmony_ci SharedData<std::string>(SharedDataType::REGION, "CN"); 2717c804472Sopenharmony_ci } 2727c804472Sopenharmony_ci } 2737c804472Sopenharmony_ci 2747c804472Sopenharmony_ci TEST(CommandLineInterfaceTest, ReadAndApplyConfigTest) 2757c804472Sopenharmony_ci { 2767c804472Sopenharmony_ci std::string deviceType = "liteWearable"; 2777c804472Sopenharmony_ci CommandParser::GetInstance().deviceType = deviceType; 2787c804472Sopenharmony_ci CommandLineInterface& instance = CommandLineInterface::GetInstance(); 2797c804472Sopenharmony_ci // path is empty 2807c804472Sopenharmony_ci instance.ReadAndApplyConfig(""); 2817c804472Sopenharmony_ci EXPECT_FALSE(SharedData<bool>::GetData(SharedDataType::KEEP_SCREEN_ON)); 2827c804472Sopenharmony_ci // path not empty 2837c804472Sopenharmony_ci instance.Init(deviceType); 2847c804472Sopenharmony_ci InitSharedData(deviceType); 2857c804472Sopenharmony_ci char buffer[FILENAME_MAX]; 2867c804472Sopenharmony_ci if (getcwd(buffer, FILENAME_MAX) != nullptr) { 2877c804472Sopenharmony_ci std::string currDir = std::string(buffer); 2887c804472Sopenharmony_ci std::string currFile = currDir + "/config.json"; 2897c804472Sopenharmony_ci // 创建文件流对象并打开文件 2907c804472Sopenharmony_ci std::ofstream file(currFile); 2917c804472Sopenharmony_ci // 检查文件是否成功打开 2927c804472Sopenharmony_ci if (file.is_open()) { 2937c804472Sopenharmony_ci file << g_configPath; 2947c804472Sopenharmony_ci file.close(); 2957c804472Sopenharmony_ci instance.ReadAndApplyConfig(currFile); 2967c804472Sopenharmony_ci } else { 2977c804472Sopenharmony_ci printf("Error creating file!\n");\ 2987c804472Sopenharmony_ci EXPECT_TRUE(false); 2997c804472Sopenharmony_ci } 3007c804472Sopenharmony_ci } else { 3017c804472Sopenharmony_ci printf("error: getcwd failed\n"); 3027c804472Sopenharmony_ci EXPECT_TRUE(false); 3037c804472Sopenharmony_ci } 3047c804472Sopenharmony_ci EXPECT_TRUE(SharedData<bool>::GetData(SharedDataType::KEEP_SCREEN_ON)); 3057c804472Sopenharmony_ci EXPECT_EQ(SharedData<uint8_t>::GetData(SharedDataType::BRIGHTNESS_VALUE), 170); 3067c804472Sopenharmony_ci EXPECT_EQ(SharedData<uint8_t>::GetData(SharedDataType::HEARTBEAT_VALUE), 100); 3077c804472Sopenharmony_ci } 3087c804472Sopenharmony_ci 3097c804472Sopenharmony_ci TEST(CommandLineInterfaceTest, ApplyConfigCommandsTest_Err) 3107c804472Sopenharmony_ci { 3117c804472Sopenharmony_ci g_output = false; 3127c804472Sopenharmony_ci CommandLineInterface::GetInstance().ApplyConfigCommands("MousePress", nullptr); 3137c804472Sopenharmony_ci EXPECT_FALSE(g_output); 3147c804472Sopenharmony_ci } 3157c804472Sopenharmony_ci 3167c804472Sopenharmony_ci TEST(CommandLineInterfaceTest, CreatCommandToSendDataTest_Err) 3177c804472Sopenharmony_ci { 3187c804472Sopenharmony_ci g_output = false; 3197c804472Sopenharmony_ci Json2::Value val; 3207c804472Sopenharmony_ci CommandLineInterface::GetInstance().CreatCommandToSendData("aaaa", val, "set"); 3217c804472Sopenharmony_ci EXPECT_TRUE(g_output); 3227c804472Sopenharmony_ci } 3237c804472Sopenharmony_ci 3247c804472Sopenharmony_ci TEST(CommandLineInterfaceTest, SendJsonDataTest) 3257c804472Sopenharmony_ci { 3267c804472Sopenharmony_ci g_output = false; 3277c804472Sopenharmony_ci std::string msg = R"({"type":"action","command":"MousePress"})"; 3287c804472Sopenharmony_ci Json2::Value jsonData = JsonReader::ParseJsonData2(msg); 3297c804472Sopenharmony_ci CommandLineInterface::SendJsonData(jsonData); 3307c804472Sopenharmony_ci EXPECT_TRUE(g_output); 3317c804472Sopenharmony_ci } 3327c804472Sopenharmony_ci 3337c804472Sopenharmony_ci TEST(CommandLineInterfaceTest, SendJSHeapMemoryTest) 3347c804472Sopenharmony_ci { 3357c804472Sopenharmony_ci g_output = false; 3367c804472Sopenharmony_ci CommandLineInterface::GetInstance().SendJSHeapMemory(1, 1, 1); 3377c804472Sopenharmony_ci EXPECT_TRUE(g_output); 3387c804472Sopenharmony_ci } 3397c804472Sopenharmony_ci 3407c804472Sopenharmony_ci TEST(CommandLineInterfaceTest, SendWebsocketStartupSignalTest) 3417c804472Sopenharmony_ci { 3427c804472Sopenharmony_ci g_output = false; 3437c804472Sopenharmony_ci CommandLineInterface::GetInstance().SendWebsocketStartupSignal(); 3447c804472Sopenharmony_ci EXPECT_TRUE(g_output); 3457c804472Sopenharmony_ci } 3467c804472Sopenharmony_ci 3477c804472Sopenharmony_ci TEST(CommandLineInterfaceTest, CreatCommandToSendDataTest) 3487c804472Sopenharmony_ci { 3497c804472Sopenharmony_ci std::string deviceType = "phone"; 3507c804472Sopenharmony_ci CommandParser::GetInstance().deviceType = deviceType; 3517c804472Sopenharmony_ci CommandLineInterface::GetInstance().Init(deviceType); 3527c804472Sopenharmony_ci g_output = false; 3537c804472Sopenharmony_ci EXPECT_FALSE(g_output); 3547c804472Sopenharmony_ci Json2::Value val; 3557c804472Sopenharmony_ci CommandLineInterface::GetInstance().CreatCommandToSendData("LoadContent", val, "get"); 3567c804472Sopenharmony_ci EXPECT_TRUE(g_output); 3577c804472Sopenharmony_ci } 3587c804472Sopenharmony_ci 3597c804472Sopenharmony_ci TEST(CommandLineInterfaceTest, ApplyConfigMembersTest_Err) 3607c804472Sopenharmony_ci { 3617c804472Sopenharmony_ci std::string deviceType = "liteWearable"; 3627c804472Sopenharmony_ci CommandParser::GetInstance().deviceType = deviceType; 3637c804472Sopenharmony_ci CommandLineInterface::GetInstance().Init(deviceType); 3647c804472Sopenharmony_ci std::string jsonStr = R"({ "Language" : { "args" : { "Language" : "zh-CN" }}, 3657c804472Sopenharmony_ci "Language2" : { "args1" : { "Language" : "zh-CN" }}, 3667c804472Sopenharmony_ci "Language3" : "", 3677c804472Sopenharmony_ci "Language4" : { "args" : ""}})"; 3687c804472Sopenharmony_ci Json2::Value::Members members= { "Language", "Language2", "Language3", "Language4" }; 3697c804472Sopenharmony_ci Json2::Value commands = JsonReader::ParseJsonData2(jsonStr); 3707c804472Sopenharmony_ci CommandLineInterface::GetInstance().ApplyConfigMembers(commands, members); 3717c804472Sopenharmony_ci std::string language = SharedData<std::string>::GetData(SharedDataType::LANGUAGE); 3727c804472Sopenharmony_ci EXPECT_EQ(language, "zh-CN"); 3737c804472Sopenharmony_ci } 3747c804472Sopenharmony_ci 3757c804472Sopenharmony_ci TEST(CommandLineInterfaceTest, ApplyConfigTest_Err) 3767c804472Sopenharmony_ci { 3777c804472Sopenharmony_ci g_output = false; 3787c804472Sopenharmony_ci std::string jsonStr1 = R"({ "setting" : { "1.0.1" : "aaa"}})"; 3797c804472Sopenharmony_ci Json2::Value json1 = JsonReader::ParseJsonData2(jsonStr1); 3807c804472Sopenharmony_ci CommandLineInterface::GetInstance().ApplyConfig(json1); 3817c804472Sopenharmony_ci EXPECT_FALSE(g_output); 3827c804472Sopenharmony_ci g_output = false; 3837c804472Sopenharmony_ci std::string jsonStr2 = R"({ "setting" : "aaa"})"; 3847c804472Sopenharmony_ci Json2::Value json2 = JsonReader::ParseJsonData2(jsonStr2); 3857c804472Sopenharmony_ci CommandLineInterface::GetInstance().ApplyConfig(json2); 3867c804472Sopenharmony_ci EXPECT_FALSE(g_output); 3877c804472Sopenharmony_ci } 3887c804472Sopenharmony_ci 3897c804472Sopenharmony_ci TEST(CommandLineInterfaceTest, SendJSHeapMemoryTest_Err) 3907c804472Sopenharmony_ci { 3917c804472Sopenharmony_ci g_output = false; 3927c804472Sopenharmony_ci std::unique_ptr<LocalSocket> temp = std::move(CommandLineInterface::GetInstance().socket); 3937c804472Sopenharmony_ci CommandLineInterface::GetInstance().socket = nullptr; 3947c804472Sopenharmony_ci CommandLineInterface::GetInstance().SendJSHeapMemory(0, 0, 0); 3957c804472Sopenharmony_ci EXPECT_FALSE(g_output); 3967c804472Sopenharmony_ci CommandLineInterface::GetInstance().socket = std::move(temp); 3977c804472Sopenharmony_ci } 3987c804472Sopenharmony_ci} 399