1 /*
2 * Copyright (c) 2024-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, Hardware
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 "drawing_error_code.h"
17 #include "drawing_sampling_options.h"
18 #include "drawing_shader_effect.h"
19 #include "gtest/gtest.h"
20 #include "utils/sampling_options.h"
21
22 #ifdef RS_ENABLE_VK
23 #include "platform/ohos/backend/rs_vulkan_context.h"
24 #endif
25
26 using namespace testing;
27 using namespace testing::ext;
28
29 namespace OHOS {
30 namespace Rosen {
31 namespace Drawing {
32 class NativeDrawingSamplingOptionsTest : public testing::Test {
33 public:
34 static void SetUpTestCase();
35 static void TearDownTestCase();
36 void SetUp() override;
37 void TearDown() override;
38 };
39
40
SetUpTestCase()41 void NativeDrawingSamplingOptionsTest::SetUpTestCase()
42 {
43 #ifdef RS_ENABLE_VK
44 RsVulkanContext::SetRecyclable(false);
45 #endif
46 }
TearDownTestCase()47 void NativeDrawingSamplingOptionsTest::TearDownTestCase() {}
SetUp()48 void NativeDrawingSamplingOptionsTest::SetUp() {}
TearDown()49 void NativeDrawingSamplingOptionsTest::TearDown() {}
50
51
52 /*
53 * @tc.name: OH_Drawing_SamplingOptionsCreate
54 * @tc.desc: Test OH_Drawing_SamplingOptionsCreate
55 * @tc.type: FUNC
56 */
57 HWTEST_F(NativeDrawingSamplingOptionsTest, OH_Drawing_SamplingOptionsCreate, TestSize.Level1)
58 {
59 OH_Drawing_SamplingOptions* option1 = OH_Drawing_SamplingOptionsCreate(OH_Drawing_FilterMode::FILTER_MODE_LINEAR,
60 OH_Drawing_MipmapMode::MIPMAP_MODE_NEAREST);
61 OH_Drawing_SamplingOptions* option2 = OH_Drawing_SamplingOptionsCreate(OH_Drawing_FilterMode::FILTER_MODE_LINEAR,
62 static_cast<OH_Drawing_MipmapMode>(-1));
63 OH_Drawing_SamplingOptions* option3 = OH_Drawing_SamplingOptionsCreate(OH_Drawing_FilterMode::FILTER_MODE_LINEAR,
64 static_cast<OH_Drawing_MipmapMode>(99));
65 EXPECT_NE(option1, nullptr);
66 EXPECT_EQ(option2, nullptr);
67 EXPECT_EQ(option3, nullptr);
68
69 OH_Drawing_SamplingOptionsDestroy(option1);
70 OH_Drawing_SamplingOptionsDestroy(option2);
71 OH_Drawing_SamplingOptionsDestroy(option3);
72 }
73
74 /*
75 * @tc.name: OH_Drawing_SamplingOptionsCopy
76 * @tc.desc: Test OH_Drawing_SamplingOptionsCopy
77 * @tc.type: FUNC
78 * @tc.require: ICBC29
79 */
80 HWTEST_F(NativeDrawingSamplingOptionsTest, OH_Drawing_SamplingOptionsCopy, TestSize.Level1)
81 {
82 OH_Drawing_SamplingOptions* option1 = OH_Drawing_SamplingOptionsCreate(OH_Drawing_FilterMode::FILTER_MODE_LINEAR,
83 OH_Drawing_MipmapMode::MIPMAP_MODE_NEAREST);
84 OH_Drawing_SamplingOptions* option2 = OH_Drawing_SamplingOptionsCreate(OH_Drawing_FilterMode::FILTER_MODE_LINEAR,
85 static_cast<OH_Drawing_MipmapMode>(-1));
86 OH_Drawing_SamplingOptions* option3 = OH_Drawing_SamplingOptionsCreate(OH_Drawing_FilterMode::FILTER_MODE_LINEAR,
87 static_cast<OH_Drawing_MipmapMode>(99));
88 EXPECT_NE(option1, nullptr);
89 EXPECT_EQ(option2, nullptr);
90 EXPECT_EQ(option3, nullptr);
91
92 OH_Drawing_SamplingOptions* optionCopy1 = OH_Drawing_SamplingOptionsCopy(option1);
93 OH_Drawing_SamplingOptions* optionCopy2 = OH_Drawing_SamplingOptionsCopy(option2);
94 OH_Drawing_SamplingOptions* optionCopy3 = OH_Drawing_SamplingOptionsCopy(option3);
95 EXPECT_NE(optionCopy1, nullptr);
96 EXPECT_EQ(optionCopy2, nullptr);
97 EXPECT_EQ(optionCopy3, nullptr);
98 auto samplingOptionsOrigin = reinterpret_cast<const SamplingOptions&>(*option1);
99 auto samplingOptionsCopy = reinterpret_cast<const SamplingOptions&>(*optionCopy1);
100 EXPECT_EQ(samplingOptionsOrigin == samplingOptionsCopy, true);
101
102 OH_Drawing_SamplingOptionsDestroy(option1);
103 OH_Drawing_SamplingOptionsDestroy(option2);
104 OH_Drawing_SamplingOptionsDestroy(option3);
105 OH_Drawing_SamplingOptionsDestroy(optionCopy1);
106 OH_Drawing_SamplingOptionsDestroy(optionCopy2);
107 OH_Drawing_SamplingOptionsDestroy(optionCopy3);
108 }
109 } // namespace Drawing
110 } // namespace Rosen
111 } // namespace OHOS