• 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 
18 #include "ge_shader_filter_params.h"
19 #include "ge_visual_effect.h"
20 #include "ge_visual_effect_impl.h"
21 
22 using namespace testing;
23 using namespace testing::ext;
24 
25 namespace OHOS {
26 namespace Rosen {
27 namespace Drawing {
28 
29 class GEVisualEffectTest : public testing::Test {
30 public:
31     static void SetUpTestCase();
32     static void TearDownTestCase();
33     void SetUp() override;
34     void TearDown() override;
35 };
36 
SetUpTestCase(void)37 void GEVisualEffectTest::SetUpTestCase(void) {}
38 
TearDownTestCase(void)39 void GEVisualEffectTest::TearDownTestCase(void) {}
40 
SetUp()41 void GEVisualEffectTest::SetUp() {}
42 
TearDown()43 void GEVisualEffectTest::TearDown() {}
44 
45 /**
46  * @tc.name: SetParam_001
47  * @tc.desc: Verify the SetParam
48  * @tc.type: FUNC
49  */
50 HWTEST_F(GEVisualEffectTest, SetParam_001, TestSize.Level1)
51 {
52     GTEST_LOG_(INFO) << "GEVisualEffectTest SetParam_001 start";
53 
54     auto visualEffect = std::make_shared<GEVisualEffect>(GE_FILTER_KAWASE_BLUR);
55     visualEffect->visualEffectImpl_->kawaseParams_ = std::make_shared<GEKawaseBlurShaderFilterParams>();
56     visualEffect->visualEffectImpl_->filterType_ = GEVisualEffectImpl::FilterType::KAWASE_BLUR;
57     visualEffect->SetParam(GE_FILTER_KAWASE_BLUR_RADIUS, 1);
58     EXPECT_EQ(visualEffect->visualEffectImpl_->kawaseParams_->radius, 1);
59 
60     GTEST_LOG_(INFO) << "GEVisualEffectTest SetParam_001 end";
61 }
62 
63 /**
64  * @tc.name: SetParam_002
65  * @tc.desc: Verify the SetParam
66  * @tc.type: FUNC
67  */
68 HWTEST_F(GEVisualEffectTest, SetParam_002, TestSize.Level1)
69 {
70     GTEST_LOG_(INFO) << "GEVisualEffectTest SetParam_002 start";
71 
72     auto visualEffect = std::make_shared<GEVisualEffect>(GE_FILTER_KAWASE_BLUR);
73     visualEffect->visualEffectImpl_->kawaseParams_ = std::make_shared<GEKawaseBlurShaderFilterParams>();
74     visualEffect->visualEffectImpl_->filterType_ = GEVisualEffectImpl::FilterType::KAWASE_BLUR;
75     visualEffect->SetParam(GE_FILTER_KAWASE_BLUR_RADIUS, static_cast<double>(1));
76     EXPECT_NE(visualEffect->visualEffectImpl_->kawaseParams_->radius, 1);
77 
78     GTEST_LOG_(INFO) << "GEVisualEffectTest SetParam_002 end";
79 }
80 
81 /**
82  * @tc.name: SetParam_003
83  * @tc.desc: Verify the SetParam
84  * @tc.type: FUNC
85  */
86 HWTEST_F(GEVisualEffectTest, SetParam_003, TestSize.Level1)
87 {
88     GTEST_LOG_(INFO) << "GEVisualEffectTest SetParam_003 start";
89 
90     auto visualEffect = std::make_shared<GEVisualEffect>(GE_FILTER_KAWASE_BLUR);
91     visualEffect->visualEffectImpl_->kawaseParams_ = std::make_shared<GEKawaseBlurShaderFilterParams>();
92     visualEffect->visualEffectImpl_->filterType_ = GEVisualEffectImpl::FilterType::KAWASE_BLUR;
93     visualEffect->SetParam(GE_FILTER_KAWASE_BLUR_RADIUS, static_cast< const char* const>("1"));
94     EXPECT_NE(visualEffect->visualEffectImpl_->kawaseParams_->radius, 1);
95 
96     GTEST_LOG_(INFO) << "GEVisualEffectTest SetParam_003 end";
97 }
98 
99 /**
100  * @tc.name: SetParam_004
101  * @tc.desc: Verify the SetParam
102  * @tc.type: FUNC
103  */
104 HWTEST_F(GEVisualEffectTest, SetParam_004, TestSize.Level1)
105 {
106     GTEST_LOG_(INFO) << "GEVisualEffectTest SetParam_004 start";
107 
108     auto visualEffect = std::make_shared<GEVisualEffect>(GE_FILTER_KAWASE_BLUR);
109     visualEffect->visualEffectImpl_->kawaseParams_ = std::make_shared<GEKawaseBlurShaderFilterParams>();
110     visualEffect->visualEffectImpl_->filterType_ = GEVisualEffectImpl::FilterType::KAWASE_BLUR;
111     visualEffect->SetParam(GE_FILTER_KAWASE_BLUR_RADIUS, static_cast<int64_t>(1));
112     EXPECT_NE(visualEffect->visualEffectImpl_->kawaseParams_->radius, 1);
113 
114     GTEST_LOG_(INFO) << "GEVisualEffectTest SetParam_004 end";
115 }
116 
117 /**
118  * @tc.name: SetParam_005
119  * @tc.desc: Verify the SetParam
120  * @tc.type: FUNC
121  */
122 HWTEST_F(GEVisualEffectTest, SetParam_005, TestSize.Level1)
123 {
124     GTEST_LOG_(INFO) << "GEVisualEffectTest SetParam_005 start";
125 
126     std::pair<float, float> factor = {0.5f, 0.5f};
127     auto visualEffect = std::make_shared<GEVisualEffect>(GE_MASK_RIPPLE);
128     visualEffect->visualEffectImpl_->rippleMaskParams_ = std::make_shared<GERippleShaderMaskParams>();
129     visualEffect->visualEffectImpl_->filterType_ = GEVisualEffectImpl::FilterType::RIPPLE_MASK;
130     visualEffect->SetParam(GE_MASK_RIPPLE_CENTER, factor);
131     EXPECT_EQ(visualEffect->visualEffectImpl_->rippleMaskParams_->center_, factor);
132 
133     GTEST_LOG_(INFO) << "GEVisualEffectTest SetParam_005 end";
134 }
135 
136 /**
137  * @tc.name: SetParam_006
138  * @tc.desc: Verify the SetParam
139  * @tc.type: FUNC
140  */
141 HWTEST_F(GEVisualEffectTest, SetParam_006, TestSize.Level1)
142 {
143     GTEST_LOG_(INFO) << "GEVisualEffectTest SetParam_006 start";
144     constexpr size_t BEZIER_WARP_POINT_NUM = 12; // 12 anchor points of a patch
145     std::array<Drawing::Point, BEZIER_WARP_POINT_NUM> points = {{
146         {1.0f, 2.0f},
147         {3.0f, 4.0f},
148         {5.0f, 6.0f},
149         {7.0f, 8.0f},
150         {9.0f, 10.0f},
151         {11.0f, 12.0f},
152         {13.0f, 14.0f},
153         {15.0f, 16.0f},
154         {17.0f, 18.0f},
155         {19.0f, 20.0f},
156         {21.0f, 22.0f},
157         {23.0f, 24.0f}
158     }};
159     auto visualEffect = std::make_shared<GEVisualEffect>(GE_FILTER_BEZIER_WARP);
160     visualEffect->visualEffectImpl_->bezierWarpParams_ = std::make_shared<GEBezierWarpShaderFilterParams>();
161     visualEffect->visualEffectImpl_->filterType_ = GEVisualEffectImpl::FilterType::BEZIER_WARP;
162     visualEffect->SetParam(GE_FILTER_BEZIER_WARP_DESTINATION_PATCH, points);
163     EXPECT_EQ(visualEffect->visualEffectImpl_->bezierWarpParams_->destinationPatch, points);
164 
165     GTEST_LOG_(INFO) << "GEVisualEffectTest SetParam_006 end";
166 }
167 
168 /**
169  * @tc.name: SetParam_007
170  * @tc.desc: Verify the SetParam Vector3f Vector4f
171  * @tc.type: FUNC
172  */
173 HWTEST_F(GEVisualEffectTest, SetParam_007, TestSize.Level1)
174 {
175     GTEST_LOG_(INFO) << "GEVisualEffectTest SetParam_007 start";
176 
177     auto visualEffect = std::make_shared<GEVisualEffect>(GE_FILTER_CONTENT_LIGHT);
178     visualEffect->visualEffectImpl_->MakeContentLightParams();
179     visualEffect->visualEffectImpl_->filterType_ = GEVisualEffectImpl::FilterType::CONTENT_LIGHT;
180 
181     Vector3f lightPosition = Vector3f(0.0f, 0.f, 0.0f);
182     visualEffect->SetParam(GE_FILTER_CONTENT_LIGHT_POSITION, lightPosition);
183     bool ret = visualEffect->visualEffectImpl_->contentLightParams_->position == lightPosition;
184     EXPECT_TRUE(ret);
185 
186     Vector4f lightColor = Vector4f(0.2f, 0.4f, 0.6f, 0.5f);
187     visualEffect->SetParam(GE_FILTER_CONTENT_LIGHT_COLOR, lightColor);
188     ret = visualEffect->visualEffectImpl_->contentLightParams_->color == lightColor;
189     EXPECT_TRUE(ret);
190 
191     GTEST_LOG_(INFO) << "GEVisualEffectTest SetParam_007 end";
192 }
193 
194 /**
195  * @tc.name: GetCanvasInfo_001
196  * @tc.desc: Verify the GetCanvasInfo
197  * @tc.type: FUNC
198  */
199 HWTEST_F(GEVisualEffectTest, GetCanvasInfo_001, TestSize.Level1)
200 {
201     GTEST_LOG_(INFO) << "GEVisualEffectTest GetCanvasInfo_001 start";
202 
203     auto visualEffect1 = std::make_shared<GEVisualEffect>(GE_FILTER_KAWASE_BLUR);
204     Drawing::CanvasInfo canvasInfo1 = visualEffect1->GetCanvasInfo();
205     EXPECT_FLOAT_EQ(canvasInfo1.geoWidth, 0.0f);
206     EXPECT_FLOAT_EQ(canvasInfo1.geoHeight, 0.0f);
207     EXPECT_FLOAT_EQ(canvasInfo1.tranX, 0.0f);
208     EXPECT_FLOAT_EQ(canvasInfo1.tranY, 0.0f);
209 
210     Drawing::Matrix matrix = Drawing::Matrix();
211     matrix.SetMatrix(1, 2, 3, 4, 5, 6, 7, 8, 9);
212     Drawing::CanvasInfo canvasInfo2 = {100.0f, 100.0f, 1.0f, -1.0f, matrix};
213     auto visualEffect2 =
214         std::make_shared<GEVisualEffect>(GE_FILTER_KAWASE_BLUR, Drawing::DrawingPaintType::BRUSH, canvasInfo2);
215     Drawing::CanvasInfo canvasInfo3 = visualEffect2->GetCanvasInfo();
216     EXPECT_FLOAT_EQ(canvasInfo3.geoWidth, canvasInfo2.geoWidth);
217     EXPECT_FLOAT_EQ(canvasInfo3.geoHeight, canvasInfo2.geoHeight);
218     EXPECT_FLOAT_EQ(canvasInfo3.tranX, canvasInfo2.tranX);
219     EXPECT_FLOAT_EQ(canvasInfo3.tranY, canvasInfo2.tranY);
220 
221     GTEST_LOG_(INFO) << "GEVisualEffectTest GetCanvasInfo_001 end";
222 }
223 
224 /**
225  * @tc.name: SetParam_008
226  * @tc.desc: Verify the SetParam
227  * @tc.type: FUNC
228  */
229 HWTEST_F(GEVisualEffectTest, SetParam_008, TestSize.Level1)
230 {
231     GTEST_LOG_(INFO) << "GEVisualEffectTest SetParam_008 start";
232 
233     std::pair<float, float> factor = {0.5f, 0.5f};
234     auto visualEffect = std::make_shared<GEVisualEffect>(GE_MASK_WAVE_GRADIENT);
235     visualEffect->visualEffectImpl_->waveGradientMaskParams_ = std::make_shared<GEWaveGradientShaderMaskParams>();
236     visualEffect->visualEffectImpl_->filterType_ = GEVisualEffectImpl::FilterType::WAVE_GRADIENT_MASK;
237     visualEffect->SetParam(GE_MASK_WAVE_GRADIENT_CENTER, factor);
238     EXPECT_EQ(visualEffect->visualEffectImpl_->waveGradientMaskParams_->center_, factor);
239 
240     GTEST_LOG_(INFO) << "GEVisualEffectTest SetParam_008 end";
241 }
242 
243 /**
244  * @tc.name: SetParam_009
245  * @tc.desc: Verify the SetParam Vector2f
246  * @tc.type: FUNC
247  */
248 HWTEST_F(GEVisualEffectTest, SetParam_009, TestSize.Level1)
249 {
250     GTEST_LOG_(INFO) << "GEVisualEffectTest SetParam_009 start";
251 
252     std::pair<float, float> factor = {0.5f, 0.5f};
253     auto visualEffect = std::make_shared<GEVisualEffect>(GE_MASK_DOUBLE_RIPPLE);
254     visualEffect->visualEffectImpl_->doubleRippleMaskParams_ = std::make_shared<GEDoubleRippleShaderMaskParams>();
255     visualEffect->visualEffectImpl_->filterType_ = GEVisualEffectImpl::FilterType::DOUBLE_RIPPLE_MASK;
256     visualEffect->SetParam(GE_MASK_DOUBLE_RIPPLE_CENTER1, factor);
257     EXPECT_EQ(visualEffect->visualEffectImpl_->doubleRippleMaskParams_->center1_, factor);
258     visualEffect->SetParam(GE_MASK_DOUBLE_RIPPLE_CENTER2, factor);
259     EXPECT_EQ(visualEffect->visualEffectImpl_->doubleRippleMaskParams_->center2_, factor);
260 
261     GTEST_LOG_(INFO) << "GEVisualEffectTest SetParam_009 end";
262 }
263 } // namespace Drawing
264 } // namespace Rosen
265 } // namespace OHOS
266