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#include <string> 167c804472Sopenharmony_ci#include <sys/stat.h> 177c804472Sopenharmony_ci#include "gtest/gtest.h" 187c804472Sopenharmony_ci#include "window.h" 197c804472Sopenharmony_ci#define private public 207c804472Sopenharmony_ci#define protected public 217c804472Sopenharmony_ci#include "MockGlobalResult.h" 227c804472Sopenharmony_ci#include "JsAppImpl.h" 237c804472Sopenharmony_ci#include "CommandLineInterface.h" 247c804472Sopenharmony_ci#include "CommandParser.h" 257c804472Sopenharmony_ci#include "VirtualScreenImpl.h" 267c804472Sopenharmony_ci#include "window_model.h" 277c804472Sopenharmony_ci#include "window_display.h" 287c804472Sopenharmony_ci#include "FileSystem.h" 297c804472Sopenharmony_ci#include "ace_preview_helper.h" 307c804472Sopenharmony_ci#include "window_model.h" 317c804472Sopenharmony_ci 327c804472Sopenharmony_cinamespace { 337c804472Sopenharmony_ci class JsAppImplTest : public ::testing::Test { 347c804472Sopenharmony_ci public: 357c804472Sopenharmony_ci JsAppImplTest() {} 367c804472Sopenharmony_ci ~JsAppImplTest() {} 377c804472Sopenharmony_ci protected: 387c804472Sopenharmony_ci static void WriteFile(std::string testFile, std::string fileContent) 397c804472Sopenharmony_ci { 407c804472Sopenharmony_ci std::ofstream file(testFile, std::ios::out | std::ios::in | std::ios_base::trunc); 417c804472Sopenharmony_ci if (file.is_open()) { 427c804472Sopenharmony_ci file << fileContent; 437c804472Sopenharmony_ci file.close(); 447c804472Sopenharmony_ci } else { 457c804472Sopenharmony_ci printf("Error open file!\n"); 467c804472Sopenharmony_ci } 477c804472Sopenharmony_ci } 487c804472Sopenharmony_ci 497c804472Sopenharmony_ci static void SetUpTestCase() 507c804472Sopenharmony_ci { 517c804472Sopenharmony_ci CommandLineInterface::GetInstance().Init("pipeName"); 527c804472Sopenharmony_ci char buffer[FILENAME_MAX]; 537c804472Sopenharmony_ci if (getcwd(buffer, FILENAME_MAX) != nullptr) { 547c804472Sopenharmony_ci testDir = std::string(buffer); 557c804472Sopenharmony_ci } else { 567c804472Sopenharmony_ci printf("error: getcwd failed\n"); 577c804472Sopenharmony_ci } 587c804472Sopenharmony_ci } 597c804472Sopenharmony_ci 607c804472Sopenharmony_ci static std::string testDir; 617c804472Sopenharmony_ci }; 627c804472Sopenharmony_ci std::string JsAppImplTest::testDir = ""; 637c804472Sopenharmony_ci 647c804472Sopenharmony_ci // 测试拷贝构造函数是否被删除 657c804472Sopenharmony_ci TEST_F(JsAppImplTest, CopyConstructorDeletedTest) 667c804472Sopenharmony_ci { 677c804472Sopenharmony_ci EXPECT_TRUE(std::is_copy_constructible<JsApp>::value == false); 687c804472Sopenharmony_ci } 697c804472Sopenharmony_ci 707c804472Sopenharmony_ci // 测试赋值运算符是否被删除 717c804472Sopenharmony_ci TEST_F(JsAppImplTest, AssignmentOperatorDeletedTest) 727c804472Sopenharmony_ci { 737c804472Sopenharmony_ci EXPECT_TRUE(std::is_copy_assignable<JsApp>::value == false); 747c804472Sopenharmony_ci } 757c804472Sopenharmony_ci 767c804472Sopenharmony_ci TEST_F(JsAppImplTest, StartTest) 777c804472Sopenharmony_ci { 787c804472Sopenharmony_ci JsAppImpl::GetInstance().isStop = false; 797c804472Sopenharmony_ci std::thread thread1([]() { 807c804472Sopenharmony_ci JsAppImpl::GetInstance().Start(); 817c804472Sopenharmony_ci }); 827c804472Sopenharmony_ci thread1.detach(); 837c804472Sopenharmony_ci std::this_thread::sleep_for(std::chrono::milliseconds(10)); 847c804472Sopenharmony_ci JsAppImpl::GetInstance().isStop = true; 857c804472Sopenharmony_ci std::this_thread::sleep_for(std::chrono::milliseconds(10)); 867c804472Sopenharmony_ci EXPECT_TRUE(JsAppImpl::GetInstance().isFinished); 877c804472Sopenharmony_ci } 887c804472Sopenharmony_ci 897c804472Sopenharmony_ci TEST_F(JsAppImplTest, RestartTest) 907c804472Sopenharmony_ci { 917c804472Sopenharmony_ci JsAppImpl::GetInstance().ability = 927c804472Sopenharmony_ci OHOS::Ace::Platform::AceAbility::CreateInstance(JsAppImpl::GetInstance().aceRunArgs); 937c804472Sopenharmony_ci JsAppImpl::GetInstance().Restart(); 947c804472Sopenharmony_ci bool eq = JsAppImpl::GetInstance().ability == nullptr; 957c804472Sopenharmony_ci EXPECT_TRUE(eq); 967c804472Sopenharmony_ci } 977c804472Sopenharmony_ci 987c804472Sopenharmony_ci TEST_F(JsAppImplTest, InterruptTest) 997c804472Sopenharmony_ci { 1007c804472Sopenharmony_ci JsAppImpl::GetInstance().isStop = false; 1017c804472Sopenharmony_ci JsAppImpl::GetInstance().Interrupt(); 1027c804472Sopenharmony_ci EXPECT_TRUE(JsAppImpl::GetInstance().isStop); 1037c804472Sopenharmony_ci } 1047c804472Sopenharmony_ci 1057c804472Sopenharmony_ci TEST_F(JsAppImplTest, GetJSONTreeTest) 1067c804472Sopenharmony_ci { 1077c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().GetJSONTree(), "jsontree"); 1087c804472Sopenharmony_ci } 1097c804472Sopenharmony_ci 1107c804472Sopenharmony_ci TEST_F(JsAppImplTest, GetDefaultJSONTreeTest) 1117c804472Sopenharmony_ci { 1127c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().GetDefaultJSONTree(), "defaultjsontree"); 1137c804472Sopenharmony_ci } 1147c804472Sopenharmony_ci 1157c804472Sopenharmony_ci TEST_F(JsAppImplTest, OrientationChangedTest) 1167c804472Sopenharmony_ci { 1177c804472Sopenharmony_ci JsAppImpl::GetInstance().ability = 1187c804472Sopenharmony_ci OHOS::Ace::Platform::AceAbility::CreateInstance(JsAppImpl::GetInstance().aceRunArgs); 1197c804472Sopenharmony_ci g_surfaceChanged = false; 1207c804472Sopenharmony_ci JsAppImpl::GetInstance().OrientationChanged("portrait"); 1217c804472Sopenharmony_ci EXPECT_TRUE(g_surfaceChanged); 1227c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().orientation, "portrait"); 1237c804472Sopenharmony_ci g_surfaceChanged = false; 1247c804472Sopenharmony_ci JsAppImpl::GetInstance().OrientationChanged("landscape"); 1257c804472Sopenharmony_ci EXPECT_TRUE(g_surfaceChanged); 1267c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().orientation, "landscape"); 1277c804472Sopenharmony_ci } 1287c804472Sopenharmony_ci 1297c804472Sopenharmony_ci TEST_F(JsAppImplTest, ResolutionChangedTest) 1307c804472Sopenharmony_ci { 1317c804472Sopenharmony_ci JsAppImpl::GetInstance().isStop = false; 1327c804472Sopenharmony_ci std::thread thread1([]() { 1337c804472Sopenharmony_ci JsAppImpl::GetInstance().Start(); 1347c804472Sopenharmony_ci }); 1357c804472Sopenharmony_ci thread1.detach(); 1367c804472Sopenharmony_ci std::this_thread::sleep_for(std::chrono::milliseconds(10)); 1377c804472Sopenharmony_ci int32_t originWidth = 222; 1387c804472Sopenharmony_ci int32_t originHeight = 333; 1397c804472Sopenharmony_ci int32_t width = 222; 1407c804472Sopenharmony_ci int32_t height = 333; 1417c804472Sopenharmony_ci int32_t screenDensity = 360; 1427c804472Sopenharmony_ci std::string reason = "resize"; 1437c804472Sopenharmony_ci ResolutionParam param(originWidth, originHeight, width, height); 1447c804472Sopenharmony_ci g_surfaceChanged = false; 1457c804472Sopenharmony_ci JsAppImpl::GetInstance().ResolutionChanged(param, screenDensity, reason); 1467c804472Sopenharmony_ci EXPECT_TRUE(g_surfaceChanged); 1477c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().aceRunArgs.deviceWidth, 222); 1487c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().aceRunArgs.deviceHeight, 333); 1497c804472Sopenharmony_ci } 1507c804472Sopenharmony_ci 1517c804472Sopenharmony_ci TEST_F(JsAppImplTest, ConvertResizeReasonTest) 1527c804472Sopenharmony_ci { 1537c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().ConvertResizeReason("undefined"), 1547c804472Sopenharmony_ci OHOS::Ace::WindowSizeChangeReason::UNDEFINED); 1557c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().ConvertResizeReason("rotation"), 1567c804472Sopenharmony_ci OHOS::Ace::WindowSizeChangeReason::ROTATION); 1577c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().ConvertResizeReason("resize"), 1587c804472Sopenharmony_ci OHOS::Ace::WindowSizeChangeReason::RESIZE); 1597c804472Sopenharmony_ci } 1607c804472Sopenharmony_ci 1617c804472Sopenharmony_ci TEST_F(JsAppImplTest, SetResolutionParamsTest) 1627c804472Sopenharmony_ci { 1637c804472Sopenharmony_ci CommandParser::GetInstance().deviceType = "phone"; 1647c804472Sopenharmony_ci JsAppImpl::GetInstance().InitCommandInfo(); 1657c804472Sopenharmony_ci int32_t originWidth = 111; 1667c804472Sopenharmony_ci int32_t originHeight = 222; 1677c804472Sopenharmony_ci int32_t width = 111; 1687c804472Sopenharmony_ci int32_t height = 222; 1697c804472Sopenharmony_ci int32_t screenDensity = 480; 1707c804472Sopenharmony_ci JsAppImpl::GetInstance().SetResolutionParams(originWidth, originHeight, width, height, screenDensity); 1717c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().aceRunArgs.deviceWidth, 111); 1727c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().aceRunArgs.deviceHeight, 222); 1737c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().aceRunArgs.deviceConfig.density, 3); 1747c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().orientation, "portrait"); 1757c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().aceRunArgs.deviceConfig.orientation, 1767c804472Sopenharmony_ci OHOS::Ace::DeviceOrientation::PORTRAIT); 1777c804472Sopenharmony_ci 1787c804472Sopenharmony_ci originWidth = 222; 1797c804472Sopenharmony_ci originHeight = 111; 1807c804472Sopenharmony_ci width = 222; 1817c804472Sopenharmony_ci height = 111; 1827c804472Sopenharmony_ci screenDensity = 320; 1837c804472Sopenharmony_ci JsAppImpl::GetInstance().SetResolutionParams(originWidth, originHeight, width, height, screenDensity); 1847c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().aceRunArgs.deviceWidth, 222); 1857c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().aceRunArgs.deviceHeight, 111); 1867c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().aceRunArgs.deviceConfig.density, 2); 1877c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().orientation, "landscape"); 1887c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().aceRunArgs.deviceConfig.orientation, 1897c804472Sopenharmony_ci OHOS::Ace::DeviceOrientation::LANDSCAPE); 1907c804472Sopenharmony_ci } 1917c804472Sopenharmony_ci 1927c804472Sopenharmony_ci TEST_F(JsAppImplTest, SetArgsColorModeTest) 1937c804472Sopenharmony_ci { 1947c804472Sopenharmony_ci JsAppImpl::GetInstance().SetArgsColorMode("light"); 1957c804472Sopenharmony_ci EXPECT_EQ("light", JsAppImpl::GetInstance().colorMode); 1967c804472Sopenharmony_ci } 1977c804472Sopenharmony_ci 1987c804472Sopenharmony_ci TEST_F(JsAppImplTest, SetArgsAceVersionTest) 1997c804472Sopenharmony_ci { 2007c804472Sopenharmony_ci JsAppImpl::GetInstance().SetArgsAceVersion("ACE_2_0"); 2017c804472Sopenharmony_ci EXPECT_EQ("ACE_2_0", JsAppImpl::GetInstance().aceVersion); 2027c804472Sopenharmony_ci } 2037c804472Sopenharmony_ci 2047c804472Sopenharmony_ci TEST_F(JsAppImplTest, SetDeviceOrentationTest) 2057c804472Sopenharmony_ci { 2067c804472Sopenharmony_ci JsAppImpl::GetInstance().SetDeviceOrentation("landscape"); 2077c804472Sopenharmony_ci EXPECT_EQ("landscape", JsAppImpl::GetInstance().orientation); 2087c804472Sopenharmony_ci } 2097c804472Sopenharmony_ci 2107c804472Sopenharmony_ci TEST_F(JsAppImplTest, GetOrientationTest) 2117c804472Sopenharmony_ci { 2127c804472Sopenharmony_ci JsAppImpl::GetInstance().orientation = "portrait"; 2137c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().GetOrientation(), "portrait"); 2147c804472Sopenharmony_ci } 2157c804472Sopenharmony_ci 2167c804472Sopenharmony_ci TEST_F(JsAppImplTest, GetColorModeTest) 2177c804472Sopenharmony_ci { 2187c804472Sopenharmony_ci JsAppImpl::GetInstance().colorMode = "dark"; 2197c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().GetColorMode(), "dark"); 2207c804472Sopenharmony_ci } 2217c804472Sopenharmony_ci 2227c804472Sopenharmony_ci TEST_F(JsAppImplTest, ColorModeChangedTest) 2237c804472Sopenharmony_ci { 2247c804472Sopenharmony_ci JsAppImpl::GetInstance().ability = 2257c804472Sopenharmony_ci OHOS::Ace::Platform::AceAbility::CreateInstance(JsAppImpl::GetInstance().aceRunArgs); 2267c804472Sopenharmony_ci // light 2277c804472Sopenharmony_ci g_onConfigurationChanged = false; 2287c804472Sopenharmony_ci JsAppImpl::GetInstance().ColorModeChanged("light"); 2297c804472Sopenharmony_ci EXPECT_TRUE(g_onConfigurationChanged); 2307c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().aceRunArgs.deviceConfig.colorMode, 2317c804472Sopenharmony_ci OHOS::Ace::ColorMode::LIGHT); 2327c804472Sopenharmony_ci // dark 2337c804472Sopenharmony_ci g_onConfigurationChanged = false; 2347c804472Sopenharmony_ci JsAppImpl::GetInstance().ColorModeChanged("dark"); 2357c804472Sopenharmony_ci EXPECT_TRUE(g_onConfigurationChanged); 2367c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().aceRunArgs.deviceConfig.colorMode, 2377c804472Sopenharmony_ci OHOS::Ace::ColorMode::DARK); 2387c804472Sopenharmony_ci } 2397c804472Sopenharmony_ci 2407c804472Sopenharmony_ci TEST_F(JsAppImplTest, ReloadRuntimePageTest) 2417c804472Sopenharmony_ci { 2427c804472Sopenharmony_ci JsAppImpl::GetInstance().ability = 2437c804472Sopenharmony_ci OHOS::Ace::Platform::AceAbility::CreateInstance(JsAppImpl::GetInstance().aceRunArgs); 2447c804472Sopenharmony_ci g_replacePage = false; 2457c804472Sopenharmony_ci JsAppImpl::GetInstance().ReloadRuntimePage("pages/Index"); 2467c804472Sopenharmony_ci EXPECT_TRUE(g_replacePage); 2477c804472Sopenharmony_ci } 2487c804472Sopenharmony_ci 2497c804472Sopenharmony_ci TEST_F(JsAppImplTest, SetScreenDensityTest) 2507c804472Sopenharmony_ci { 2517c804472Sopenharmony_ci JsAppImpl::GetInstance().SetScreenDensity("360"); 2527c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().screenDensity, "360"); 2537c804472Sopenharmony_ci } 2547c804472Sopenharmony_ci 2557c804472Sopenharmony_ci TEST_F(JsAppImplTest, SetConfigChangesTest) 2567c804472Sopenharmony_ci { 2577c804472Sopenharmony_ci JsAppImpl::GetInstance().SetConfigChanges("aaa"); 2587c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().configChanges, "aaa"); 2597c804472Sopenharmony_ci } 2607c804472Sopenharmony_ci 2617c804472Sopenharmony_ci TEST_F(JsAppImplTest, MemoryRefreshTest) 2627c804472Sopenharmony_ci { 2637c804472Sopenharmony_ci // ability is nullptr 2647c804472Sopenharmony_ci JsAppImpl::GetInstance().ability = nullptr; 2657c804472Sopenharmony_ci g_operateComponent = false; 2667c804472Sopenharmony_ci JsAppImpl::GetInstance().MemoryRefresh("aaa"); 2677c804472Sopenharmony_ci EXPECT_FALSE(g_operateComponent); 2687c804472Sopenharmony_ci // ability is not nullptr 2697c804472Sopenharmony_ci JsAppImpl::GetInstance().ability = 2707c804472Sopenharmony_ci OHOS::Ace::Platform::AceAbility::CreateInstance(JsAppImpl::GetInstance().aceRunArgs); 2717c804472Sopenharmony_ci g_operateComponent = false; 2727c804472Sopenharmony_ci JsAppImpl::GetInstance().MemoryRefresh("aaa"); 2737c804472Sopenharmony_ci EXPECT_TRUE(g_operateComponent); 2747c804472Sopenharmony_ci } 2757c804472Sopenharmony_ci 2767c804472Sopenharmony_ci TEST_F(JsAppImplTest, LoadDocumentTest) 2777c804472Sopenharmony_ci { 2787c804472Sopenharmony_ci JsAppImpl::GetInstance().ability = 2797c804472Sopenharmony_ci OHOS::Ace::Platform::AceAbility::CreateInstance(JsAppImpl::GetInstance().aceRunArgs); 2807c804472Sopenharmony_ci Json2::Value val = JsonReader::CreateNull(); 2817c804472Sopenharmony_ci g_loadAceDocument = false; 2827c804472Sopenharmony_ci JsAppImpl::GetInstance().LoadDocument("aaa", "bbb", val); 2837c804472Sopenharmony_ci EXPECT_TRUE(g_loadAceDocument); 2847c804472Sopenharmony_ci } 2857c804472Sopenharmony_ci 2867c804472Sopenharmony_ci TEST_F(JsAppImplTest, FoldStatusChangedTest) 2877c804472Sopenharmony_ci { 2887c804472Sopenharmony_ci JsAppImpl::GetInstance().isStop = false; 2897c804472Sopenharmony_ci std::thread thread1([]() { 2907c804472Sopenharmony_ci JsAppImpl::GetInstance().Start(); 2917c804472Sopenharmony_ci }); 2927c804472Sopenharmony_ci thread1.detach(); 2937c804472Sopenharmony_ci std::this_thread::sleep_for(std::chrono::milliseconds(10)); 2947c804472Sopenharmony_ci int width = 200; 2957c804472Sopenharmony_ci int height = 300; 2967c804472Sopenharmony_ci g_execStatusChangedCallback = false; 2977c804472Sopenharmony_ci JsAppImpl::GetInstance().FoldStatusChanged("fold", width, height); 2987c804472Sopenharmony_ci EXPECT_EQ(VirtualScreenImpl::GetInstance().foldStatus, "fold"); 2997c804472Sopenharmony_ci EXPECT_EQ(OHOS::Previewer::PreviewerDisplay::GetInstance().foldStatus_, OHOS::Rosen::FoldStatus::FOLDED); 3007c804472Sopenharmony_ci EXPECT_TRUE(g_execStatusChangedCallback); 3017c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().aceRunArgs.deviceWidth, width); 3027c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().aceRunArgs.deviceHeight, height); 3037c804472Sopenharmony_ci 3047c804472Sopenharmony_ci JsAppImpl::GetInstance().FoldStatusChanged("unfold", width, height); 3057c804472Sopenharmony_ci EXPECT_EQ(VirtualScreenImpl::GetInstance().foldStatus, "unfold"); 3067c804472Sopenharmony_ci EXPECT_EQ(OHOS::Previewer::PreviewerDisplay::GetInstance().foldStatus_, OHOS::Rosen::FoldStatus::EXPAND); 3077c804472Sopenharmony_ci 3087c804472Sopenharmony_ci JsAppImpl::GetInstance().FoldStatusChanged("half_fold", width, height); 3097c804472Sopenharmony_ci EXPECT_EQ(VirtualScreenImpl::GetInstance().foldStatus, "half_fold"); 3107c804472Sopenharmony_ci EXPECT_EQ(OHOS::Previewer::PreviewerDisplay::GetInstance().foldStatus_, OHOS::Rosen::FoldStatus::HALF_FOLD); 3117c804472Sopenharmony_ci 3127c804472Sopenharmony_ci width = 210; 3137c804472Sopenharmony_ci height = 310; 3147c804472Sopenharmony_ci g_execStatusChangedCallback = false; 3157c804472Sopenharmony_ci JsAppImpl::GetInstance().FoldStatusChanged("unknown", width, height); 3167c804472Sopenharmony_ci EXPECT_EQ(VirtualScreenImpl::GetInstance().foldStatus, "unknown"); 3177c804472Sopenharmony_ci EXPECT_EQ(OHOS::Previewer::PreviewerDisplay::GetInstance().foldStatus_, OHOS::Rosen::FoldStatus::UNKNOWN); 3187c804472Sopenharmony_ci EXPECT_TRUE(g_execStatusChangedCallback); 3197c804472Sopenharmony_ci EXPECT_NE(JsAppImpl::GetInstance().aceRunArgs.deviceWidth, width); 3207c804472Sopenharmony_ci EXPECT_NE(JsAppImpl::GetInstance().aceRunArgs.deviceHeight, height); 3217c804472Sopenharmony_ci } 3227c804472Sopenharmony_ci 3237c804472Sopenharmony_ci TEST_F(JsAppImplTest, DispatchBackPressedEventTest) 3247c804472Sopenharmony_ci { 3257c804472Sopenharmony_ci g_onBackPressed = false; 3267c804472Sopenharmony_ci JsAppImpl::GetInstance().DispatchBackPressedEvent(); 3277c804472Sopenharmony_ci EXPECT_TRUE(g_onBackPressed); 3287c804472Sopenharmony_ci } 3297c804472Sopenharmony_ci 3307c804472Sopenharmony_ci TEST_F(JsAppImplTest, DispatchKeyEventTest) 3317c804472Sopenharmony_ci { 3327c804472Sopenharmony_ci g_onInputEvent = false; 3337c804472Sopenharmony_ci JsAppImpl::GetInstance().DispatchKeyEvent(nullptr); 3347c804472Sopenharmony_ci EXPECT_TRUE(g_onInputEvent); 3357c804472Sopenharmony_ci } 3367c804472Sopenharmony_ci 3377c804472Sopenharmony_ci TEST_F(JsAppImplTest, DispatchPointerEventTest) 3387c804472Sopenharmony_ci { 3397c804472Sopenharmony_ci g_onInputEvent = false; 3407c804472Sopenharmony_ci JsAppImpl::GetInstance().DispatchPointerEvent(nullptr); 3417c804472Sopenharmony_ci EXPECT_TRUE(g_onInputEvent); 3427c804472Sopenharmony_ci } 3437c804472Sopenharmony_ci 3447c804472Sopenharmony_ci TEST_F(JsAppImplTest, DispatchAxisEventTest) 3457c804472Sopenharmony_ci { 3467c804472Sopenharmony_ci g_onInputEvent = false; 3477c804472Sopenharmony_ci JsAppImpl::GetInstance().DispatchAxisEvent(nullptr); 3487c804472Sopenharmony_ci EXPECT_TRUE(g_onInputEvent); 3497c804472Sopenharmony_ci } 3507c804472Sopenharmony_ci 3517c804472Sopenharmony_ci TEST_F(JsAppImplTest, DispatchInputMethodEventTest) 3527c804472Sopenharmony_ci { 3537c804472Sopenharmony_ci g_onInputMethodEvent = false; 3547c804472Sopenharmony_ci int code = 12; 3557c804472Sopenharmony_ci JsAppImpl::GetInstance().DispatchInputMethodEvent(code); 3567c804472Sopenharmony_ci EXPECT_TRUE(g_onInputMethodEvent); 3577c804472Sopenharmony_ci } 3587c804472Sopenharmony_ci 3597c804472Sopenharmony_ci TEST_F(JsAppImplTest, InitGlfwEnvTest) 3607c804472Sopenharmony_ci { 3617c804472Sopenharmony_ci g_glfwInit = false; 3627c804472Sopenharmony_ci g_createGlfwWindow = false; 3637c804472Sopenharmony_ci JsAppImpl::GetInstance().InitGlfwEnv(); 3647c804472Sopenharmony_ci EXPECT_TRUE(g_glfwInit); 3657c804472Sopenharmony_ci EXPECT_TRUE(g_createGlfwWindow); 3667c804472Sopenharmony_ci } 3677c804472Sopenharmony_ci 3687c804472Sopenharmony_ci TEST_F(JsAppImplTest, SetJsAppArgsTest) 3697c804472Sopenharmony_ci { 3707c804472Sopenharmony_ci CommandParser::GetInstance().isComponentMode = true; 3717c804472Sopenharmony_ci JsAppImpl::GetInstance().InitCommandInfo(); 3727c804472Sopenharmony_ci OHOS::Ace::Platform::AceRunArgs args; 3737c804472Sopenharmony_ci JsAppImpl::GetInstance().SetJsAppArgs(args); 3747c804472Sopenharmony_ci EXPECT_EQ(args.windowTitle, "Ace"); 3757c804472Sopenharmony_ci EXPECT_TRUE(args.isComponentMode); 3767c804472Sopenharmony_ci } 3777c804472Sopenharmony_ci 3787c804472Sopenharmony_ci TEST_F(JsAppImplTest, RunJsAppTest) 3797c804472Sopenharmony_ci { 3807c804472Sopenharmony_ci JsAppImpl::GetInstance().isDebug = false; 3817c804472Sopenharmony_ci JsAppImpl::GetInstance().debugServerPort = 0; 3827c804472Sopenharmony_ci g_setContentInfoCallback = false; 3837c804472Sopenharmony_ci g_createSurfaceNode = false; 3847c804472Sopenharmony_ci g_setWindow = false; 3857c804472Sopenharmony_ci g_initEnv = false; 3867c804472Sopenharmony_ci JsAppImpl::GetInstance().RunJsApp(); 3877c804472Sopenharmony_ci auto ptr = OHOS::Ace::Platform::AcePreviewHelper::GetInstance()->GetCallbackOfHspBufferTracker(); 3887c804472Sopenharmony_ci EXPECT_TRUE(ptr != nullptr); 3897c804472Sopenharmony_ci uint8_t* data = new uint8_t[1]; 3907c804472Sopenharmony_ci size_t size = 0; 3917c804472Sopenharmony_ci std::string msg; 3927c804472Sopenharmony_ci bool ret = ptr("aa", &data, &size, msg); 3937c804472Sopenharmony_ci EXPECT_FALSE(ret); 3947c804472Sopenharmony_ci EXPECT_TRUE(g_setContentInfoCallback); 3957c804472Sopenharmony_ci EXPECT_TRUE(g_createSurfaceNode); 3967c804472Sopenharmony_ci EXPECT_TRUE(g_setWindow); 3977c804472Sopenharmony_ci EXPECT_TRUE(g_initEnv); 3987c804472Sopenharmony_ci delete[] data; 3997c804472Sopenharmony_ci 4007c804472Sopenharmony_ci JsAppImpl::GetInstance().isDebug = true; 4017c804472Sopenharmony_ci JsAppImpl::GetInstance().debugServerPort = 8888; 4027c804472Sopenharmony_ci g_setHostResolveBufferTracker = false; 4037c804472Sopenharmony_ci g_setContentInfoCallback = false; 4047c804472Sopenharmony_ci g_createSurfaceNode = false; 4057c804472Sopenharmony_ci JsAppImpl::GetInstance().RunJsApp(); 4067c804472Sopenharmony_ci EXPECT_FALSE(g_setHostResolveBufferTracker); 4077c804472Sopenharmony_ci EXPECT_FALSE(g_setContentInfoCallback); 4087c804472Sopenharmony_ci EXPECT_FALSE(g_createSurfaceNode); 4097c804472Sopenharmony_ci } 4107c804472Sopenharmony_ci 4117c804472Sopenharmony_ci // JsApp start 4127c804472Sopenharmony_ci TEST_F(JsAppImplTest, ResolutionParamTest) 4137c804472Sopenharmony_ci { 4147c804472Sopenharmony_ci int width = 100; 4157c804472Sopenharmony_ci ResolutionParam param(width, width, width, width); 4167c804472Sopenharmony_ci EXPECT_EQ(param.orignalWidth, width); 4177c804472Sopenharmony_ci EXPECT_EQ(param.orignalHeight, width); 4187c804472Sopenharmony_ci EXPECT_EQ(param.compressionWidth, width); 4197c804472Sopenharmony_ci EXPECT_EQ(param.compressionHeight, width); 4207c804472Sopenharmony_ci } 4217c804472Sopenharmony_ci 4227c804472Sopenharmony_ci TEST_F(JsAppImplTest, StopTest) 4237c804472Sopenharmony_ci { 4247c804472Sopenharmony_ci JsAppImpl::GetInstance().isStop = false; 4257c804472Sopenharmony_ci JsAppImpl::GetInstance().isFinished = false; 4267c804472Sopenharmony_ci std::thread thread1([]() { 4277c804472Sopenharmony_ci JsAppImpl::GetInstance().Stop(); 4287c804472Sopenharmony_ci }); 4297c804472Sopenharmony_ci thread1.detach(); 4307c804472Sopenharmony_ci std::this_thread::sleep_for(std::chrono::milliseconds(10)); 4317c804472Sopenharmony_ci JsAppImpl::GetInstance().isFinished = true; 4327c804472Sopenharmony_ci std::this_thread::sleep_for(std::chrono::milliseconds(20)); 4337c804472Sopenharmony_ci EXPECT_TRUE(JsAppImpl::GetInstance().isStop); 4347c804472Sopenharmony_ci } 4357c804472Sopenharmony_ci 4367c804472Sopenharmony_ci TEST_F(JsAppImplTest, SetJsAppPathTest) 4377c804472Sopenharmony_ci { 4387c804472Sopenharmony_ci JsAppImpl::GetInstance().SetJsAppPath("pages/Index"); 4397c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().jsAppPath, "pages/Index"); 4407c804472Sopenharmony_ci } 4417c804472Sopenharmony_ci 4427c804472Sopenharmony_ci TEST_F(JsAppImplTest, SetUrlPathTest) 4437c804472Sopenharmony_ci { 4447c804472Sopenharmony_ci JsAppImpl::GetInstance().SetUrlPath("pages/Index"); 4457c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().urlPath, "pages/Index"); 4467c804472Sopenharmony_ci } 4477c804472Sopenharmony_ci 4487c804472Sopenharmony_ci TEST_F(JsAppImplTest, SetPipeNameTest) 4497c804472Sopenharmony_ci { 4507c804472Sopenharmony_ci JsAppImpl::GetInstance().SetPipeName("phone_1"); 4517c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().pipeName, "phone_1"); 4527c804472Sopenharmony_ci } 4537c804472Sopenharmony_ci 4547c804472Sopenharmony_ci TEST_F(JsAppImplTest, SetPipePortTest) 4557c804472Sopenharmony_ci { 4567c804472Sopenharmony_ci JsAppImpl::GetInstance().SetPipePort("5000"); 4577c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().pipePort, "5000"); 4587c804472Sopenharmony_ci } 4597c804472Sopenharmony_ci 4607c804472Sopenharmony_ci TEST_F(JsAppImplTest, SetBundleNameTest) 4617c804472Sopenharmony_ci { 4627c804472Sopenharmony_ci JsAppImpl::GetInstance().SetBundleName("aaa"); 4637c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().bundleName, "aaa"); 4647c804472Sopenharmony_ci EXPECT_EQ(FileSystem::bundleName, "aaa"); 4657c804472Sopenharmony_ci size_t pos = FileSystem::fileSystemPath.find("aaa"); 4667c804472Sopenharmony_ci EXPECT_TRUE(pos != std::string::npos); 4677c804472Sopenharmony_ci } 4687c804472Sopenharmony_ci 4697c804472Sopenharmony_ci TEST_F(JsAppImplTest, SetRunningTest) 4707c804472Sopenharmony_ci { 4717c804472Sopenharmony_ci JsAppImpl::GetInstance().SetRunning(true); 4727c804472Sopenharmony_ci EXPECT_TRUE(JsAppImpl::GetInstance().isRunning); 4737c804472Sopenharmony_ci JsAppImpl::GetInstance().SetRunning(false); 4747c804472Sopenharmony_ci EXPECT_FALSE(JsAppImpl::GetInstance().isRunning); 4757c804472Sopenharmony_ci } 4767c804472Sopenharmony_ci 4777c804472Sopenharmony_ci TEST_F(JsAppImplTest, GetRunningTest) 4787c804472Sopenharmony_ci { 4797c804472Sopenharmony_ci JsAppImpl::GetInstance().isRunning = true; 4807c804472Sopenharmony_ci EXPECT_TRUE(JsAppImpl::GetInstance().GetRunning()); 4817c804472Sopenharmony_ci JsAppImpl::GetInstance().isRunning = false; 4827c804472Sopenharmony_ci EXPECT_FALSE(JsAppImpl::GetInstance().GetRunning()); 4837c804472Sopenharmony_ci } 4847c804472Sopenharmony_ci 4857c804472Sopenharmony_ci TEST_F(JsAppImplTest, SetIsDebugTest) 4867c804472Sopenharmony_ci { 4877c804472Sopenharmony_ci JsAppImpl::GetInstance().SetIsDebug(true); 4887c804472Sopenharmony_ci EXPECT_TRUE(JsAppImpl::GetInstance().isDebug); 4897c804472Sopenharmony_ci JsAppImpl::GetInstance().SetIsDebug(false); 4907c804472Sopenharmony_ci EXPECT_FALSE(JsAppImpl::GetInstance().isDebug); 4917c804472Sopenharmony_ci } 4927c804472Sopenharmony_ci 4937c804472Sopenharmony_ci TEST_F(JsAppImplTest, SetDebugServerPortTest) 4947c804472Sopenharmony_ci { 4957c804472Sopenharmony_ci int port = 5000; 4967c804472Sopenharmony_ci JsAppImpl::GetInstance().SetDebugServerPort(port); 4977c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().debugServerPort, port); 4987c804472Sopenharmony_ci } 4997c804472Sopenharmony_ci 5007c804472Sopenharmony_ci TEST_F(JsAppImplTest, SetJSHeapSizeTest) 5017c804472Sopenharmony_ci { 5027c804472Sopenharmony_ci int size = 5000; 5037c804472Sopenharmony_ci JsAppImpl::GetInstance().SetJSHeapSize(size); 5047c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().jsHeapSize, size); 5057c804472Sopenharmony_ci } 5067c804472Sopenharmony_ci 5077c804472Sopenharmony_ci TEST_F(JsAppImplTest, IsLiteDeviceTest) 5087c804472Sopenharmony_ci { 5097c804472Sopenharmony_ci EXPECT_TRUE(JsApp::IsLiteDevice("liteWearable")); 5107c804472Sopenharmony_ci EXPECT_FALSE(JsApp::IsLiteDevice("phone")); 5117c804472Sopenharmony_ci } 5127c804472Sopenharmony_ci // JsApp end 5137c804472Sopenharmony_ci 5147c804472Sopenharmony_ci TEST_F(JsAppImplTest, SetPkgContextInfoTest) 5157c804472Sopenharmony_ci { 5167c804472Sopenharmony_ci CommandParser::GetInstance().appResourcePath = testDir; 5177c804472Sopenharmony_ci CommandParser::GetInstance().loaderJsonPath = testDir + "/loader.json"; 5187c804472Sopenharmony_ci JsAppImpl::GetInstance().InitCommandInfo(); 5197c804472Sopenharmony_ci const std::string moduleJsonPath = testDir + FileSystem::GetSeparator() + "module.json"; 5207c804472Sopenharmony_ci const std::string pkgContextInfoJsonPath = testDir + FileSystem::GetSeparator() + "pkgContextInfo.json"; 5217c804472Sopenharmony_ci // 直接调用 5227c804472Sopenharmony_ci JsAppImpl::GetInstance().SetPkgContextInfo(); 5237c804472Sopenharmony_ci EXPECT_TRUE(JsAppImpl::GetInstance().aceRunArgs.packageNameList.empty()); 5247c804472Sopenharmony_ci // 创建module.json,json不写全1 5257c804472Sopenharmony_ci std::string moduleJsonContent = R"({"aaa":"bbb"})"; 5267c804472Sopenharmony_ci WriteFile(moduleJsonPath, moduleJsonContent); 5277c804472Sopenharmony_ci JsAppImpl::GetInstance().SetPkgContextInfo(); 5287c804472Sopenharmony_ci EXPECT_TRUE(JsAppImpl::GetInstance().aceRunArgs.packageNameList.empty()); 5297c804472Sopenharmony_ci // 创建module.json,json不写全2 5307c804472Sopenharmony_ci moduleJsonContent = R"({"module":{"name":333}})"; 5317c804472Sopenharmony_ci WriteFile(moduleJsonPath, moduleJsonContent); 5327c804472Sopenharmony_ci JsAppImpl::GetInstance().SetPkgContextInfo(); 5337c804472Sopenharmony_ci EXPECT_TRUE(JsAppImpl::GetInstance().aceRunArgs.packageNameList.empty()); 5347c804472Sopenharmony_ci // 创建module.json,json写全 5357c804472Sopenharmony_ci moduleJsonContent = R"({"module":{"name":"entry","packageName":"entry"}})"; 5367c804472Sopenharmony_ci WriteFile(moduleJsonPath, moduleJsonContent); 5377c804472Sopenharmony_ci JsAppImpl::GetInstance().SetPkgContextInfo(); 5387c804472Sopenharmony_ci EXPECT_FALSE(JsAppImpl::GetInstance().aceRunArgs.packageNameList.empty()); 5397c804472Sopenharmony_ci EXPECT_TRUE(JsAppImpl::GetInstance().aceRunArgs.pkgContextInfoJsonStringMap.empty()); 5407c804472Sopenharmony_ci // 创建pkgContextInfo.json 5417c804472Sopenharmony_ci std::string pkgContextInfoJsonContent = R"({"entry":{"packageName":"entry"}})"; 5427c804472Sopenharmony_ci WriteFile(pkgContextInfoJsonPath, pkgContextInfoJsonContent); 5437c804472Sopenharmony_ci JsAppImpl::GetInstance().SetPkgContextInfo(); 5447c804472Sopenharmony_ci EXPECT_FALSE(JsAppImpl::GetInstance().aceRunArgs.packageNameList.empty()); 5457c804472Sopenharmony_ci EXPECT_FALSE(JsAppImpl::GetInstance().aceRunArgs.pkgContextInfoJsonStringMap.empty()); 5467c804472Sopenharmony_ci if (std::remove(moduleJsonPath.c_str()) != 0) { 5477c804472Sopenharmony_ci printf("Error deleting module.json file!\n"); 5487c804472Sopenharmony_ci } 5497c804472Sopenharmony_ci if (std::remove(pkgContextInfoJsonPath.c_str()) != 0) { 5507c804472Sopenharmony_ci printf("Error deleting pkgContextInfo.json file!\n"); 5517c804472Sopenharmony_ci } 5527c804472Sopenharmony_ci } 5537c804472Sopenharmony_ci 5547c804472Sopenharmony_ci TEST_F(JsAppImplTest, SetAvoidAreaTest) 5557c804472Sopenharmony_ci { 5567c804472Sopenharmony_ci AvoidAreas areas; 5577c804472Sopenharmony_ci JsAppImpl::GetInstance().SetAvoidArea(areas); 5587c804472Sopenharmony_ci bool ret = JsAppImpl::GetInstance().avoidInitialAreas == areas; 5597c804472Sopenharmony_ci EXPECT_TRUE(ret); 5607c804472Sopenharmony_ci } 5617c804472Sopenharmony_ci 5627c804472Sopenharmony_ci TEST_F(JsAppImplTest, UpdateAvoidArea2IdeTest) 5637c804472Sopenharmony_ci { 5647c804472Sopenharmony_ci const OHOS::Rosen::Rect value = {0, 0, 0, 0}; 5657c804472Sopenharmony_ci g_output = false; 5667c804472Sopenharmony_ci JsAppImpl::GetInstance().UpdateAvoidArea2Ide("topRect", value); 5677c804472Sopenharmony_ci EXPECT_TRUE(g_output); 5687c804472Sopenharmony_ci } 5697c804472Sopenharmony_ci 5707c804472Sopenharmony_ci TEST_F(JsAppImplTest, GetWindowTest) 5717c804472Sopenharmony_ci { 5727c804472Sopenharmony_ci JsAppImpl::GetInstance().isDebug = true; 5737c804472Sopenharmony_ci OHOS::Rosen::Window* win1 = JsAppImpl::GetInstance().GetWindow(); 5747c804472Sopenharmony_ci EXPECT_TRUE(win1 == nullptr); 5757c804472Sopenharmony_ci 5767c804472Sopenharmony_ci JsAppImpl::GetInstance().isDebug = false; 5777c804472Sopenharmony_ci JsAppImpl::GetInstance().ability = 5787c804472Sopenharmony_ci OHOS::Ace::Platform::AceAbility::CreateInstance(JsAppImpl::GetInstance().aceRunArgs); 5797c804472Sopenharmony_ci OHOS::Rosen::WMError errCode; 5807c804472Sopenharmony_ci OHOS::sptr<OHOS::Rosen::WindowOption> sp = nullptr; 5817c804472Sopenharmony_ci auto window = OHOS::Rosen::Window::Create("previewer", sp, nullptr, errCode); 5827c804472Sopenharmony_ci JsAppImpl::GetInstance().ability->SetWindow(window); 5837c804472Sopenharmony_ci OHOS::Rosen::Window* win2 = JsAppImpl::GetInstance().GetWindow(); 5847c804472Sopenharmony_ci EXPECT_TRUE(window == win2); 5857c804472Sopenharmony_ci } 5867c804472Sopenharmony_ci 5877c804472Sopenharmony_ci TEST_F(JsAppImplTest, InitAvoidAreasTest) 5887c804472Sopenharmony_ci { 5897c804472Sopenharmony_ci OHOS::Rosen::WMError errCode; 5907c804472Sopenharmony_ci OHOS::sptr<OHOS::Rosen::WindowOption> sp = nullptr; 5917c804472Sopenharmony_ci auto window = OHOS::Rosen::Window::Create("previewer", sp, nullptr, errCode); 5927c804472Sopenharmony_ci g_getSystemBarPropertyByType = false; 5937c804472Sopenharmony_ci JsAppImpl::GetInstance().InitAvoidAreas(window); 5947c804472Sopenharmony_ci EXPECT_TRUE(g_getSystemBarPropertyByType); 5957c804472Sopenharmony_ci } 5967c804472Sopenharmony_ci 5977c804472Sopenharmony_ci TEST_F(JsAppImplTest, AdaptDeviceTypeTest) 5987c804472Sopenharmony_ci { 5997c804472Sopenharmony_ci int width = 300; 6007c804472Sopenharmony_ci int height = 300; 6017c804472Sopenharmony_ci std::string type = "wearable"; 6027c804472Sopenharmony_ci JsAppImpl::GetInstance().AdaptDeviceType(JsAppImpl::GetInstance().aceRunArgs, type, width, height); 6037c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().aceRunArgs.deviceConfig.deviceType, OHOS::Ace::DeviceType::WATCH); 6047c804472Sopenharmony_ci type = "tv"; 6057c804472Sopenharmony_ci JsAppImpl::GetInstance().AdaptDeviceType(JsAppImpl::GetInstance().aceRunArgs, type, width, height); 6067c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().aceRunArgs.deviceConfig.deviceType, OHOS::Ace::DeviceType::TV); 6077c804472Sopenharmony_ci type = "phone"; 6087c804472Sopenharmony_ci JsAppImpl::GetInstance().AdaptDeviceType(JsAppImpl::GetInstance().aceRunArgs, type, width, height); 6097c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().aceRunArgs.deviceConfig.deviceType, OHOS::Ace::DeviceType::PHONE); 6107c804472Sopenharmony_ci type = "default"; 6117c804472Sopenharmony_ci JsAppImpl::GetInstance().AdaptDeviceType(JsAppImpl::GetInstance().aceRunArgs, type, width, height); 6127c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().aceRunArgs.deviceConfig.deviceType, OHOS::Ace::DeviceType::PHONE); 6137c804472Sopenharmony_ci type = "2in1"; 6147c804472Sopenharmony_ci JsAppImpl::GetInstance().AdaptDeviceType(JsAppImpl::GetInstance().aceRunArgs, type, width, height); 6157c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().aceRunArgs.deviceConfig.deviceType, OHOS::Ace::DeviceType::TWO_IN_ONE); 6167c804472Sopenharmony_ci type = "tablet"; 6177c804472Sopenharmony_ci JsAppImpl::GetInstance().AdaptDeviceType(JsAppImpl::GetInstance().aceRunArgs, type, width, height); 6187c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().aceRunArgs.deviceConfig.deviceType, OHOS::Ace::DeviceType::TABLET); 6197c804472Sopenharmony_ci type = "car"; 6207c804472Sopenharmony_ci JsAppImpl::GetInstance().AdaptDeviceType(JsAppImpl::GetInstance().aceRunArgs, type, width, height); 6217c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().aceRunArgs.deviceConfig.deviceType, OHOS::Ace::DeviceType::CAR); 6227c804472Sopenharmony_ci } 6237c804472Sopenharmony_ci 6247c804472Sopenharmony_ci TEST_F(JsAppImplTest, SetDeviceScreenDensityTest) 6257c804472Sopenharmony_ci { 6267c804472Sopenharmony_ci const int32_t screenDensity = 480; 6277c804472Sopenharmony_ci std::string type = "wearable"; 6287c804472Sopenharmony_ci JsAppImpl::GetInstance().SetDeviceScreenDensity(screenDensity, type); 6297c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().watchScreenDensity, screenDensity); 6307c804472Sopenharmony_ci type = "tv"; 6317c804472Sopenharmony_ci JsAppImpl::GetInstance().SetDeviceScreenDensity(screenDensity, type); 6327c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().watchScreenDensity, screenDensity); 6337c804472Sopenharmony_ci type = "phone"; 6347c804472Sopenharmony_ci JsAppImpl::GetInstance().SetDeviceScreenDensity(screenDensity, type); 6357c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().watchScreenDensity, screenDensity); 6367c804472Sopenharmony_ci type = "default"; 6377c804472Sopenharmony_ci JsAppImpl::GetInstance().SetDeviceScreenDensity(screenDensity, type); 6387c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().watchScreenDensity, screenDensity); 6397c804472Sopenharmony_ci type = "2in1"; 6407c804472Sopenharmony_ci JsAppImpl::GetInstance().SetDeviceScreenDensity(screenDensity, type); 6417c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().watchScreenDensity, screenDensity); 6427c804472Sopenharmony_ci type = "tablet"; 6437c804472Sopenharmony_ci JsAppImpl::GetInstance().SetDeviceScreenDensity(screenDensity, type); 6447c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().watchScreenDensity, screenDensity); 6457c804472Sopenharmony_ci type = "car"; 6467c804472Sopenharmony_ci JsAppImpl::GetInstance().SetDeviceScreenDensity(screenDensity, type); 6477c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().watchScreenDensity, screenDensity); 6487c804472Sopenharmony_ci } 6497c804472Sopenharmony_ci 6507c804472Sopenharmony_ci TEST_F(JsAppImplTest, ParseSystemParamsTest) 6517c804472Sopenharmony_ci { 6527c804472Sopenharmony_ci Json2::Value paramObj = JsonReader::CreateNull(); 6537c804472Sopenharmony_ci JsAppImpl::GetInstance().ParseSystemParams(JsAppImpl::GetInstance().aceRunArgs, paramObj); 6547c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().aceRunArgs.deviceConfig.colorMode, OHOS::Ace::ColorMode::DARK); 6557c804472Sopenharmony_ci 6567c804472Sopenharmony_ci Json2::Value paramObj2 = JsonReader::CreateObject(); 6577c804472Sopenharmony_ci int width = 666; 6587c804472Sopenharmony_ci int height = 333; 6597c804472Sopenharmony_ci int density = 480; 6607c804472Sopenharmony_ci paramObj2.Add("width", width); 6617c804472Sopenharmony_ci paramObj2.Add("height", height); 6627c804472Sopenharmony_ci paramObj2.Add("colorMode", "light"); 6637c804472Sopenharmony_ci paramObj2.Add("orientation", ""); 6647c804472Sopenharmony_ci paramObj2.Add("deviceType", "phone"); 6657c804472Sopenharmony_ci paramObj2.Add("dpi", density); 6667c804472Sopenharmony_ci paramObj2.Add("locale", "zh_Hans_CN"); 6677c804472Sopenharmony_ci JsAppImpl::GetInstance().ParseSystemParams(JsAppImpl::GetInstance().aceRunArgs, paramObj2); 6687c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().aceRunArgs.deviceWidth, width); 6697c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().aceRunArgs.deviceHeight, height); 6707c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().aceRunArgs.deviceConfig.colorMode, OHOS::Ace::ColorMode::LIGHT); 6717c804472Sopenharmony_ci } 6727c804472Sopenharmony_ci 6737c804472Sopenharmony_ci TEST_F(JsAppImplTest, GetDeviceTypeNameTest) 6747c804472Sopenharmony_ci { 6757c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().GetDeviceTypeName(OHOS::Ace::DeviceType::WATCH), "watch"); 6767c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().GetDeviceTypeName(OHOS::Ace::DeviceType::TV), "tv"); 6777c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().GetDeviceTypeName(OHOS::Ace::DeviceType::PHONE), "phone"); 6787c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().GetDeviceTypeName(OHOS::Ace::DeviceType::TABLET), "tablet"); 6797c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().GetDeviceTypeName(OHOS::Ace::DeviceType::CAR), "car"); 6807c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().GetDeviceTypeName(OHOS::Ace::DeviceType::UNKNOWN), ""); 6817c804472Sopenharmony_ci EXPECT_EQ(JsAppImpl::GetInstance().GetDeviceTypeName(OHOS::Ace::DeviceType::WEARABLE), ""); 6827c804472Sopenharmony_ci } 6837c804472Sopenharmony_ci 6847c804472Sopenharmony_ci TEST_F(JsAppImplTest, CalculateAvoidAreaByTypeTest) 6857c804472Sopenharmony_ci { 6867c804472Sopenharmony_ci OHOS::Rosen::SystemBarProperty property; 6877c804472Sopenharmony_ci property.enable_ = true; 6887c804472Sopenharmony_ci JsAppImpl::GetInstance().CalculateAvoidAreaByType( 6897c804472Sopenharmony_ci OHOS::Rosen::WindowType::WINDOW_TYPE_STATUS_BAR, property); 6907c804472Sopenharmony_ci JsAppImpl::GetInstance().CalculateAvoidAreaByType( 6917c804472Sopenharmony_ci OHOS::Rosen::WindowType::WINDOW_TYPE_NAVIGATION_INDICATOR, property); 6927c804472Sopenharmony_ci JsAppImpl::GetInstance().CalculateAvoidAreaByType( 6937c804472Sopenharmony_ci OHOS::Rosen::WindowType::APP_MAIN_WINDOW_BASE, property); 6947c804472Sopenharmony_ci property.enable_ = false; 6957c804472Sopenharmony_ci JsAppImpl::GetInstance().CalculateAvoidAreaByType( 6967c804472Sopenharmony_ci OHOS::Rosen::WindowType::WINDOW_TYPE_STATUS_BAR, property); 6977c804472Sopenharmony_ci JsAppImpl::GetInstance().CalculateAvoidAreaByType( 6987c804472Sopenharmony_ci OHOS::Rosen::WindowType::WINDOW_TYPE_NAVIGATION_INDICATOR, property); 6997c804472Sopenharmony_ci JsAppImpl::GetInstance().CalculateAvoidAreaByType( 7007c804472Sopenharmony_ci OHOS::Rosen::WindowType::APP_MAIN_WINDOW_BASE, property); 7017c804472Sopenharmony_ci } 7027c804472Sopenharmony_ci 7037c804472Sopenharmony_ci TEST_F(JsAppImplTest, InitJsAppTest) 7047c804472Sopenharmony_ci { 7057c804472Sopenharmony_ci JsAppImpl::GetInstance().isStop = false; 7067c804472Sopenharmony_ci std::thread thread1([]() { 7077c804472Sopenharmony_ci CommandParser::GetInstance().argsMap.clear(); 7087c804472Sopenharmony_ci CommandParser::GetInstance().argsMap["-j"] = { "" }; 7097c804472Sopenharmony_ci CommandParser::GetInstance().argsMap["-s"] = { "" }; 7107c804472Sopenharmony_ci CommandParser::GetInstance().argsMap["-url"] = { "" }; 7117c804472Sopenharmony_ci CommandParser::GetInstance().argsMap["-lws"] = { "" }; 7127c804472Sopenharmony_ci CommandParser::GetInstance().argsMap["-cm"] = { "" }; 7137c804472Sopenharmony_ci CommandParser::GetInstance().argsMap["-av"] = { "" }; 7147c804472Sopenharmony_ci CommandParser::GetInstance().argsMap["-sd"] = { "" }; 7157c804472Sopenharmony_ci CommandParser::GetInstance().argsMap["-cc"] = { "" }; 7167c804472Sopenharmony_ci CommandParser::GetInstance().argsMap["-d"] = { "" }; 7177c804472Sopenharmony_ci CommandParser::GetInstance().argsMap["-p"] = { "" }; 7187c804472Sopenharmony_ci JsAppImpl::GetInstance().InitJsApp(); 7197c804472Sopenharmony_ci CommandParser::GetInstance().argsMap.clear(); 7207c804472Sopenharmony_ci }); 7217c804472Sopenharmony_ci thread1.detach(); 7227c804472Sopenharmony_ci std::this_thread::sleep_for(std::chrono::milliseconds(10)); 7237c804472Sopenharmony_ci JsAppImpl::GetInstance().isStop = true; 7247c804472Sopenharmony_ci std::this_thread::sleep_for(std::chrono::milliseconds(10)); 7257c804472Sopenharmony_ci EXPECT_TRUE(JsAppImpl::GetInstance().isFinished); 7267c804472Sopenharmony_ci } 7277c804472Sopenharmony_ci}