1 /* 2 * Copyright (c) 2024 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #include "gtest/gtest.h" 17 #define private public 18 #define protected public 19 #include "VirtualScreenImpl.h" 20 #include "CommandParser.h" 21 22 namespace { 23 class VirtualScreenImplTest : public ::testing::Test { 24 public: VirtualScreenImplTest()25 VirtualScreenImplTest() {} ~VirtualScreenImplTest()26 ~VirtualScreenImplTest() {} 27 protected: InitBuffer()28 static void InitBuffer() 29 { 30 int retWidth = 100; 31 int retHeight = 100; 32 int jpgPix = 4; 33 int pixelSize = 4; 34 uint8_t defaultValue = 200; 35 jpgHeight = retHeight; 36 jpgWidth = retWidth; 37 jpgBufferSize = static_cast<long>(retWidth) * static_cast<long>(retHeight) * static_cast<long>(jpgPix); 38 jpgBuffer = new unsigned char[jpgBufferSize]; 39 for (int i = 0; i < jpgBufferSize; i++) { 40 jpgBuffer[i] = defaultValue; 41 } 42 } 43 SetUpTestCase()44 static void SetUpTestCase() 45 { 46 InitBuffer(); 47 socket = std::make_unique<LocalSocket>(); 48 } 49 50 static std::unique_ptr<LocalSocket> socket; 51 static unsigned long jpgBufferSize; 52 static unsigned char* jpgBuffer; 53 static int32_t jpgWidth; 54 static int32_t jpgHeight; 55 }; 56 57 std::unique_ptr<LocalSocket> VirtualScreenImplTest::socket = nullptr; 58 unsigned char* VirtualScreenImplTest::jpgBuffer = nullptr; 59 unsigned long VirtualScreenImplTest::jpgBufferSize = 0; 60 int32_t VirtualScreenImplTest::jpgWidth = 0; 61 int32_t VirtualScreenImplTest::jpgHeight = 0; 62 TEST_F(VirtualScreenImplTest,IsRectValidTest)63 TEST_F(VirtualScreenImplTest, IsRectValidTest) 64 { 65 int32_t width = 100; 66 int32_t height = 200; 67 VirtualScreenImpl::GetInstance().SetOrignalWidth(width); 68 VirtualScreenImpl::GetInstance().SetOrignalHeight(height); 69 int32_t x = -1; 70 int32_t y = 100; 71 EXPECT_FALSE(VirtualScreenImpl::GetInstance().IsRectValid(x, y, width, height)); 72 73 x = 50; 74 y = -1; 75 EXPECT_FALSE(VirtualScreenImpl::GetInstance().IsRectValid(x, y, width, height)); 76 77 x = 50; 78 y = 100; 79 width = 100; 80 height = 100; 81 EXPECT_FALSE(VirtualScreenImpl::GetInstance().IsRectValid(x, y, width, height)); 82 83 width = 50; 84 height = 200; 85 EXPECT_FALSE(VirtualScreenImpl::GetInstance().IsRectValid(x, y, width, height)); 86 87 width = 50; 88 height = 100; 89 EXPECT_TRUE(VirtualScreenImpl::GetInstance().IsRectValid(x, y, width, height)); 90 } 91 TEST_F(VirtualScreenImplTest,GetScreenWidthTest)92 TEST_F(VirtualScreenImplTest, GetScreenWidthTest) 93 { 94 int32_t width = 100; 95 VirtualScreenImpl::GetInstance().SetOrignalWidth(width); 96 EXPECT_EQ(VirtualScreenImpl::GetInstance().GetScreenWidth(), 97 VirtualScreenImpl::GetInstance().GetOrignalWidth()); 98 } 99 TEST_F(VirtualScreenImplTest,GetScreenHeightTest)100 TEST_F(VirtualScreenImplTest, GetScreenHeightTest) 101 { 102 int32_t height = 200; 103 VirtualScreenImpl::GetInstance().SetOrignalHeight(height); 104 EXPECT_EQ(VirtualScreenImpl::GetInstance().GetScreenHeight(), 105 VirtualScreenImpl::GetInstance().GetOrignalHeight()); 106 } 107 TEST_F(VirtualScreenImplTest,InitAllTest)108 TEST_F(VirtualScreenImplTest, InitAllTest) 109 { 110 CommandParser::GetInstance().deviceType = "liteWearable"; 111 int32_t height = -1; 112 VirtualScreenImpl::GetInstance().SetOrignalWidth(jpgWidth); 113 VirtualScreenImpl::GetInstance().SetOrignalHeight(height); 114 VirtualScreenImpl::GetInstance().InitAll("aaa", "8888"); 115 EXPECT_TRUE(VirtualScreenImpl::GetInstance().wholeBuffer == nullptr); 116 VirtualScreenImpl::GetInstance().SetOrignalHeight(jpgHeight); 117 VirtualScreenImpl::GetInstance().InitAll("aaa", "8888"); 118 EXPECT_TRUE(VirtualScreenImpl::GetInstance().wholeBuffer != nullptr); 119 EXPECT_TRUE(VirtualScreenImpl::GetInstance().currentPos > 0); 120 } 121 TEST_F(VirtualScreenImplTest,GetFBBufferInfoTest)122 TEST_F(VirtualScreenImplTest, GetFBBufferInfoTest) 123 { 124 OHOS::BufferInfo* info = VirtualScreenImpl::GetInstance().GetFBBufferInfo(); 125 EXPECT_EQ(info->color, 0x44); 126 } 127 TEST_F(VirtualScreenImplTest,UpdateRegionTest)128 TEST_F(VirtualScreenImplTest, UpdateRegionTest) 129 { 130 int32_t width = 100; 131 int32_t height = 200; 132 VirtualScreenImpl::GetInstance().SetCompressionWidth(width); 133 VirtualScreenImpl::GetInstance().SetCompressionHeight(height); 134 int32_t x1 = 10; 135 int32_t y1 = 10; 136 int32_t x2 = 20; 137 int32_t y2 = 20; 138 VirtualScreenImpl::GetInstance().UpdateRegion(x1, y1, x2, y2); 139 int32_t expectVal = 26; 140 EXPECT_EQ(VirtualScreenImpl::GetInstance().regionWidth, expectVal); 141 EXPECT_EQ(VirtualScreenImpl::GetInstance().regionHeight, expectVal); 142 } 143 TEST_F(VirtualScreenImplTest,SendRegionBufferTest)144 TEST_F(VirtualScreenImplTest, SendRegionBufferTest) 145 { 146 VirtualScreenImpl::GetInstance().SetCompressionWidth(jpgWidth); 147 VirtualScreenImpl::GetInstance().SetCompressionHeight(jpgHeight); 148 149 CommandParser::GetInstance().screenMode = CommandParser::ScreenMode::STATIC; 150 VirtualScreen::isOutOfSeconds = true; 151 VirtualScreenImpl::GetInstance().SendRegionBuffer(); 152 EXPECT_TRUE(VirtualScreenImpl::GetInstance().jpgScreenBuffer == nullptr); 153 VirtualScreenImpl::GetInstance().FreeJpgMemory(); 154 CommandParser::GetInstance().screenMode = CommandParser::ScreenMode::DYNAMIC; 155 VirtualScreen::isOutOfSeconds = false; 156 VirtualScreenImpl::GetInstance().SendRegionBuffer(); 157 EXPECT_TRUE(VirtualScreenImpl::GetInstance().jpgScreenBuffer == nullptr); 158 } 159 TEST_F(VirtualScreenImplTest,FlushTest)160 TEST_F(VirtualScreenImplTest, FlushTest) 161 { 162 VirtualScreenImpl::GetInstance().SetCompressionWidth(jpgWidth); 163 VirtualScreenImpl::GetInstance().SetCompressionHeight(jpgHeight); 164 OHOS::Rect flushRect; 165 166 VirtualScreenImpl::GetInstance().isWebSocketConfiged = false; 167 VirtualScreenImpl::GetInstance().Flush(flushRect); 168 EXPECT_TRUE(VirtualScreenImpl::GetInstance().isChanged); 169 170 VirtualScreenImpl::GetInstance().isWebSocketConfiged = true; 171 CommandParser::GetInstance().isRegionRefresh = true; 172 VirtualScreenImpl::GetInstance().isFirstSend = false; 173 VirtualScreenImpl::GetInstance().Flush(flushRect); 174 EXPECT_FALSE(VirtualScreenImpl::GetInstance().isChanged); 175 176 CommandParser::GetInstance().isRegionRefresh = false; 177 VirtualScreenImpl::GetInstance().isFirstSend = false; 178 VirtualScreenImpl::GetInstance().Flush(flushRect); 179 EXPECT_FALSE(VirtualScreenImpl::GetInstance().isChanged); 180 } 181 TEST_F(VirtualScreenImplTest,CheckBufferSendTest)182 TEST_F(VirtualScreenImplTest, CheckBufferSendTest) 183 { 184 VirtualScreenImpl::GetInstance().SetCompressionWidth(jpgWidth); 185 VirtualScreenImpl::GetInstance().SetCompressionHeight(jpgHeight); 186 187 VirtualScreenImpl::GetInstance().isChanged = false; 188 VirtualScreenImpl::GetInstance().CheckBufferSend(); 189 EXPECT_FALSE(VirtualScreenImpl::GetInstance().isChanged); 190 191 VirtualScreenImpl::GetInstance().isChanged = true; 192 VirtualScreenImpl::GetInstance().isWebSocketConfiged = false; 193 VirtualScreenImpl::GetInstance().CheckBufferSend(); 194 EXPECT_TRUE(VirtualScreenImpl::GetInstance().isChanged); 195 196 VirtualScreenImpl::GetInstance().isWebSocketConfiged = true; 197 CommandParser::GetInstance().isRegionRefresh = true; 198 VirtualScreenImpl::GetInstance().isFirstSend = false; 199 VirtualScreenImpl::GetInstance().CheckBufferSend(); 200 EXPECT_FALSE(VirtualScreenImpl::GetInstance().isChanged); 201 202 CommandParser::GetInstance().isRegionRefresh = false; 203 VirtualScreenImpl::GetInstance().isFirstSend = false; 204 VirtualScreenImpl::GetInstance().CheckBufferSend(); 205 EXPECT_FALSE(VirtualScreenImpl::GetInstance().isChanged); 206 } 207 }