1 /*
2 * Copyright (c) 2023 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 "effect/image_filter.h"
19
20 using namespace testing;
21 using namespace testing::ext;
22
23 namespace OHOS {
24 namespace Rosen {
25 namespace Drawing {
26 class ImageFilterTest : public testing::Test {
27 public:
28 static void SetUpTestCase();
29 static void TearDownTestCase();
30 void SetUp() override;
31 void TearDown() override;
32 };
33
SetUpTestCase()34 void ImageFilterTest::SetUpTestCase() {}
TearDownTestCase()35 void ImageFilterTest::TearDownTestCase() {}
SetUp()36 void ImageFilterTest::SetUp() {}
TearDown()37 void ImageFilterTest::TearDown() {}
38
39 /*
40 * @tc.name: CreateBlurImageFilterTest001
41 * @tc.desc: test for creating a filter that blurs its input by the separate X and Y sinma value.
42 * @tc.type: FUNC
43 * @tc.require: I77M3W
44 */
45 HWTEST_F(ImageFilterTest, CreateBlurImageFilterTest001, TestSize.Level1)
46 {
47 auto input = ImageFilter::CreateBlurImageFilter(10.0f, 10.0f, TileMode::CLAMP, nullptr);
48 EXPECT_TRUE(input != nullptr);
49 auto imageFilter = ImageFilter::CreateBlurImageFilter(10.0f, 10.0f, TileMode::CLAMP, input);
50 EXPECT_TRUE(imageFilter != nullptr);
51 }
52
53 /*
54 * @tc.name: CreateColorFilterImageFilterTest001
55 * @tc.desc: test for creating a filter that applies the color filter to the input filter results.
56 * @tc.type: FUNC
57 * @tc.require: I77M3W
58 */
59 HWTEST_F(ImageFilterTest, CreateColorFilterImageFilterTest001, TestSize.Level1)
60 {
61 auto colorFilter = ColorFilter::CreateBlendModeColorFilter(11, OHOS::Rosen::Drawing::BlendMode::CLEAR);
62 auto input = ImageFilter::CreateColorFilterImageFilter(*colorFilter, nullptr);
63 EXPECT_TRUE(input != nullptr);
64 auto imageFilter = ImageFilter::CreateColorFilterImageFilter(*colorFilter, input);
65 EXPECT_TRUE(imageFilter != nullptr);
66 }
67
68 /*
69 * @tc.name: CreateOffsetImageFilterTest001
70 * @tc.desc: test for creating a filter that offsets the input filter by the given vector.
71 * @tc.type: FUNC
72 * @tc.require: I77M3W
73 */
74 HWTEST_F(ImageFilterTest, CreateOffsetImageFilterTest001, TestSize.Level1)
75 {
76 auto input = ImageFilter::CreateOffsetImageFilter(10.0f, 10.0f, nullptr);
77 EXPECT_TRUE(input != nullptr);
78 auto imageFilter = ImageFilter::CreateOffsetImageFilter(10.0f, 10.0f, input);
79 EXPECT_TRUE(imageFilter != nullptr);
80 }
81
82 /*
83 * @tc.name: CreateArithmeticImageFilterTest001
84 * @tc.desc: test for creating a filter that implements a custom blend mode.
85 * @tc.type: FUNC
86 * @tc.require: I77M3W
87 */
88 HWTEST_F(ImageFilterTest, CreateArithmeticImageFilterTest001, TestSize.Level1)
89 {
90 std::vector<scalar> coefficients;
91 coefficients.push_back(10.0f);
92 coefficients.push_back(10.0f);
93 coefficients.push_back(10.0f);
94 coefficients.push_back(10.0f);
95 auto f1 = ImageFilter::CreateBlurImageFilter(10.0f, 10.0f, TileMode::CLAMP, nullptr);
96 auto f2 = ImageFilter::CreateOffsetImageFilter(10.0f, 10.0f, nullptr);
97 auto imageFilter = ImageFilter::CreateArithmeticImageFilter(coefficients, true, f1, f2);
98 EXPECT_TRUE(imageFilter != nullptr);
99 }
100
101 /*
102 * @tc.name: CreateComposeImageFilterTest001
103 * @tc.desc: test for creating a filter that composes f1 with f2.
104 * @tc.type: FUNC
105 * @tc.require: I77M3W
106 */
107 HWTEST_F(ImageFilterTest, CreateComposeImageFilterTest001, TestSize.Level1)
108 {
109 auto imageFilter1 = ImageFilter::CreateBlurImageFilter(10.0f, 20.0f, TileMode::CLAMP, nullptr);
110 auto imageFilter2 = ImageFilter::CreateOffsetImageFilter(30.0f, 40.0f, nullptr);
111 auto imageFilter = ImageFilter::CreateComposeImageFilter(imageFilter1, imageFilter2);
112 EXPECT_TRUE(imageFilter != nullptr);
113 }
114
115 /*
116 * @tc.name: ImageFilterCreateTest001
117 * @tc.desc: testing the ImageFilter Construction Method
118 * @tc.type: FUNC
119 * @tc.require: I77M3W
120 */
121 HWTEST_F(ImageFilterTest, ImageFilterCreateTest001, TestSize.Level1)
122 {
123 auto imageFilter = std::make_shared<ImageFilter>(ImageFilter::FilterType::BLUR, 10.0f, 10.0f, nullptr);
124 ASSERT_TRUE(imageFilter != nullptr);
125 }
126
127 /*
128 * @tc.name: ImageFilterCreateTest002
129 * @tc.desc: testing the ImageFilter Construction Method
130 * @tc.type: FUNC
131 * @tc.require: I77M3W
132 */
133 HWTEST_F(ImageFilterTest, ImageFilterCreateTest002, TestSize.Level1)
134 {
135 auto colorFilter = ColorFilter::CreateBlendModeColorFilter(11, OHOS::Rosen::Drawing::BlendMode::CLEAR);
136 auto imageFilter = std::make_shared<ImageFilter>(ImageFilter::FilterType::COLOR, *colorFilter, nullptr);
137 ASSERT_TRUE(imageFilter != nullptr);
138 }
139
140 /*
141 * @tc.name: ImageFilterCreateTest003
142 * @tc.desc: testing the ImageFilter Construction Method
143 * @tc.type: FUNC
144 * @tc.require: I77M3W
145 */
146 HWTEST_F(ImageFilterTest, ImageFilterCreateTest003, TestSize.Level1)
147 {
148 std::vector<scalar> coefficients;
149 coefficients.push_back(10.0f);
150 coefficients.push_back(10.0f);
151 coefficients.push_back(10.0f);
152 coefficients.push_back(10.0f);
153 auto imageFilter = std::make_shared<ImageFilter>(ImageFilter::FilterType::ARITHMETIC, coefficients,
154 true, nullptr, nullptr);
155 ASSERT_TRUE(imageFilter != nullptr);
156 }
157
158 /*
159 * @tc.name: ImageFilterCreateTest004
160 * @tc.desc: testing the ImageFilter Construction Method
161 * @tc.type: FUNC
162 * @tc.require: I77M3W
163 */
164 HWTEST_F(ImageFilterTest, ImageFilterCreateTest004, TestSize.Level1)
165 {
166 auto imageFilter1 = ImageFilter::CreateBlurImageFilter(10.0f, 20.0f, TileMode::CLAMP, nullptr);
167 auto imageFilter2 = ImageFilter::CreateOffsetImageFilter(30.0f, 40.0f, nullptr);
168 auto imageFilter = std::make_shared<ImageFilter>(ImageFilter::FilterType::COMPOSE, imageFilter1, imageFilter2);
169 ASSERT_TRUE(imageFilter != nullptr);
170 }
171 } // namespace Drawing
172 } // namespace Rosen
173 } // namespace OHOS
174