1/*
2 * Copyright (c) 2022 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 "gtest/gtest.h"
17#include "drawing_bitmap.h"
18#include "drawing_image.h"
19
20using namespace testing;
21using namespace testing::ext;
22
23namespace OHOS {
24namespace Rosen {
25namespace Drawing {
26class NativeImageTest : public testing::Test {
27public:
28    static void SetUpTestCase();
29    static void TearDownTestCase();
30    void SetUp() override;
31    void TearDown() override;
32};
33
34void NativeImageTest::SetUpTestCase() {}
35void NativeImageTest::TearDownTestCase() {}
36void NativeImageTest::SetUp() {}
37void NativeImageTest::TearDown() {}
38
39/*
40 * @tc.name: NativeImageTest_BuildFromBitmap001
41 * @tc.desc: test BuildFromBitmap
42 * @tc.size  : MediumTest
43 * @tc.type  : Function
44 * @tc.level : Level 1
45 */
46HWTEST_F(NativeImageTest, NativeImageTest_BuildFromBitmap001, TestSize.Level1)
47{
48    OH_Drawing_Image* image = OH_Drawing_ImageCreate();
49    EXPECT_NE(image, nullptr);
50    OH_Drawing_Bitmap* bitmap = OH_Drawing_BitmapCreate();
51    EXPECT_NE(bitmap, nullptr);
52    OH_Drawing_BitmapFormat cFormat{COLOR_FORMAT_RGBA_8888, ALPHA_FORMAT_OPAQUE};
53    constexpr uint32_t width = 200;
54    constexpr uint32_t height = 200;
55    OH_Drawing_BitmapBuild(bitmap, width, height, &cFormat);
56    EXPECT_TRUE(OH_Drawing_ImageBuildFromBitmap(image, bitmap));
57    EXPECT_TRUE(!OH_Drawing_ImageBuildFromBitmap(image, nullptr));
58    EXPECT_TRUE(!OH_Drawing_ImageBuildFromBitmap(nullptr, nullptr));
59    OH_Drawing_BitmapDestroy(bitmap);
60    OH_Drawing_ImageDestroy(image);
61}
62
63/*
64 * @tc.name: NativeImageTest_GetWidth001
65 * @tc.desc: test GetWidth
66 * @tc.size  : MediumTest
67 * @tc.type  : Function
68 * @tc.level : Level 1
69 */
70HWTEST_F(NativeImageTest, NativeImageTest_GetWidth001, TestSize.Level1)
71{
72    OH_Drawing_Image* image = OH_Drawing_ImageCreate();
73    EXPECT_NE(image, nullptr);
74    OH_Drawing_Bitmap* bitmap = OH_Drawing_BitmapCreate();
75    EXPECT_NE(bitmap, nullptr);
76    OH_Drawing_BitmapFormat cFormat{COLOR_FORMAT_RGBA_8888, ALPHA_FORMAT_OPAQUE};
77    constexpr uint32_t width = 200;
78    constexpr uint32_t height = 200;
79    OH_Drawing_BitmapBuild(bitmap, width, height, &cFormat);
80    OH_Drawing_ImageBuildFromBitmap(image, bitmap);
81    EXPECT_EQ(OH_Drawing_ImageGetWidth(image), width);
82    EXPECT_EQ(OH_Drawing_ImageGetWidth(nullptr), -1);
83    OH_Drawing_BitmapDestroy(bitmap);
84    OH_Drawing_ImageDestroy(image);
85}
86
87/*
88 * @tc.name: NativeImageTest_GetHeight001
89 * @tc.desc: test GetHeight
90 * @tc.size  : MediumTest
91 * @tc.type  : Function
92 * @tc.level : Level 1
93 */
94HWTEST_F(NativeImageTest, NativeImageTest_GetHeight001, TestSize.Level1)
95{
96    OH_Drawing_Image* image = OH_Drawing_ImageCreate();
97    EXPECT_NE(image, nullptr);
98    OH_Drawing_Bitmap* bitmap = OH_Drawing_BitmapCreate();
99    EXPECT_NE(bitmap, nullptr);
100    OH_Drawing_BitmapFormat cFormat{COLOR_FORMAT_RGBA_8888, ALPHA_FORMAT_OPAQUE};
101    constexpr uint32_t width = 200;
102    constexpr uint32_t height = 200;
103    OH_Drawing_BitmapBuild(bitmap, width, height, &cFormat);
104    OH_Drawing_ImageBuildFromBitmap(image, bitmap);
105    EXPECT_EQ(OH_Drawing_ImageGetHeight(image), height);
106    EXPECT_EQ(OH_Drawing_ImageGetHeight(nullptr), -1);
107    OH_Drawing_BitmapDestroy(bitmap);
108    OH_Drawing_ImageDestroy(image);
109}
110
111/*
112 * @tc.name: NativeImageTest_GetImageInfo001
113 * @tc.desc: test GetImageInfo
114 * @tc.size  : MediumTest
115 * @tc.type  : Function
116 * @tc.level : Level 1
117 */
118HWTEST_F(NativeImageTest, NativeImageTest_GetImageInfo001, TestSize.Level1)
119{
120    OH_Drawing_ImageGetImageInfo(nullptr, nullptr);
121    OH_Drawing_Image* image = OH_Drawing_ImageCreate();
122    EXPECT_NE(image, nullptr);
123    OH_Drawing_Bitmap* bitmap = OH_Drawing_BitmapCreate();
124    EXPECT_NE(bitmap, nullptr);
125    OH_Drawing_BitmapFormat cFormat{COLOR_FORMAT_RGBA_8888, ALPHA_FORMAT_OPAQUE};
126    constexpr uint32_t width = 200;
127    constexpr uint32_t height = 200;
128    OH_Drawing_BitmapBuild(bitmap, width, height, &cFormat);
129    OH_Drawing_ImageBuildFromBitmap(image, bitmap);
130    OH_Drawing_ImageGetImageInfo(image, nullptr);
131    OH_Drawing_Image_Info imageInfo;
132    OH_Drawing_ImageGetImageInfo(image, &imageInfo);
133    EXPECT_EQ(imageInfo.width, width);
134    OH_Drawing_BitmapDestroy(bitmap);
135    OH_Drawing_ImageDestroy(image);
136}
137} // namespace Drawing
138} // namespace Rosen
139} // namespace OHOS