• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 }