1 /* 2 * Copyright (c) 2025 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 #include "ge_aurora_noise_shader.h" 18 #include "ge_external_dynamic_loader.h" 19 #include "ge_visual_effect_impl.h" 20 #include "draw/path.h" 21 22 using namespace testing; 23 using namespace testing::ext; 24 using namespace OHOS::Rosen; 25 using namespace Drawing; 26 27 namespace OHOS { 28 namespace Rosen { 29 30 class GEAuroraNoiseShaderTest : public testing::Test { 31 public: SetUpTestCase()32 static void SetUpTestCase() 33 {} TearDownTestCase()34 static void TearDownTestCase() 35 {} SetUp()36 void SetUp() override 37 {} TearDown()38 void TearDown() override 39 {} 40 41 static inline Canvas canvas_; 42 }; 43 44 /** 45 * @tc.name: GEAuroraNoiseShaderTest001 46 * @tc.type: FUNC 47 */ 48 HWTEST_F(GEAuroraNoiseShaderTest, GEAuroraNoiseShaderTest001, TestSize.Level1) 49 { 50 Drawing::GEAuroraNoiseShaderParams params{0.0}; 51 auto shader = GEAuroraNoiseShader::CreateAuroraNoiseShader(params); 52 EXPECT_NE(shader, nullptr); 53 } 54 55 /** 56 * @tc.name: GEAuroraNoiseShaderTest002 57 * @tc.type: FUNC 58 */ 59 HWTEST_F(GEAuroraNoiseShaderTest, GEAuroraNoiseShaderTest002, TestSize.Level1) 60 { 61 Drawing::GEAuroraNoiseShaderParams params{1.0}; 62 auto shader = GEAuroraNoiseShader::CreateAuroraNoiseShader(params); 63 ASSERT_NE(shader, nullptr); 64 65 auto builder1 = shader->GetAuroraNoiseBuilder(); 66 EXPECT_NE(builder1, nullptr); 67 auto builder2 = shader->GetAuroraNoiseBuilder(); 68 EXPECT_NE(builder2, nullptr); 69 } 70 71 /** 72 * @tc.name: GEAuroraNoiseShaderTest003 73 * @tc.type: FUNC 74 */ 75 HWTEST_F(GEAuroraNoiseShaderTest, GEAuroraNoiseShaderTest003, TestSize.Level1) 76 { 77 Drawing::GEAuroraNoiseShaderParams params{0.2}; 78 auto shader = GEAuroraNoiseShader::CreateAuroraNoiseShader(params); 79 ASSERT_NE(shader, nullptr); 80 81 Drawing::Rect rect{0, 0, 100, 100}; 82 auto effect = shader->MakeAuroraNoiseShader(rect); 83 EXPECT_EQ(effect, nullptr); 84 } 85 86 /** 87 * @tc.name: GEAuroraNoiseShaderTest004 88 * @tc.type: FUNC 89 */ 90 HWTEST_F(GEAuroraNoiseShaderTest, GEAuroraNoiseShaderTest004, TestSize.Level1) 91 { 92 Drawing::GEAuroraNoiseShaderParams params{0.5}; 93 auto shader = GEAuroraNoiseShader::CreateAuroraNoiseShader(params); 94 ASSERT_NE(shader, nullptr); 95 96 Drawing::Rect rect{0, 0, 50, 50}; 97 shader->MakeDrawingShader(rect, 0.5f); 98 SUCCEED(); 99 } 100 101 /** 102 * @tc.name: GEAuroraNoiseShaderTest005 103 * @tc.type: FUNC 104 */ 105 HWTEST_F(GEAuroraNoiseShaderTest, GEAuroraNoiseShaderTest005, TestSize.Level1) 106 { 107 Drawing::GEAuroraNoiseShaderParams params{5.0}; 108 auto shader = GEAuroraNoiseShader::CreateAuroraNoiseShader(params); 109 ASSERT_NE(shader, nullptr); 110 111 Drawing::Rect rect{0, 0, 100, 100}; 112 shader->MakeDrawingShader(rect, 0.75f); 113 shader->SetAuroraNoiseParams(params); 114 ASSERT_NE(shader, nullptr); 115 } 116 117 /** 118 * @tc.name: GEAuroraNoiseShaderTest006 119 * @tc.type: FUNC 120 */ 121 HWTEST_F(GEAuroraNoiseShaderTest, GEAuroraNoiseShaderTest006, TestSize.Level1) 122 { 123 Drawing::GEAuroraNoiseShaderParams params{0.5}; 124 auto shader = GEAuroraNoiseShader::CreateAuroraNoiseShader(params); 125 ASSERT_NE(shader, nullptr); 126 127 Drawing::ImageInfo imageInfo(50, 50, ColorType::COLORTYPE_RGBA_8888, AlphaType::ALPHATYPE_PREMUL); 128 auto image = shader->MakeAuroraNoiseVerticalBlurShader(canvas_, imageInfo); 129 EXPECT_EQ(image, nullptr); 130 131 Drawing::Rect rect{0, 0, 100, 100}; 132 auto effect = shader->MakeAuroraNoiseShader(rect); 133 EXPECT_EQ(effect, nullptr); 134 } 135 136 /** 137 * @tc.name: GEAuroraNoiseShaderTest007 138 * @tc.type: FUNC 139 */ 140 HWTEST_F(GEAuroraNoiseShaderTest, GEAuroraNoiseShaderTest007, TestSize.Level1) 141 { 142 Drawing::Rect rect(0, 0, 100, 100); 143 GEAuroraNoiseShaderParams params{0.5}; 144 auto shader = GEAuroraNoiseShader::CreateAuroraNoiseShader(params); 145 shader->Preprocess(canvas_, rect); 146 auto cache = shader->GetCache(); 147 EXPECT_EQ(cache, nullptr); 148 } 149 150 /** 151 * @tc.name: GEAuroraNoiseShaderTest008 152 * @tc.type: FUNC 153 */ 154 HWTEST_F(GEAuroraNoiseShaderTest, GEAuroraNoiseShaderTest008, TestSize.Level1) 155 { 156 Drawing::GEAuroraNoiseShaderParams params{0.7}; 157 auto shader = GEAuroraNoiseShader::CreateAuroraNoiseShader(params); 158 ASSERT_NE(shader, nullptr); 159 160 Drawing::ImageInfo imageInfo(50, 50, ColorType::COLORTYPE_RGBA_8888, AlphaType::ALPHATYPE_OPAQUE); 161 auto image = shader->MakeAuroraNoiseGeneratorShader(canvas_, imageInfo); 162 EXPECT_EQ(image, nullptr); 163 164 Drawing::Rect rect{0, 0, 100, 100}; 165 auto effect = shader->MakeAuroraNoiseShader(rect); 166 EXPECT_EQ(effect, nullptr); 167 } 168 169 /** 170 * @tc.name: GEAuroraNoiseShaderTest009 171 * @tc.type: FUNC 172 */ 173 HWTEST_F(GEAuroraNoiseShaderTest, GEAuroraNoiseShaderTest009, TestSize.Level1) 174 { 175 Drawing::GEAuroraNoiseShaderParams params{0.7}; 176 auto shader = GEAuroraNoiseShader::CreateAuroraNoiseShader(params); 177 ASSERT_NE(shader, nullptr); 178 179 Drawing::ImageInfo image1Info(100, 100, ColorType::COLORTYPE_RGBA_8888, AlphaType::ALPHATYPE_OPAQUE); 180 auto image1 = shader->MakeAuroraNoiseGeneratorShader(canvas_, image1Info); 181 EXPECT_EQ(image1, nullptr); 182 183 Drawing::ImageInfo image2Info(100, 100, ColorType::COLORTYPE_RGBA_8888, AlphaType::ALPHATYPE_PREMUL); 184 auto image2 = shader->MakeAuroraNoiseVerticalBlurShader(canvas_, image2Info); 185 EXPECT_EQ(image2, nullptr); 186 187 Drawing::Rect rect{0, 0, 100, 100}; 188 auto effect = shader->MakeAuroraNoiseShader(rect); 189 EXPECT_EQ(effect, nullptr); 190 } 191 } // namespace Rosen 192 } // namespace OHOS