1 /*
2 * Copyright (C) 2021 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 <fstream>
18 #include <fcntl.h>
19 #include "directory_ex.h"
20 #include "image_packer.h"
21 #include "image_source.h"
22 #include "image_type.h"
23 #include "image_utils.h"
24 #include "incremental_pixel_map.h"
25 #include "media_errors.h"
26 #include "pixel_map.h"
27 #include "pixel_map_manager.h"
28 #include "image_receiver.h"
29 #include "image_source_util.h"
30 #include "graphic_common.h"
31 #include "image_receiver_manager.h"
32
33 using namespace testing::ext;
34 using namespace OHOS::Media;
35 namespace OHOS {
36 namespace Multimedia {
37 static const std::string IMAGE_INPUT_JPEG_PATH = "/data/local/tmp/image/test.jpg";
38 static const std::string OPTION_FORMAT_TEST = "image/jpeg";
39 static const std::int32_t OPTION_QUALITY_TEST = 100;
40 static const std::int32_t OPTION_NUMBERHINT_TEST = 1;
41
42 class InterfaceTest : public testing::Test {
43 public:
InterfaceTest()44 InterfaceTest() {}
~InterfaceTest()45 ~InterfaceTest() {}
46 };
47
48 /**
49 * @tc.name: InterfaceTest001
50 * @tc.desc: PromoteDecoding
51 * @tc.type: FUNC
52 */
HWTEST_F(InterfaceTest, InterfaceTest001, TestSize.Level3)53 HWTEST_F(InterfaceTest, InterfaceTest001, TestSize.Level3)
54 {
55 GTEST_LOG_(INFO) << "InterfaceTest: InterfaceTest001 start";
56 uint32_t errorCode = 0;
57 IncrementalSourceOptions incOpts;
58 incOpts.incrementalMode = IncrementalMode::INCREMENTAL_DATA;
59 std::unique_ptr<ImageSource> imageSource = ImageSource::CreateIncrementalImageSource(incOpts, errorCode);
60 DecodeOptions decodeOpts;
61 std::unique_ptr<IncrementalPixelMap> incPixelMap = imageSource->CreateIncrementalPixelMap(0, decodeOpts,
62 errorCode);
63 uint8_t decodeProgress = 0;
64 incPixelMap->PromoteDecoding(decodeProgress);
65 GTEST_LOG_(INFO) << "InterfaceTest: InterfaceTest001 end";
66 }
67
68 /**
69 * @tc.name: InterfaceTest002
70 * @tc.desc: DetachFromDecoding
71 * @tc.type: FUNC
72 */
HWTEST_F(InterfaceTest, InterfaceTest002, TestSize.Level3)73 HWTEST_F(InterfaceTest, InterfaceTest002, TestSize.Level3)
74 {
75 GTEST_LOG_(INFO) << "InterfaceTest: InterfaceTest002 start";
76 uint32_t errorCode = 0;
77 IncrementalSourceOptions incOpts;
78 incOpts.incrementalMode = IncrementalMode::INCREMENTAL_DATA;
79 std::unique_ptr<ImageSource> imageSource = ImageSource::CreateIncrementalImageSource(incOpts, errorCode);
80 DecodeOptions decodeOpts;
81 std::unique_ptr<IncrementalPixelMap> incPixelMap = imageSource->CreateIncrementalPixelMap(0, decodeOpts,
82 errorCode);
83 incPixelMap->DetachFromDecoding();
84 ASSERT_NE(incPixelMap, nullptr);
85 GTEST_LOG_(INFO) << "InterfaceTest: InterfaceTest002 end";
86 }
87
88 /**
89 * @tc.name: InterfaceTest003
90 * @tc.desc: GetDecodingStatus
91 * @tc.type: FUNC
92 */
HWTEST_F(InterfaceTest, InterfaceTest003, TestSize.Level3)93 HWTEST_F(InterfaceTest, InterfaceTest003, TestSize.Level3)
94 {
95 GTEST_LOG_(INFO) << "InterfaceTest: InterfaceTest003 start";
96 uint32_t errorCode = 0;
97 IncrementalSourceOptions incOpts;
98 incOpts.incrementalMode = IncrementalMode::INCREMENTAL_DATA;
99 std::unique_ptr<ImageSource> imageSource = ImageSource::CreateIncrementalImageSource(incOpts, errorCode);
100 DecodeOptions decodeOpts;
101 std::unique_ptr<IncrementalPixelMap> incPixelMap = imageSource->CreateIncrementalPixelMap(0, decodeOpts,
102 errorCode);
103 incPixelMap->DetachFromDecoding();
104 IncrementalDecodingStatus status = incPixelMap->GetDecodingStatus();
105 ASSERT_EQ(status.decodingProgress, 0);
106 GTEST_LOG_(INFO) << "InterfaceTest: InterfaceTest003 end";
107 }
108
109 /**
110 * @tc.name: InterfaceTest004
111 * @tc.desc: FreePixels
112 * @tc.type: FUNC
113 */
HWTEST_F(InterfaceTest, InterfaceTest004, TestSize.Level3)114 HWTEST_F(InterfaceTest, InterfaceTest004, TestSize.Level3)
115 {
116 GTEST_LOG_(INFO) << "InterfaceTest: InterfaceTest004 start";
117 PixelMap *pixelMap = nullptr;
118 PixelMapManager pixelMapManager(pixelMap);
119 pixelMapManager.FreePixels();
120 ASSERT_EQ(&pixelMapManager.GetPixelMap(), nullptr);
121 GTEST_LOG_(INFO) << "InterfaceTest: InterfaceTest004 end";
122 }
123
124 /**
125 * @tc.name: InterfaceTest005
126 * @tc.desc: Invalid
127 * @tc.type: FUNC
128 */
HWTEST_F(InterfaceTest, InterfaceTest005, TestSize.Level3)129 HWTEST_F(InterfaceTest, InterfaceTest005, TestSize.Level3)
130 {
131 GTEST_LOG_(INFO) << "InterfaceTest: InterfaceTest005 start";
132 PixelMap *pixelMap = nullptr;
133 PixelMapManager pixelMapManager(pixelMap);
134 bool flag = pixelMapManager.Invalid();
135 ASSERT_EQ(flag, true);
136 GTEST_LOG_(INFO) << "InterfaceTest: InterfaceTest005 end";
137 }
138
139 /**
140 * @tc.name: InterfaceTest006
141 * @tc.desc: GetPixelMap
142 * @tc.type: FUNC
143 */
HWTEST_F(InterfaceTest, InterfaceTest006, TestSize.Level3)144 HWTEST_F(InterfaceTest, InterfaceTest006, TestSize.Level3)
145 {
146 GTEST_LOG_(INFO) << "InterfaceTest: InterfaceTest006 start";
147 PixelMap *pixelMap = nullptr;
148 PixelMapManager pixelMapManager(pixelMap);
149 ASSERT_EQ(&pixelMapManager.GetPixelMap(), nullptr);
150 GTEST_LOG_(INFO) << "InterfaceTest: InterfaceTest006 end";
151 }
152
153 /**
154 * @tc.name: InterfaceTest007
155 * @tc.desc: GetByteCount
156 * @tc.type: FUNC
157 */
HWTEST_F(InterfaceTest, InterfaceTest007, TestSize.Level3)158 HWTEST_F(InterfaceTest, InterfaceTest007, TestSize.Level3)
159 {
160 GTEST_LOG_(INFO) << "InterfaceTest: InterfaceTest007 start";
161 PixelMap *pixelMap = nullptr;
162 PixelMapManager pixelMapManager(pixelMap);
163 int32_t count = pixelMapManager.GetByteCount();
164 ASSERT_EQ(count, 0);
165 GTEST_LOG_(INFO) << "InterfaceTest: InterfaceTest007 end";
166 }
167
168 /**
169 * @tc.name: InterfaceTest008
170 * @tc.desc: Ref
171 * @tc.type: FUNC
172 */
HWTEST_F(InterfaceTest, InterfaceTest008, TestSize.Level3)173 HWTEST_F(InterfaceTest, InterfaceTest008, TestSize.Level3)
174 {
175 GTEST_LOG_(INFO) << "InterfaceTest: InterfaceTest008 start";
176 PixelMap *pixelMap = nullptr;
177 PixelMapManager pixelMapManager(pixelMap);
178 pixelMapManager.Ref();
179 ASSERT_EQ(pixelMap, nullptr);
180 GTEST_LOG_(INFO) << "InterfaceTest: InterfaceTest008 end";
181 }
182
183 /**
184 * @tc.name: InterfaceTest009
185 * @tc.desc: UnRef
186 * @tc.type: FUNC
187 */
HWTEST_F(InterfaceTest, InterfaceTest009, TestSize.Level3)188 HWTEST_F(InterfaceTest, InterfaceTest009, TestSize.Level3)
189 {
190 GTEST_LOG_(INFO) << "InterfaceTest: InterfaceTest009 start";
191 PixelMap *pixelMap = nullptr;
192 PixelMapManager pixelMapManager(pixelMap);
193 pixelMapManager.UnRef();
194 ASSERT_EQ(pixelMap, nullptr);
195 GTEST_LOG_(INFO) << "InterfaceTest: InterfaceTest009 end";
196 }
197
198 /**
199 * @tc.name: InterfaceTest0010
200 * @tc.desc: ImagePacker StartPacking
201 * @tc.type: FUNC
202 */
HWTEST_F(InterfaceTest, InterfaceTest0010, TestSize.Level3)203 HWTEST_F(InterfaceTest, InterfaceTest0010, TestSize.Level3)
204 {
205 GTEST_LOG_(INFO) << "InterfaceTest: InterfaceTest0010 start";
206 ImagePacker imagePacker;
207 PackOption option;
208 option.format = OPTION_FORMAT_TEST;
209 option.quality = OPTION_QUALITY_TEST;
210 option.numberHint = OPTION_NUMBERHINT_TEST;
211 size_t bufferSize = 0;
212 bool ret = ImageUtils::GetFileSize(IMAGE_INPUT_JPEG_PATH, bufferSize);
213 ASSERT_EQ(ret, true);
214 uint8_t *buffer = reinterpret_cast<uint8_t *>(malloc(bufferSize));
215 imagePacker.StartPacking(buffer, bufferSize, option);
216 GTEST_LOG_(INFO) << "InterfaceTest: InterfaceTest0010 end";
217 }
218
219 /**
220 * @tc.name: InterfaceTest0011
221 * @tc.desc: ImagePacker StartPacking
222 * @tc.type: FUNC
223 */
HWTEST_F(InterfaceTest, InterfaceTest0011, TestSize.Level3)224 HWTEST_F(InterfaceTest, InterfaceTest0011, TestSize.Level3)
225 {
226 GTEST_LOG_(INFO) << "InterfaceTest: InterfaceTest0011 start";
227 ImagePacker imagePacker;
228 PackOption option;
229 option.format = OPTION_FORMAT_TEST;
230 option.quality = OPTION_QUALITY_TEST;
231 option.numberHint = OPTION_NUMBERHINT_TEST;
232 size_t bufferSize = 0;
233 bool ret = ImageUtils::GetFileSize(IMAGE_INPUT_JPEG_PATH, bufferSize);
234 ASSERT_EQ(ret, true);
235 uint8_t *buffer = nullptr;
236 imagePacker.StartPacking(buffer, bufferSize, option);
237 GTEST_LOG_(INFO) << "InterfaceTest: InterfaceTest0011 end";
238 }
239
240 /**
241 * @tc.name: InterfaceTest0012
242 * @tc.desc: ImagePacker StartPacking
243 * @tc.type: FUNC
244 */
HWTEST_F(InterfaceTest, InterfaceTest0012, TestSize.Level3)245 HWTEST_F(InterfaceTest, InterfaceTest0012, TestSize.Level3)
246 {
247 GTEST_LOG_(INFO) << "InterfaceTest: InterfaceTest0012 start";
248 ImagePacker imagePacker;
249 PackOption option;
250 option.format = OPTION_FORMAT_TEST;
251 option.quality = OPTION_QUALITY_TEST;
252 option.numberHint = OPTION_NUMBERHINT_TEST;
253 size_t bufferSize = 0;
254 uint8_t *buffer = reinterpret_cast<uint8_t *>(malloc(bufferSize));
255 ASSERT_NE(buffer, nullptr);
256 uint32_t tmp = imagePacker.StartPacking(buffer, bufferSize, option);
257 ASSERT_EQ(tmp, SUCCESS);
258 GTEST_LOG_(INFO) << "InterfaceTest: InterfaceTest0012 end";
259 }
260 }
261 }