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