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, 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/color_space.h"
19 #include "image/image.h"
20 
21 using namespace testing;
22 using namespace testing::ext;
23 
24 namespace OHOS {
25 namespace Rosen {
26 namespace Drawing {
27 class ColorSpaceTest : public testing::Test {
28 public:
29     static void SetUpTestCase();
30     static void TearDownTestCase();
31     void SetUp() override;
32     void TearDown() override;
33 };
34 
SetUpTestCase()35 void ColorSpaceTest::SetUpTestCase() {}
TearDownTestCase()36 void ColorSpaceTest::TearDownTestCase() {}
SetUp()37 void ColorSpaceTest::SetUp() {}
TearDown()38 void ColorSpaceTest::TearDown() {}
39 
40 /**
41  * @tc.name: CreateAndDestroy001
42  * @tc.desc:
43  * @tc.type: FUNC
44  * @tc.require: AR000GGNV3
45  * @tc.author:
46  */
47 HWTEST_F(ColorSpaceTest, CreateAndDestroy001, TestSize.Level1)
48 {
49     auto colorSpace = ColorSpace::CreateSRGB();
50     EXPECT_FALSE(colorSpace == nullptr);
51 }
52 
53 /**
54  * @tc.name: CreatedByStaticMethod001
55  * @tc.desc:
56  * @tc.type: FUNC
57  * @tc.require: AR000GGNV3
58  * @tc.author:
59  */
60 HWTEST_F(ColorSpaceTest, CreatedByStaticMethod001, TestSize.Level1)
61 {
62     auto colorSpace = ColorSpace::CreateSRGBLinear();
63     EXPECT_FALSE(colorSpace == nullptr);
64 }
65 
66 /**
67  * @tc.name: CreatedByStaticMethod003
68  * @tc.desc:
69  * @tc.type: FUNC
70  * @tc.require: AR000GGNV3
71  * @tc.author:
72  */
73 HWTEST_F(ColorSpaceTest, CreatedByStaticMethod003, TestSize.Level1)
74 {
75     Bitmap bmp;
76     BitmapFormat format { COLORTYPE_RGBA_8888, ALPHATYPE_OPAQUE };
77     bmp.Build(10, 10, format);
78     Image image;
79     image.BuildFromBitmap(bmp);
80     auto colorSpace = ColorSpace::CreateRefImage(image);
81     EXPECT_FALSE(colorSpace == nullptr);
82 }
83 
84 /**
85  * @tc.name: CreatedByStaticMethod004
86  * @tc.desc: Test for Create RGB ColorSpace
87  * @tc.type: FUNC
88  * @tc.require: I782P9
89  */
90 HWTEST_F(ColorSpaceTest, CreatedByStaticMethod004, TestSize.Level1)
91 {
92     auto colorSpace = ColorSpace::CreateRGB(CMSTransferFuncType::SRGB, CMSMatrixType::SRGB);
93     EXPECT_FALSE(colorSpace == nullptr);
94 
95     colorSpace = ColorSpace::CreateRGB(CMSTransferFuncType::DOT2, CMSMatrixType::ADOBE_RGB);
96     EXPECT_FALSE(colorSpace == nullptr);
97 
98     colorSpace = ColorSpace::CreateRGB(CMSTransferFuncType::LINEAR, CMSMatrixType::DCIP3);
99     EXPECT_FALSE(colorSpace == nullptr);
100 
101     colorSpace = ColorSpace::CreateRGB(CMSTransferFuncType::REC2020, CMSMatrixType::REC2020);
102     EXPECT_FALSE(colorSpace == nullptr);
103 
104     colorSpace = ColorSpace::CreateRGB(CMSTransferFuncType::REC2020, CMSMatrixType::XYZ);
105     EXPECT_FALSE(colorSpace == nullptr);
106 }
107 
108 /**
109  * @tc.name: CreateAndGetType001
110  * @tc.desc:
111  * @tc.type: FUNC
112  * @tc.require: AR000GGNV3
113  * @tc.author:
114  */
115 HWTEST_F(ColorSpaceTest, CreateAndGetType001, TestSize.Level1)
116 {
117     auto colorSpace = std::make_unique<ColorSpace>(ColorSpace::ColorSpaceType::NO_TYPE);
118     ASSERT_TRUE(colorSpace != nullptr);
119     auto type = colorSpace->GetType();
120     EXPECT_EQ(type, ColorSpace::ColorSpaceType::NO_TYPE);
121 }
122 
123 /**
124  * @tc.name: CreateAndGetType002
125  * @tc.desc:
126  * @tc.type: FUNC
127  * @tc.require: AR000GGNV3
128  * @tc.author:
129  */
130 HWTEST_F(ColorSpaceTest, CreateAndGetType002, TestSize.Level1)
131 {
132     auto colorSpace = std::make_unique<ColorSpace>(ColorSpace::ColorSpaceType::REF_IMAGE);
133     ASSERT_TRUE(colorSpace != nullptr);
134     auto type = colorSpace->GetType();
135     EXPECT_EQ(type, ColorSpace::ColorSpaceType::REF_IMAGE);
136 }
137 
138 /**
139  * @tc.name: CreatedBy2Args001
140  * @tc.desc:
141  * @tc.type: FUNC
142  * @tc.require: AR000GGNV3
143  * @tc.author:
144  */
145 HWTEST_F(ColorSpaceTest, CreatedByArgs001, TestSize.Level1)
146 {
147     auto colorSpace = std::make_unique<ColorSpace>(ColorSpace::ColorSpaceType::REF_IMAGE);
148     EXPECT_TRUE(colorSpace != nullptr);
149 }
150 
151 /**
152  * @tc.name: CreatedBy2Args002
153  * @tc.desc:
154  * @tc.type: FUNC
155  * @tc.require: AR000GGNV3
156  * @tc.author:
157  */
158 HWTEST_F(ColorSpaceTest, CreatedByArgs002, TestSize.Level1)
159 {
160     auto colorSpace = std::make_unique<ColorSpace>(ColorSpace::ColorSpaceType::NO_TYPE);
161     EXPECT_TRUE(colorSpace != nullptr);
162 }
163 
164 /**
165  * @tc.name: CreatedByNoArgs002
166  * @tc.desc:
167  * @tc.type: FUNC
168  * @tc.require: AR000GGNV3
169  * @tc.author:
170  */
171 HWTEST_F(ColorSpaceTest, CreatedByNoArgs003, TestSize.Level1)
172 {
173     Bitmap bmp;
174     BitmapFormat format { COLORTYPE_RGBA_8888, ALPHATYPE_OPAQUE };
175     bmp.Build(10, 10, format);
176     Image image;
177     image.BuildFromBitmap(bmp);
178     ColorSpace::ColorSpaceType colorSpaceType = ColorSpace::ColorSpaceType::SRGB_LINEAR;
179     auto colorSpace = std::make_unique<ColorSpace>(colorSpaceType, image);
180     EXPECT_TRUE(colorSpace != nullptr);
181 }
182 } // namespace Drawing
183 } // namespace Rosen
184 } // namespace OHOS
185