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 #include <gtest/gtest.h>
16 #define IMAGE_COLORSPACE_FLAG
17 #define private public
18 #define protected public
19 #include <fcntl.h>
20 #include "buffer_source_stream.h"
21 #include "exif_info.h"
22 #include "plugin_export.h"
23 #include "icc_profile_info.h"
24 #include "jpeg_decoder.h"
25 #include "jpeg_encoder.h"
26 #include "media_errors.h"
27 
28 using namespace testing::ext;
29 using namespace OHOS::Media;
30 using namespace OHOS::ImagePlugin;
31 namespace OHOS {
32 namespace Media {
33 static const std::string IMAGE_INPUT_NULL_JPEG_PATH = "/data/local/tmp/image/test_null.jpg";
34 static const std::string IMAGE_INPUT_JPEG_PATH = "/data/local/tmp/image/test_exif.jpg";
35 static const std::string IMAGE_INPUT_TXT_PATH = "/data/local/tmp/image/test.txt";
36 constexpr uint32_t COMPONENT_NUM_RGBA = 4;
37 constexpr uint32_t COMPONENT_NUM_BGRA = 4;
38 constexpr uint32_t COMPONENT_NUM_RGB = 3;
39 constexpr uint32_t COMPONENT_NUM_GRAY = 1;
40 constexpr uint8_t COMPONENT_NUM_YUV420SP = 3;
41 constexpr uint8_t SAMPLE_FACTOR_TWO = 2;
42 class PluginLibJpegTest : public testing::Test {
43 public:
PluginLibJpegTest()44     PluginLibJpegTest() {}
~PluginLibJpegTest()45     ~PluginLibJpegTest() {}
46 };
47 
48 /**
49  * @tc.name: exif_info001
50  * @tc.desc: ParseExifData
51  * @tc.type: FUNC
52  */
53 HWTEST_F(PluginLibJpegTest, exif_info001, TestSize.Level3)
54 {
55     GTEST_LOG_(INFO) << "PluginLibJpegTest: exif_info001 start";
56     EXIFInfo exinfo;
57     unsigned char *buf = nullptr;
58     unsigned len = 1000;
59     exinfo.ParseExifData(buf, len);
60     GTEST_LOG_(INFO) << "PluginLibJpegTest: exif_info001 end";
61 }
62 
63 /**
64  * @tc.name: exif_info001_1
65  * @tc.desc: ParseExifData
66  * @tc.type: FUNC
67  */
68 HWTEST_F(PluginLibJpegTest, exif_info001_1, TestSize.Level3)
69 {
70     GTEST_LOG_(INFO) << "PluginLibJpegTest: exif_info001_1 start";
71     EXIFInfo exinfo;
72     unsigned char buf = 'n';
73     unsigned len = 1000;
74     exinfo.ParseExifData(&buf, len);
75     GTEST_LOG_(INFO) << "PluginLibJpegTest: exif_info001_1 end";
76 }
77 
78 /**
79  * @tc.name: exif_info001_2
80  * @tc.desc: ParseExifData
81  * @tc.type: FUNC
82  */
83 HWTEST_F(PluginLibJpegTest, exif_info001_2, TestSize.Level3)
84 {
85     GTEST_LOG_(INFO) << "PluginLibJpegTest: exif_info001_2 start";
86     EXIFInfo exinfo;
87     unsigned char *buf = nullptr;
88     unsigned len = 0;
89     exinfo.ParseExifData(buf, len);
90     GTEST_LOG_(INFO) << "PluginLibJpegTest: exif_info001_2 end";
91 }
92 
93 /**
94  * @tc.name: exif_info001_3
95  * @tc.desc: ParseExifData
96  * @tc.type: FUNC
97  */
98 HWTEST_F(PluginLibJpegTest, exif_info001_3, TestSize.Level3)
99 {
100     GTEST_LOG_(INFO) << "PluginLibJpegTest: exif_info001_3 start";
101     EXIFInfo exinfo;
102     string data = "";
103     exinfo.ParseExifData(data);
104     GTEST_LOG_(INFO) << "PluginLibJpegTest: exif_info001_3 end";
105 }
106 
107 /**
108  * @tc.name: exif_info001_4
109  * @tc.desc: ParseExifData
110  * @tc.type: FUNC
111  */
112 HWTEST_F(PluginLibJpegTest, exif_info001_4, TestSize.Level3)
113 {
114     GTEST_LOG_(INFO) << "PluginLibJpegTest: exif_info001_4 start";
115     EXIFInfo exinfo;
116     string data = "aaaaaaa";
117     exinfo.ParseExifData(data);
118     GTEST_LOG_(INFO) << "PluginLibJpegTest: exif_info001_4 end";
119 }
120 
121 /**
122  * @tc.name: exif_info002
123  * @tc.desc: ModifyExifData
124  * @tc.type: FUNC
125  */
126 HWTEST_F(PluginLibJpegTest, exif_info002, TestSize.Level3)
127 {
128     GTEST_LOG_(INFO) << "PluginLibJpegTest: exif_info002 start";
129     EXIFInfo exinfo;
130     ExifTag tag = EXIF_TAG_GPS_LATITUDE;
131     string value = "111";
132     uint32_t ret = exinfo.ModifyExifData(tag, value, "");
133     ASSERT_EQ(ret, ERR_MEDIA_IO_ABNORMAL);
134     GTEST_LOG_(INFO) << "PluginLibJpegTest: exif_info002 end";
135 }
136 
137 /**
138  * @tc.name: exif_info003
139  * @tc.desc: ModifyExifData
140  * @tc.type: FUNC
141  */
142 HWTEST_F(PluginLibJpegTest, exif_info003, TestSize.Level3)
143 {
144     GTEST_LOG_(INFO) << "PluginLibJpegTest: exif_info003 start";
145     EXIFInfo exinfo;
146     ExifTag tag = EXIF_TAG_GPS_LATITUDE;
147     string value = "111";
148     uint32_t ret = exinfo.ModifyExifData(tag, value, IMAGE_INPUT_NULL_JPEG_PATH);
149     ASSERT_EQ(ret, ERR_MEDIA_BUFFER_TOO_SMALL);
150     GTEST_LOG_(INFO) << "PluginLibJpegTest: exif_info003 end";
151 }
152 
153 /**
154  * @tc.name: exif_info004
155  * @tc.desc: ModifyExifData
156  * @tc.type: FUNC
157  */
158 HWTEST_F(PluginLibJpegTest, exif_info004, TestSize.Level3)
159 {
160     GTEST_LOG_(INFO) << "PluginLibJpegTest: exif_info004 start";
161     EXIFInfo exinfo;
162     ExifTag tag = EXIF_TAG_GPS_LATITUDE;
163     string value = "111";
164     uint32_t ret = exinfo.ModifyExifData(tag, value, IMAGE_INPUT_TXT_PATH);
165     ASSERT_NE(ret, SUCCESS);
166     GTEST_LOG_(INFO) << "PluginLibJpegTest: exif_info004 end";
167 }
168 
169 /**
170  * @tc.name: exif_info005
171  * @tc.desc: ModifyExifData
172  * @tc.type: FUNC
173  */
174 HWTEST_F(PluginLibJpegTest, exif_info005, TestSize.Level3)
175 {
176     GTEST_LOG_(INFO) << "PluginLibJpegTest: exif_info005 start";
177     EXIFInfo exinfo;
178     ExifTag tag = EXIF_TAG_GPS_LATITUDE;
179     string value = "111";
180     int fd = open("/data/local/tmp/image/test_noexit.jpg", O_RDWR, S_IRUSR | S_IWUSR);
181     uint32_t ret = exinfo.ModifyExifData(tag, value, fd);
182     ASSERT_NE(ret, SUCCESS);
183     GTEST_LOG_(INFO) << "PluginLibJpegTest: exif_info005 end";
184 }
185 
186 /**
187  * @tc.name: exif_info006
188  * @tc.desc: ModifyExifData
189  * @tc.type: FUNC
190  */
191 HWTEST_F(PluginLibJpegTest, exif_info006, TestSize.Level3)
192 {
193     GTEST_LOG_(INFO) << "PluginLibJpegTest: exif_info006 start";
194     EXIFInfo exinfo;
195     ExifTag tag = EXIF_TAG_GPS_LATITUDE;
196     string value = "111";
197     const int fd = open("/data/local/tmp/image/test_null.jpg", O_RDWR | O_CREAT, S_IRUSR | S_IWUSR);
198     uint32_t ret = exinfo.ModifyExifData(tag, value, fd);
199     ASSERT_EQ(ret, ERR_MEDIA_BUFFER_TOO_SMALL);
200     GTEST_LOG_(INFO) << "PluginLibJpegTest: exif_info006 end";
201 }
202 
203 /**
204  * @tc.name: exif_info007
205  * @tc.desc: ModifyExifData
206  * @tc.type: FUNC
207  */
208 HWTEST_F(PluginLibJpegTest, exif_info007, TestSize.Level3)
209 {
210     GTEST_LOG_(INFO) << "PluginLibJpegTest: exif_info007 start";
211     EXIFInfo exinfo;
212     ExifTag tag = EXIF_TAG_GPS_LATITUDE;
213     string value = "111";
214     const int fd = open("/data/local/tmp/image/test.txt", O_RDWR | O_CREAT, S_IRUSR | S_IWUSR);
215     uint32_t ret = exinfo.ModifyExifData(tag, value, fd);
216     ASSERT_NE(ret, SUCCESS);
217     GTEST_LOG_(INFO) << "PluginLibJpegTest: exif_info007 end";
218 }
219 
220 /**
221  * @tc.name: exif_info008
222  * @tc.desc: ModifyExifData
223  * @tc.type: FUNC
224  */
225 HWTEST_F(PluginLibJpegTest, exif_info008, TestSize.Level3)
226 {
227     GTEST_LOG_(INFO) << "PluginLibJpegTest: exif_info008 start";
228     EXIFInfo exinfo;
229     ExifTag tag = EXIF_TAG_GPS_LATITUDE;
230     unsigned char *data = nullptr;
231     string value = "111";
232     uint32_t size = 0;
233     uint32_t ret = exinfo.ModifyExifData(tag, value, data, size);
234     ASSERT_EQ(ret, ERR_IMAGE_SOURCE_DATA);
235     GTEST_LOG_(INFO) << "PluginLibJpegTest: exif_info008 end";
236 }
237 
238 /**
239  * @tc.name: exif_info009
240  * @tc.desc: ModifyExifData
241  * @tc.type: FUNC
242  */
243 HWTEST_F(PluginLibJpegTest, exif_info009, TestSize.Level3)
244 {
245     GTEST_LOG_(INFO) << "PluginLibJpegTest: exif_info009 start";
246     EXIFInfo exinfo;
247     ExifTag tag = EXIF_TAG_GPS_LATITUDE;
248     unsigned char data = 'n';
249     string value = "111";
250     uint32_t size = 0;
251     uint32_t ret = exinfo.ModifyExifData(tag, value, &data, size);
252     ASSERT_EQ(ret, ERR_MEDIA_BUFFER_TOO_SMALL);
253     GTEST_LOG_(INFO) << "PluginLibJpegTest: exif_info009 end";
254 }
255 
256 /**
257  * @tc.name: exif_info010
258  * @tc.desc: ModifyExifData
259  * @tc.type: FUNC
260  */
261 HWTEST_F(PluginLibJpegTest, exif_info010, TestSize.Level3)
262 {
263     GTEST_LOG_(INFO) << "PluginLibJpegTest: exif_info010 start";
264     EXIFInfo exinfo;
265     ExifTag tag = EXIF_TAG_GPS_LATITUDE;
266     unsigned char data = 'n';
267     std::string value = "111";
268     uint32_t size = 1;
269     uint32_t ret = exinfo.ModifyExifData(tag, value, &data, size);
270     ASSERT_EQ(ret, ERR_IMAGE_MISMATCHED_FORMAT);
271     GTEST_LOG_(INFO) << "PluginLibJpegTest: exif_info010 end";
272 }
273 
274 /**
275  * @tc.name: exif_info011
276  * @tc.desc: ModifyExifData
277  * @tc.type: FUNC
278  */
279 HWTEST_F(PluginLibJpegTest, exif_info011, TestSize.Level3)
280 {
281     GTEST_LOG_(INFO) << "PluginLibJpegTest: exif_info011 start";
282     EXIFInfo exinfo;
283     ExifTag tag = EXIF_TAG_GPS_LATITUDE;
284     unsigned char data = 0xFF;
285     std::string value = "111";
286     uint32_t size = 1;
287     uint32_t ret = exinfo.ModifyExifData(tag, value, &data, size);
288     ASSERT_EQ(ret, ERR_IMAGE_MISMATCHED_FORMAT);
289     GTEST_LOG_(INFO) << "PluginLibJpegTest: exif_info011 end";
290 }
291 
292 /**
293  * @tc.name: exif_info012
294  * @tc.desc: GetFilterArea
295  * @tc.type: FUNC
296  */
297 HWTEST_F(PluginLibJpegTest, exif_info012, TestSize.Level3)
298 {
299     GTEST_LOG_(INFO) << "PluginLibJpegTest: exif_info012 start";
300     EXIFInfo exinfo;
301     const uint32_t bufSize = 5;
302     uint8_t buf[bufSize] = "exif";
303     int filterType = 0;
304     std::vector<std::pair<uint32_t, uint32_t>> ranges;
305     exinfo.GetFilterArea(buf, bufSize, filterType, ranges);
306     GTEST_LOG_(INFO) << "PluginLibJpegTest: exif_info012 end";
307 }
308 
309 /**
310  * @tc.name: exif_info013
311  * @tc.desc: GetFilterArea
312  * @tc.type: FUNC
313  */
314 HWTEST_F(PluginLibJpegTest, exif_info013, TestSize.Level3)
315 {
316     GTEST_LOG_(INFO) << "PluginLibJpegTest: exif_info013 start";
317     EXIFInfo exinfo;
318     const uint32_t bufSize = 5;
319     uint8_t buf[bufSize] = "exif";
320     int filterType = 0;
321     std::vector<std::pair<uint32_t, uint32_t>> ranges;
322     uint32_t ret = exinfo.GetFilterArea(buf, bufSize, filterType, ranges);
323     ASSERT_EQ(ret, 1);
324     GTEST_LOG_(INFO) << "PluginLibJpegTest: exif_info013 end";
325 }
326 
327 /**
328  * @tc.name: exif_info014
329  * @tc.desc: IsIFDPointerTag
330  * @tc.type: FUNC
331  */
332 HWTEST_F(PluginLibJpegTest, exif_info014, TestSize.Level3)
333 {
334     GTEST_LOG_(INFO) << "PluginLibJpegTest: IsIFDPointerTag start";
335     const uint8_t *buf = new uint8_t;
336     ByteOrderedBuffer byteorder(buf, 10);
337     bool ret;
338     ret = byteorder.IsIFDPointerTag(0x014a);
339     ASSERT_EQ(ret, true);
340     ret = byteorder.IsIFDPointerTag(0x8769);
341     ASSERT_EQ(ret, true);
342     ret = byteorder.IsIFDPointerTag(0x8825);
343     ASSERT_EQ(ret, true);
344     ret = byteorder.IsIFDPointerTag(0xa005);
345     ASSERT_EQ(ret, true);
346     ret = byteorder.IsIFDPointerTag(0xa301);
347     ASSERT_EQ(ret, false);
348     ret = byteorder.IsIFDPointerTag(-1);
349     ASSERT_EQ(ret, false);
350     GTEST_LOG_(INFO) << "PluginLibJpegTest: IsIFDPointerTag end";
351 }
352 
353 /**
354  * @tc.name: exif_info015
355  * @tc.desc: GetIFDOfIFDPointerTag
356  * @tc.type: FUNC
357  */
358 HWTEST_F(PluginLibJpegTest, exif_info015, TestSize.Level3)
359 {
360     GTEST_LOG_(INFO) << "PluginLibJpegTest: GetIFDOfIFDPointerTag start";
361     const uint8_t *buf = new uint8_t;
362     ByteOrderedBuffer byteorder(buf, 10);
363     ExifIfd ret;
364     ret = byteorder.GetIFDOfIFDPointerTag(0x8769);
365     ASSERT_EQ(ret, EXIF_IFD_EXIF);
366     ret = byteorder.GetIFDOfIFDPointerTag(0x8825);
367     ASSERT_EQ(ret, EXIF_IFD_GPS);
368     ret = byteorder.GetIFDOfIFDPointerTag(0xa005);
369     ASSERT_EQ(ret, EXIF_IFD_INTEROPERABILITY);
370     ret = byteorder.GetIFDOfIFDPointerTag(-1);
371     ASSERT_EQ(ret, EXIF_IFD_COUNT);
372     GTEST_LOG_(INFO) << "PluginLibJpegTest: GetIFDOfIFDPointerTag end";
373 }
374 
375 /**
376  * @tc.name: exif_info016
377  * @tc.desc: CheckExifEntryValid
378  * @tc.type: FUNC
379  */
380 HWTEST_F(PluginLibJpegTest, exif_info016, TestSize.Level3)
381 {
382     GTEST_LOG_(INFO) << "PluginLibJpegTest: CheckExifEntryValid start";
383     EXIFInfo exinfo;
384     bool ret;
385     ret = exinfo.CheckExifEntryValid(EXIF_IFD_0, EXIF_TAG_ORIENTATION);
386     ASSERT_EQ(ret, true);
387     ret = exinfo.CheckExifEntryValid(EXIF_IFD_EXIF, EXIF_TAG_DATE_TIME_ORIGINAL);
388     ASSERT_EQ(ret, true);
389     ret = exinfo.CheckExifEntryValid(EXIF_IFD_GPS, EXIF_TAG_GPS_LATITUDE);
390     ASSERT_EQ(ret, true);
391     GTEST_LOG_(INFO) << "PluginLibJpegTest: CheckExifEntryValid end";
392 }
393 
394 /**
395  * @tc.name: CreateExifData001
396  * @tc.desc: CreateExifData
397  * @tc.type: FUNC
398  */
399 HWTEST_F(PluginLibJpegTest, CreateExifData001, TestSize.Level3)
400 {
401     GTEST_LOG_(INFO) << "PluginLibJpegTest: CreateExifData001 start";
402     EXIFInfo exinfo;
403     unsigned char buf[20] = "ttttttExif";
404     ExifData *ptrData = exif_data_new();
405     bool isNewExifData = true;
406     bool ret = exinfo.CreateExifData(buf, 5, &ptrData, isNewExifData);
407     ASSERT_EQ(ret, true);
408     if (ptrData != nullptr) {
409         exif_data_unref(ptrData);
410         ptrData = nullptr;
411     }
412     GTEST_LOG_(INFO) << "PluginLibJpegTest: CreateExifData001 end";
413 }
414 
415 /**
416  * @tc.name: CreateExifData002
417  * @tc.desc: CreateExifData
418  * @tc.type: FUNC
419  */
420 HWTEST_F(PluginLibJpegTest, CreateExifData002, TestSize.Level3)
421 {
422     GTEST_LOG_(INFO) << "PluginLibJpegTest: CreateExifData002 start";
423     EXIFInfo exinfo;
424     unsigned char buf[20] = "tttttttttt";
425     ExifData *ptrData = exif_data_new();
426     bool isNewExifData = true;
427     bool ret = exinfo.CreateExifData(buf, 5, &ptrData, isNewExifData);
428     ASSERT_EQ(ret, true);
429     if (ptrData != nullptr) {
430         exif_data_unref(ptrData);
431         ptrData = nullptr;
432     }
433     GTEST_LOG_(INFO) << "PluginLibJpegTest: CreateExifData002 end";
434 }
435 
436 /**
437  * @tc.name: GetExifByteOrder001
438  * @tc.desc: GetExifByteOrder
439  * @tc.type: FUNC
440  */
441 HWTEST_F(PluginLibJpegTest, GetExifByteOrder001, TestSize.Level3)
442 {
443     GTEST_LOG_(INFO) << "PluginLibJpegTest: GetExifByteOrder001 start";
444     EXIFInfo exinfo;
445     unsigned char *buf = new unsigned char;
446     ExifByteOrder ret = exinfo.GetExifByteOrder(true, buf);
447     ASSERT_EQ(ret, EXIF_BYTE_ORDER_INTEL);
448     delete buf;
449     buf = nullptr;
450     GTEST_LOG_(INFO) << "PluginLibJpegTest: GetExifByteOrder001 end";
451 }
452 
453 /**
454  * @tc.name: GetExifByteOrder002
455  * @tc.desc: GetExifByteOrder
456  * @tc.type: FUNC
457  */
458 HWTEST_F(PluginLibJpegTest, GetExifByteOrder002, TestSize.Level3)
459 {
460     GTEST_LOG_(INFO) << "PluginLibJpegTest: GetExifByteOrder002 start";
461     EXIFInfo exinfo;
462     unsigned char buf[20] = "ttttttttttttMM";
463     ExifByteOrder ret = exinfo.GetExifByteOrder(false, buf);
464     ASSERT_EQ(ret, EXIF_BYTE_ORDER_MOTOROLA);
465     GTEST_LOG_(INFO) << "PluginLibJpegTest: GetExifByteOrder002 end";
466 }
467 
468 /**
469  * @tc.name: GetExifByteOrder003
470  * @tc.desc: GetExifByteOrder
471  * @tc.type: FUNC
472  */
473 HWTEST_F(PluginLibJpegTest, GetExifByteOrder003, TestSize.Level3)
474 {
475     GTEST_LOG_(INFO) << "PluginLibJpegTest: GetExifByteOrder003 start";
476     EXIFInfo exinfo;
477     unsigned char buf[20] = "tttttttttttttt";
478     ExifByteOrder ret = exinfo.GetExifByteOrder(false, buf);
479     ASSERT_EQ(ret, EXIF_BYTE_ORDER_INTEL);
480     GTEST_LOG_(INFO) << "PluginLibJpegTest: GetExifByteOrder003 end";
481 }
482 
483 /**
484  * @tc.name: WriteExifDataToFile001
485  * @tc.desc: WriteExifDataToFile
486  * @tc.type: FUNC
487  */
488 HWTEST_F(PluginLibJpegTest, WriteExifDataToFile001, TestSize.Level3)
489 {
490     GTEST_LOG_(INFO) << "PluginLibJpegTest: WriteExifDataToFile001 start";
491     EXIFInfo exinfo;
492     bool ret = exinfo.WriteExifDataToFile(nullptr, 5, 20, nullptr, nullptr);
493     ASSERT_EQ(ret, false);
494     GTEST_LOG_(INFO) << "PluginLibJpegTest: WriteExifDataToFile001 end";
495 }
496 
497 /**
498  * @tc.name: ReleaseSource001
499  * @tc.desc: ReleaseSource
500  * @tc.type: FUNC
501  */
502 HWTEST_F(PluginLibJpegTest, ReleaseSource001, TestSize.Level3)
503 {
504     GTEST_LOG_(INFO) << "PluginLibJpegTest: ReleaseSource001 start";
505     EXIFInfo exinfo;
506     unsigned char *ptrBuf = new unsigned char;
507     FILE *file = fopen("/data/local/tmp/image/test.txt", "r+");
508     exinfo.ReleaseSource(&ptrBuf, &file);
509     ASSERT_EQ(ptrBuf, nullptr);
510     ASSERT_EQ(file, nullptr);
511     GTEST_LOG_(INFO) << "PluginLibJpegTest: ReleaseSource001 end";
512 }
513 
514 /**
515  * @tc.name: UpdateCacheExifData001
516  * @tc.desc: UpdateCacheExifData
517  * @tc.type: FUNC
518  */
519 HWTEST_F(PluginLibJpegTest, UpdateCacheExifData001, TestSize.Level3)
520 {
521     GTEST_LOG_(INFO) << "PluginLibJpegTest: UpdateCacheExifData001 start";
522     EXIFInfo exinfo;
523     FILE *file = fopen("/data/local/tmp/image/test.txt", "rb");
524     exinfo.UpdateCacheExifData(file);
525     fclose(file);
526     GTEST_LOG_(INFO) << "PluginLibJpegTest: UpdateCacheExifData001 end";
527 }
528 
529 /**
530  * @tc.name: GetAreaFromExifEntries001
531  * @tc.desc: GetAreaFromExifEntries
532  * @tc.type: FUNC
533  */
534 HWTEST_F(PluginLibJpegTest, GetAreaFromExifEntries001, TestSize.Level3)
535 {
536     GTEST_LOG_(INFO) << "PluginLibJpegTest: GetAreaFromExifEntries001 start";
537     EXIFInfo exinfo;
538     const uint8_t *buf = new uint8_t;
539     ByteOrderedBuffer byteOrderedBuffer(buf, 10);
540     byteOrderedBuffer.GenerateDEArray();
541     std::vector<std::pair<uint32_t, uint32_t>> ranges;
542     exinfo.GetAreaFromExifEntries(1, byteOrderedBuffer.directoryEntryArray_, ranges);
543     delete buf;
544     buf = nullptr;
545     GTEST_LOG_(INFO) << "PluginLibJpegTest: GetAreaFromExifEntries001 end";
546 }
547 
548 /**
549  * @tc.name: TransformTiffOffsetToFilePos001
550  * @tc.desc: TransformTiffOffsetToFilePos
551  * @tc.type: FUNC
552  */
553 HWTEST_F(PluginLibJpegTest, TransformTiffOffsetToFilePos001, TestSize.Level3)
554 {
555     GTEST_LOG_(INFO) << "PluginLibJpegTest: TransformTiffOffsetToFilePos001 start";
556     const uint8_t *buf = new uint8_t;
557     ByteOrderedBuffer byteorder(buf, 10);
558     uint32_t ret = byteorder.TransformTiffOffsetToFilePos(20);
559     ASSERT_EQ(ret, 32);
560     delete buf;
561     buf = nullptr;
562     GTEST_LOG_(INFO) << "PluginLibJpegTest: TransformTiffOffsetToFilePos001 end";
563 }
564 
565 /**
566  * @tc.name: ReadShort001
567  * @tc.desc: ReadShort
568  * @tc.type: FUNC
569  */
570 HWTEST_F(PluginLibJpegTest, ReadShort001, TestSize.Level3)
571 {
572     GTEST_LOG_(INFO) << "PluginLibJpegTest: ReadShort001 start";
573     const uint8_t *buf = new uint8_t;
574     ByteOrderedBuffer byteorder(buf, 10);
575     byteorder.curPosition_ = 5;
576     byteorder.bufferLength_ = 1;
577     int16_t ret = byteorder.ReadShort();
578     ASSERT_EQ(ret, -1);
579     delete buf;
580     buf = nullptr;
581     GTEST_LOG_(INFO) << "PluginLibJpegTest: ReadShort001 end";
582 }
583 
584 /**
585  * @tc.name: ReadShort002
586  * @tc.desc: ReadShort
587  * @tc.type: FUNC
588  */
589 HWTEST_F(PluginLibJpegTest, ReadShort002, TestSize.Level3)
590 {
591     GTEST_LOG_(INFO) << "PluginLibJpegTest: ReadShort002 start";
592     const uint8_t *buf = new uint8_t;
593     ByteOrderedBuffer byteorder(buf, 10);
594     byteorder.bufferLength_ = 100;
595     byteorder.byteOrder_ = EXIF_BYTE_ORDER_MOTOROLA;
596     int16_t ret = byteorder.ReadShort();
597     ASSERT_NE(ret, -1);
598     delete buf;
599     buf = nullptr;
600     GTEST_LOG_(INFO) << "PluginLibJpegTest: ReadShort002 end";
601 }
602 
603 /**
604  * @tc.name: ReadShort003
605  * @tc.desc: ReadShort
606  * @tc.type: FUNC
607  */
608 HWTEST_F(PluginLibJpegTest, ReadShort003, TestSize.Level3)
609 {
610     GTEST_LOG_(INFO) << "PluginLibJpegTest: ReadShort003 start";
611     const uint8_t *buf = new uint8_t;
612     ByteOrderedBuffer byteorder(buf, 10);
613     byteorder.bufferLength_ = 100;
614     byteorder.byteOrder_ = EXIF_BYTE_ORDER_INTEL;
615     int16_t ret = byteorder.ReadShort();
616     ASSERT_NE(ret, -1);
617     delete buf;
618     buf = nullptr;
619     GTEST_LOG_(INFO) << "PluginLibJpegTest: ReadShort003 end";
620 }
621 
622 /**
623  * @tc.name: GetDataRangeFromIFD001
624  * @tc.desc: GetDataRangeFromIFD
625  * @tc.type: FUNC
626  */
627 HWTEST_F(PluginLibJpegTest, GetDataRangeFromIFD001, TestSize.Level3)
628 {
629     GTEST_LOG_(INFO) << "PluginLibJpegTest: GetDataRangeFromIFD001 start";
630     const uint8_t *buf = new uint8_t;
631     ByteOrderedBuffer byteorder(buf, 10);
632     byteorder.curPosition_ = 0;
633     byteorder.bufferLength_ = 20;
634     byteorder.GetDataRangeFromIFD(EXIF_IFD_0);
635     delete buf;
636     buf = nullptr;
637     GTEST_LOG_(INFO) << "PluginLibJpegTest: GetDataRangeFromIFD001 end";
638 }
639 
640 /**
641  * @tc.name: GetDataRangeFromIFD002
642  * @tc.desc: GetDataRangeFromIFD
643  * @tc.type: FUNC
644  */
645 HWTEST_F(PluginLibJpegTest, GetDataRangeFromIFD002, TestSize.Level3)
646 {
647     GTEST_LOG_(INFO) << "PluginLibJpegTest: GetDataRangeFromIFD002 start";
648     const uint8_t *buf = new uint8_t;
649     ByteOrderedBuffer byteorder(buf, 10);
650     byteorder.bufferLength_ = 8;
651     byteorder.GetDataRangeFromIFD(EXIF_IFD_0);
652     delete buf;
653     buf = nullptr;
654     GTEST_LOG_(INFO) << "PluginLibJpegTest: GetDataRangeFromIFD002 end";
655 }
656 
657 /**
658  * @tc.name: ParseIFDPointerTag001
659  * @tc.desc: ParseIFDPointerTag
660  * @tc.type: FUNC
661  */
662 HWTEST_F(PluginLibJpegTest, ParseIFDPointerTag001, TestSize.Level3)
663 {
664     GTEST_LOG_(INFO) << "PluginLibJpegTest: ParseIFDPointerTag001 start";
665     const uint8_t *buf = new uint8_t;
666     ByteOrderedBuffer byteorder(buf, 10);
667     uint16_t tagNumber = byteorder.ReadUnsignedShort();
668     const ExifIfd ifd = byteorder.GetIFDOfIFDPointerTag(tagNumber);;
669     const uint16_t dataFormat = byteorder.ReadUnsignedShort();
670     byteorder.ParseIFDPointerTag(ifd, dataFormat);
671     delete buf;
672     buf = nullptr;
673     GTEST_LOG_(INFO) << "PluginLibJpegTest: ParseIFDPointerTag001 end";
674 }
675 
676 /**
677  * @tc.name: IsIFDhandled001
678  * @tc.desc: IsIFDhandled
679  * @tc.type: FUNC
680  */
681 HWTEST_F(PluginLibJpegTest, IsIFDhandled001, TestSize.Level3)
682 {
683     GTEST_LOG_(INFO) << "PluginLibJpegTest: IsIFDhandled001 start";
684     const uint8_t *buf = new uint8_t;
685     ByteOrderedBuffer byteorder(buf, 10);
686     byteorder.handledIfdOffsets_.clear();
687     bool ret = byteorder.IsIFDhandled(1);
688     ASSERT_EQ(ret, false);
689     delete buf;
690     buf = nullptr;
691     GTEST_LOG_(INFO) << "PluginLibJpegTest: IsIFDhandled001 end";
692 }
693 
694 /**
695  * @tc.name: IsIFDhandled002
696  * @tc.desc: IsIFDhandled
697  * @tc.type: FUNC
698  */
699 HWTEST_F(PluginLibJpegTest, IsIFDhandled002, TestSize.Level3)
700 {
701     GTEST_LOG_(INFO) << "PluginLibJpegTest: IsIFDhandled002 start";
702     const uint8_t *buf = new uint8_t;
703     ByteOrderedBuffer byteorder(buf, 10);
704     byteorder.handledIfdOffsets_.push_back(1);
705     bool ret = byteorder.IsIFDhandled(1);
706     ASSERT_EQ(ret, true);
707     delete buf;
708     buf = nullptr;
709     GTEST_LOG_(INFO) << "PluginLibJpegTest: IsIFDhandled002 end";
710 }
711 
712 /**
713  * @tc.name: GetNextIfdFromLinkList001
714  * @tc.desc: GetNextIfdFromLinkList
715  * @tc.type: FUNC
716  */
717 HWTEST_F(PluginLibJpegTest, GetNextIfdFromLinkList001, TestSize.Level3)
718 {
719     GTEST_LOG_(INFO) << "PluginLibJpegTest: GetNextIfdFromLinkList001 start";
720     const uint8_t *buf = new uint8_t;
721     ByteOrderedBuffer byteorder(buf, 10);
722     ExifIfd ret = byteorder.GetNextIfdFromLinkList(EXIF_IFD_0);
723     ASSERT_EQ(ret, EXIF_IFD_1);
724     delete buf;
725     buf = nullptr;
726     GTEST_LOG_(INFO) << "PluginLibJpegTest: GetNextIfdFromLinkList001 end";
727 }
728 
729 /**
730  * @tc.name: GetNextIfdFromLinkList002
731  * @tc.desc: GetNextIfdFromLinkList
732  * @tc.type: FUNC
733  */
734 HWTEST_F(PluginLibJpegTest, GetNextIfdFromLinkList002, TestSize.Level3)
735 {
736     GTEST_LOG_(INFO) << "PluginLibJpegTest: GetNextIfdFromLinkList002 start";
737     const uint8_t *buf = new uint8_t;
738     ByteOrderedBuffer byteorder(buf, 10);
739     ExifIfd ret = byteorder.GetNextIfdFromLinkList(EXIF_IFD_EXIF);
740     ASSERT_EQ(ret, EXIF_IFD_COUNT);
741     delete buf;
742     buf = nullptr;
743     GTEST_LOG_(INFO) << "PluginLibJpegTest: GetNextIfdFromLinkList002 end";
744 }
745 
746 /**
747  * @tc.name: IsExifDataParsed001
748  * @tc.desc: IsExifDataParsed
749  * @tc.type: FUNC
750  */
751 HWTEST_F(PluginLibJpegTest, IsExifDataParsed001, TestSize.Level3)
752 {
753     GTEST_LOG_(INFO) << "PluginLibJpegTest: IsExifDataParsed001 start";
754     EXIFInfo exinfo;
755     exinfo.isExifDataParsed_ = false;
756     bool ret = exinfo.IsExifDataParsed();
757     ASSERT_EQ(ret, false);
758     GTEST_LOG_(INFO) << "PluginLibJpegTest: IsExifDataParsed001 end";
759 }
760 
761 /**
762  * @tc.name: SetExifTagValues001
763  * @tc.desc: SetExifTagValues
764  * @tc.type: FUNC
765  */
766 HWTEST_F(PluginLibJpegTest, SetExifTagValues001, TestSize.Level3)
767 {
768     GTEST_LOG_(INFO) << "PluginLibJpegTest: SetExifTagValues001 start";
769     EXIFInfo exinfo;
770     const std::string val = "111";
771     exinfo.SetExifTagValues(EXIF_TAG_BITS_PER_SAMPLE, val);
772     ASSERT_EQ(exinfo.bitsPerSample_, val);
773     GTEST_LOG_(INFO) << "PluginLibJpegTest: SetExifTagValues001 end";
774 }
775 
776 /**
777  * @tc.name: SetExifTagValues002
778  * @tc.desc: SetExifTagValues
779  * @tc.type: FUNC
780  */
781 HWTEST_F(PluginLibJpegTest, SetExifTagValues002, TestSize.Level3)
782 {
783     GTEST_LOG_(INFO) << "PluginLibJpegTest: SetExifTagValues002 start";
784     EXIFInfo exinfo;
785     const std::string val = "222";
786     exinfo.SetExifTagValues(EXIF_TAG_ORIENTATION, val);
787     ASSERT_EQ(exinfo.orientation_, val);
788     GTEST_LOG_(INFO) << "PluginLibJpegTest: SetExifTagValues002 end";
789 }
790 
791 /**
792  * @tc.name: SetExifTagValues003
793  * @tc.desc: SetExifTagValues
794  * @tc.type: FUNC
795  */
796 HWTEST_F(PluginLibJpegTest, SetExifTagValues003, TestSize.Level3)
797 {
798     GTEST_LOG_(INFO) << "PluginLibJpegTest: SetExifTagValues003 start";
799     EXIFInfo exinfo;
800     const std::string val = "333";
801     exinfo.SetExifTagValues(EXIF_TAG_IMAGE_LENGTH, val);
802     ASSERT_EQ(exinfo.imageLength_, val);
803     GTEST_LOG_(INFO) << "PluginLibJpegTest: SetExifTagValues003 end";
804 }
805 
806 /**
807  * @tc.name: SetExifTagValues004
808  * @tc.desc: SetExifTagValues
809  * @tc.type: FUNC
810  */
811 HWTEST_F(PluginLibJpegTest, SetExifTagValues004, TestSize.Level3)
812 {
813     GTEST_LOG_(INFO) << "PluginLibJpegTest: SetExifTagValues004 start";
814     EXIFInfo exinfo;
815     const std::string val = "444";
816     exinfo.SetExifTagValues(EXIF_TAG_IMAGE_WIDTH, val);
817     ASSERT_EQ(exinfo.imageWidth_, val);
818     GTEST_LOG_(INFO) << "PluginLibJpegTest: SetExifTagValues004 end";
819 }
820 
821 /**
822  * @tc.name: SetExifTagValues005
823  * @tc.desc: SetExifTagValues
824  * @tc.type: FUNC
825  */
826 HWTEST_F(PluginLibJpegTest, SetExifTagValues005, TestSize.Level3)
827 {
828     GTEST_LOG_(INFO) << "PluginLibJpegTest: SetExifTagValues005 start";
829     EXIFInfo exinfo;
830     const std::string val = "test";
831     exinfo.SetExifTagValues(EXIF_TAG_GPS_LATITUDE, val);
832     ASSERT_EQ(exinfo.gpsLatitude_, val);
833     exinfo.SetExifTagValues(EXIF_TAG_GPS_LONGITUDE, val);
834     ASSERT_EQ(exinfo.gpsLongitude_, val);
835     exinfo.SetExifTagValues(EXIF_TAG_GPS_LATITUDE_REF, val);
836     ASSERT_EQ(exinfo.gpsLatitudeRef_, val);
837     exinfo.SetExifTagValues(EXIF_TAG_GPS_LONGITUDE_REF, val);
838     ASSERT_EQ(exinfo.gpsLongitudeRef_, val);
839     exinfo.SetExifTagValues(EXIF_TAG_DATE_TIME_ORIGINAL, val);
840     ASSERT_EQ(exinfo.dateTimeOriginal_, val);
841     exinfo.SetExifTagValues(EXIF_TAG_EXPOSURE_TIME, val);
842     ASSERT_EQ(exinfo.exposureTime_, val);
843     exinfo.SetExifTagValues(EXIF_TAG_FNUMBER, val);
844     ASSERT_EQ(exinfo.fNumber_, val);
845     exinfo.SetExifTagValues(EXIF_TAG_ISO_SPEED_RATINGS, val);
846     ASSERT_EQ(exinfo.isoSpeedRatings_, val);
847     exinfo.SetExifTagValues(EXIF_TAG_SCENE_TYPE, val);
848     ASSERT_EQ(exinfo.sceneType_, val);
849     exinfo.SetExifTagValues(EXIF_TAG_COMPRESSED_BITS_PER_PIXEL, val);
850     ASSERT_EQ(exinfo.compressedBitsPerPixel_, val);
851     exinfo.SetExifTagValues(EXIF_TAG_DATE_TIME, val);
852     ASSERT_EQ(exinfo.dateTime_, val);
853     GTEST_LOG_(INFO) << "PluginLibJpegTest: SetExifTagValues005 end";
854 }
855 
856 /**
857  * @tc.name: SetExifTagValuesEx001
858  * @tc.desc: SetExifTagValuesEx
859  * @tc.type: FUNC
860  */
861 HWTEST_F(PluginLibJpegTest, SetExifTagValuesEx001, TestSize.Level3)
862 {
863     GTEST_LOG_(INFO) << "PluginLibJpegTest: SetExifTagValuesEx001 start";
864     EXIFInfo exinfo;
865     const std::string val = "test";
866     exinfo.SetExifTagValuesEx(EXIF_TAG_DATE_TIME, val);
867     ASSERT_EQ(exinfo.dateTime_, val);
868     exinfo.SetExifTagValuesEx(EXIF_TAG_GPS_TIME_STAMP, val);
869     ASSERT_EQ(exinfo.gpsTimeStamp_, val);
870     exinfo.SetExifTagValuesEx(EXIF_TAG_GPS_DATE_STAMP, val);
871     ASSERT_EQ(exinfo.gpsDateStamp_, val);
872     exinfo.SetExifTagValuesEx(EXIF_TAG_IMAGE_DESCRIPTION, val);
873     ASSERT_EQ(exinfo.imageDescription_, val);
874     exinfo.SetExifTagValuesEx(EXIF_TAG_MAKE, val);
875     ASSERT_EQ(exinfo.make_, val);
876     exinfo.SetExifTagValuesEx(EXIF_TAG_MODEL, val);
877     ASSERT_EQ(exinfo.model_, val);
878     exinfo.SetExifTagValuesEx(EXIF_TAG_JPEG_PROC, val);
879     ASSERT_EQ(exinfo.photoMode_, val);
880     exinfo.SetExifTagValuesEx(static_cast<ExifTag>(0x8830), val);
881     ASSERT_EQ(exinfo.sensitivityType_, val);
882     exinfo.SetExifTagValuesEx(static_cast<ExifTag>(0x8831), val);
883     ASSERT_EQ(exinfo.standardOutputSensitivity_, val);
884     exinfo.SetExifTagValuesEx(static_cast<ExifTag>(0x8832), val);
885     ASSERT_EQ(exinfo.recommendedExposureIndex_, val);
886     exinfo.SetExifTagValuesEx(EXIF_TAG_APERTURE_VALUE, val);
887     ASSERT_EQ(exinfo.apertureValue_, val);
888     exinfo.SetExifTagValuesEx(EXIF_TAG_EXPOSURE_BIAS_VALUE, val);
889     ASSERT_EQ(exinfo.exposureBiasValue_, val);
890     exinfo.SetExifTagValuesEx(EXIF_TAG_METERING_MODE, val);
891     ASSERT_EQ(exinfo.meteringMode_, val);
892     exinfo.SetExifTagValuesEx(EXIF_TAG_FLASH, val);
893     ASSERT_EQ(exinfo.flash_, val);
894     exinfo.SetExifTagValuesEx(EXIF_TAG_FOCAL_LENGTH, val);
895     ASSERT_EQ(exinfo.focalLength_, val);
896     exinfo.SetExifTagValuesEx(EXIF_TAG_USER_COMMENT, val);
897     ASSERT_EQ(exinfo.userComment_, val);
898     exinfo.SetExifTagValuesEx(EXIF_TAG_PIXEL_X_DIMENSION, val);
899     ASSERT_EQ(exinfo.pixelXDimension_, val);
900     exinfo.SetExifTagValuesEx(EXIF_TAG_PIXEL_Y_DIMENSION, val);
901     ASSERT_EQ(exinfo.pixelYDimension_, val);
902     exinfo.SetExifTagValuesEx(EXIF_TAG_WHITE_BALANCE, val);
903     ASSERT_EQ(exinfo.whiteBalance_, val);
904     exinfo.SetExifTagValuesEx(EXIF_TAG_FOCAL_LENGTH_IN_35MM_FILM, val);
905     ASSERT_EQ(exinfo.focalLengthIn35mmFilm_, val);
906     exinfo.SetExifTagValuesEx(EXIF_TAG_COMPRESSED_BITS_PER_PIXEL, val);
907     GTEST_LOG_(INFO) << "PluginLibJpegTest: SetExifTagValuesEx001 end";
908 }
909 
910 /**
911  * @tc.name: CreateExifEntry001
912  * @tc.desc: CreateExifEntry
913  * @tc.type: FUNC
914  */
915 HWTEST_F(PluginLibJpegTest, CreateExifEntry001, TestSize.Level3)
916 {
917     GTEST_LOG_(INFO) << "PluginLibJpegTest: CreateExifEntry001 start";
918     EXIFInfo exinfo;
919     ExifData *ptrExifData;
920     bool isNewExifData = false;
921     unsigned long fileLength = 100;
922     unsigned char *fileBuf = static_cast<unsigned char *>(malloc(fileLength));
923     exinfo.CreateExifData(fileBuf, fileLength, &ptrExifData, isNewExifData);
924     ExifByteOrder order = exinfo.GetExifByteOrder(isNewExifData, fileBuf);
925     ExifEntry *entry = nullptr;
926     const std::string value = "test,test,test,test,test,test";
927     bool ret = exinfo.CreateExifEntry(EXIF_TAG_BITS_PER_SAMPLE, ptrExifData, value, order, &entry);
928     ASSERT_EQ(ret, false);
929     ExifEntry *ptrEntry = new ExifEntry;
930     ret = exinfo.CreateExifEntry(EXIF_TAG_BITS_PER_SAMPLE, ptrExifData, value, order, &ptrEntry);
931     ASSERT_EQ(ret, false);
932     ret = exinfo.CreateExifEntry(EXIF_TAG_BITS_PER_SAMPLE, ptrExifData, "test,test", order, &ptrEntry);
933     ASSERT_EQ(ret, true);
934     delete ptrEntry;
935     ptrEntry = nullptr;
936     free(fileBuf);
937     fileBuf = nullptr;
938     GTEST_LOG_(INFO) << "PluginLibJpegTest: CreateExifEntry001 end";
939 }
940 
941 /**
942  * @tc.name: CreateExifEntry002
943  * @tc.desc: CreateExifEntry
944  * @tc.type: FUNC
945  */
946 HWTEST_F(PluginLibJpegTest, CreateExifEntry002, TestSize.Level3)
947 {
948     GTEST_LOG_(INFO) << "PluginLibJpegTest: CreateExifEntry002 start";
949     EXIFInfo exinfo;
950     ExifData *ptrExifData;
951     bool isNewExifData = false;
952     unsigned long fileLength = 100;
953     unsigned char *fileBuf = static_cast<unsigned char *>(malloc(fileLength));
954     exinfo.CreateExifData(fileBuf, fileLength, &ptrExifData, isNewExifData);
955     ExifByteOrder order = exinfo.GetExifByteOrder(isNewExifData, fileBuf);
956     ExifEntry *entry = nullptr;
957     const std::string value = "test";
958     bool ret = exinfo.CreateExifEntry(EXIF_TAG_ORIENTATION, ptrExifData, value, order, &entry);
959     ASSERT_EQ(ret, true);
960     free(fileBuf);
961     fileBuf = nullptr;
962     GTEST_LOG_(INFO) << "PluginLibJpegTest: CreateExifEntry002 end";
963 }
964 
965 /**
966  * @tc.name: CreateExifEntry003
967  * @tc.desc: CreateExifEntry
968  * @tc.type: FUNC
969  */
970 HWTEST_F(PluginLibJpegTest, CreateExifEntry003, TestSize.Level3)
971 {
972     GTEST_LOG_(INFO) << "PluginLibJpegTest: CreateExifEntry003 start";
973     EXIFInfo exinfo;
974     ExifData *ptrExifData;
975     bool isNewExifData = false;
976     unsigned long fileLength = 100;
977     unsigned char *fileBuf = static_cast<unsigned char *>(malloc(fileLength));
978     exinfo.CreateExifData(fileBuf, fileLength, &ptrExifData, isNewExifData);
979     ExifByteOrder order = exinfo.GetExifByteOrder(isNewExifData, fileBuf);
980     ExifEntry *entry = nullptr;
981     const std::string value = "test";
982     bool ret = exinfo.CreateExifEntry(EXIF_TAG_IMAGE_LENGTH, ptrExifData, value, order, &entry);
983     ASSERT_EQ(ret, true);
984     free(fileBuf);
985     fileBuf = nullptr;
986     GTEST_LOG_(INFO) << "PluginLibJpegTest: CreateExifEntry003 end";
987 }
988 
989 /**
990  * @tc.name: CreateExifEntry004
991  * @tc.desc: CreateExifEntry
992  * @tc.type: FUNC
993  */
994 HWTEST_F(PluginLibJpegTest, CreateExifEntry004, TestSize.Level3)
995 {
996     GTEST_LOG_(INFO) << "PluginLibJpegTest: CreateExifEntry004 start";
997     EXIFInfo exinfo;
998     ExifData *ptrExifData;
999     bool isNewExifData = false;
1000     unsigned long fileLength = 100;
1001     unsigned char *fileBuf = static_cast<unsigned char *>(malloc(fileLength));
1002     exinfo.CreateExifData(fileBuf, fileLength, &ptrExifData, isNewExifData);
1003     ExifByteOrder order = exinfo.GetExifByteOrder(isNewExifData, fileBuf);
1004     ExifEntry *entry = nullptr;
1005     const std::string value = "test";
1006     bool ret = exinfo.CreateExifEntry(EXIF_TAG_IMAGE_WIDTH, ptrExifData, value, order, &entry);
1007     ASSERT_EQ(ret, true);
1008     free(fileBuf);
1009     fileBuf = nullptr;
1010     GTEST_LOG_(INFO) << "PluginLibJpegTest: CreateExifEntry004 end";
1011 }
1012 
1013 /**
1014  * @tc.name: CreateExifEntry005
1015  * @tc.desc: CreateExifEntry
1016  * @tc.type: FUNC
1017  */
1018 HWTEST_F(PluginLibJpegTest, CreateExifEntry005, TestSize.Level3)
1019 {
1020     GTEST_LOG_(INFO) << "PluginLibJpegTest: CreateExifEntry005 start";
1021     EXIFInfo exinfo;
1022     ExifData *ptrExifData;
1023     bool isNewExifData = false;
1024     unsigned long fileLength = 100;
1025     unsigned char *fileBuf = static_cast<unsigned char *>(malloc(fileLength));
1026     exinfo.CreateExifData(fileBuf, fileLength, &ptrExifData, isNewExifData);
1027     ExifByteOrder order = exinfo.GetExifByteOrder(isNewExifData, fileBuf);
1028     ExifEntry *entry = nullptr;
1029     const std::string value = "1.0";
1030     bool ret = exinfo.CreateExifEntry(EXIF_TAG_COMPRESSED_BITS_PER_PIXEL, ptrExifData, value, order, &entry);
1031     ASSERT_EQ(ret, true);
1032     free(fileBuf);
1033     fileBuf = nullptr;
1034     GTEST_LOG_(INFO) << "PluginLibJpegTest: CreateExifEntry005 end";
1035 }
1036 
1037 /**
1038  * @tc.name: CreateExifEntry006
1039  * @tc.desc: CreateExifEntry
1040  * @tc.type: FUNC
1041  */
1042 HWTEST_F(PluginLibJpegTest, CreateExifEntry006, TestSize.Level3)
1043 {
1044     GTEST_LOG_(INFO) << "PluginLibJpegTest: CreateExifEntry006 start";
1045     EXIFInfo exinfo;
1046     ExifData *ptrExifData;
1047     bool isNewExifData = false;
1048     unsigned long fileLength = 100;
1049     unsigned char *fileBuf = static_cast<unsigned char *>(malloc(fileLength));
1050     exinfo.CreateExifData(fileBuf, fileLength, &ptrExifData, isNewExifData);
1051     ExifByteOrder order = exinfo.GetExifByteOrder(isNewExifData, fileBuf);
1052     ExifEntry *entry = nullptr;
1053     const std::string value = "test,test,test,test,test,test";
1054     bool ret = exinfo.CreateExifEntry(EXIF_TAG_GPS_LATITUDE, ptrExifData, value, order, &entry);
1055     ASSERT_EQ(ret, false);
1056     ExifEntry *ptrEntry = new ExifEntry;
1057     ret = exinfo.CreateExifEntry(EXIF_TAG_GPS_LATITUDE, ptrExifData, "test,test", order, &ptrEntry);
1058     ASSERT_EQ(ret, true);
1059     delete ptrEntry;
1060     ptrEntry = nullptr;
1061     free(fileBuf);
1062     fileBuf = nullptr;
1063     GTEST_LOG_(INFO) << "PluginLibJpegTest: CreateExifEntry006 end";
1064 }
1065 
1066 /**
1067  * @tc.name: CreateExifEntry007
1068  * @tc.desc: CreateExifEntry
1069  * @tc.type: FUNC
1070  */
1071 HWTEST_F(PluginLibJpegTest, CreateExifEntry007, TestSize.Level3)
1072 {
1073     GTEST_LOG_(INFO) << "PluginLibJpegTest: CreateExifEntry007 start";
1074     EXIFInfo exinfo;
1075     ExifData *ptrExifData;
1076     bool isNewExifData = false;
1077     unsigned long fileLength = 100;
1078     unsigned char *fileBuf = static_cast<unsigned char *>(malloc(fileLength));
1079     exinfo.CreateExifData(fileBuf, fileLength, &ptrExifData, isNewExifData);
1080     ExifByteOrder order = exinfo.GetExifByteOrder(isNewExifData, fileBuf);
1081     ExifEntry *entry = nullptr;
1082     const std::string value = "test,test,test,test,test,test";
1083     bool ret = exinfo.CreateExifEntry(EXIF_TAG_GPS_LONGITUDE, ptrExifData, value, order, &entry);
1084     ASSERT_EQ(ret, false);
1085     ExifEntry *ptrEntry = nullptr;
1086     ret = exinfo.CreateExifEntry(EXIF_TAG_GPS_LONGITUDE, ptrExifData, "test,test", order, &ptrEntry);
1087     ASSERT_EQ(ret, true);
1088     free(fileBuf);
1089     fileBuf = nullptr;
1090     GTEST_LOG_(INFO) << "PluginLibJpegTest: CreateExifEntry007 end";
1091 }
1092 
1093 /**
1094  * @tc.name: CreateExifEntry008
1095  * @tc.desc: CreateExifEntry
1096  * @tc.type: FUNC
1097  */
1098 HWTEST_F(PluginLibJpegTest, CreateExifEntry008, TestSize.Level3)
1099 {
1100     GTEST_LOG_(INFO) << "PluginLibJpegTest: CreateExifEntry008 start";
1101     EXIFInfo exinfo;
1102     ExifData *ptrExifData;
1103     bool isNewExifData = false;
1104     unsigned long fileLength = 100;
1105     unsigned char *fileBuf = static_cast<unsigned char *>(malloc(fileLength));
1106     exinfo.CreateExifData(fileBuf, fileLength, &ptrExifData, isNewExifData);
1107     ExifByteOrder order = exinfo.GetExifByteOrder(isNewExifData, fileBuf);
1108     ExifEntry *entry = nullptr;
1109     const std::string value = "test,test,test,test,test,test";
1110     bool ret = exinfo.CreateExifEntry(EXIF_TAG_GPS_LATITUDE_REF, ptrExifData, value, order, &entry);
1111     ASSERT_EQ(ret, true);
1112     free(fileBuf);
1113     fileBuf = nullptr;
1114     GTEST_LOG_(INFO) << "PluginLibJpegTest: CreateExifEntry008 end";
1115 }
1116 
1117 /**
1118  * @tc.name: CreateExifEntry009
1119  * @tc.desc: CreateExifEntry
1120  * @tc.type: FUNC
1121  */
1122 HWTEST_F(PluginLibJpegTest, CreateExifEntry009, TestSize.Level3)
1123 {
1124     GTEST_LOG_(INFO) << "PluginLibJpegTest: CreateExifEntry009 start";
1125     EXIFInfo exinfo;
1126     ExifData *ptrExifData;
1127     bool isNewExifData = false;
1128     unsigned long fileLength = 100;
1129     unsigned char *fileBuf = static_cast<unsigned char *>(malloc(fileLength));
1130     exinfo.CreateExifData(fileBuf, fileLength, &ptrExifData, isNewExifData);
1131     ExifByteOrder order = exinfo.GetExifByteOrder(isNewExifData, fileBuf);
1132     ExifEntry *entry = nullptr;
1133     const std::string value = "test,test,test,test,test,test";
1134     bool ret = exinfo.CreateExifEntry(EXIF_TAG_GPS_LONGITUDE_REF, ptrExifData, value, order, &entry);
1135     ASSERT_EQ(ret, true);
1136     free(fileBuf);
1137     fileBuf = nullptr;
1138     GTEST_LOG_(INFO) << "PluginLibJpegTest: CreateExifEntry009 end";
1139 }
1140 
1141 /**
1142  * @tc.name: CreateExifEntry0010
1143  * @tc.desc: CreateExifEntry
1144  * @tc.type: FUNC
1145  */
1146 HWTEST_F(PluginLibJpegTest, CreateExifEntry0010, TestSize.Level3)
1147 {
1148     GTEST_LOG_(INFO) << "PluginLibJpegTest: CreateExifEntry0010 start";
1149     EXIFInfo exinfo;
1150     ExifData *ptrExifData;
1151     bool isNewExifData = false;
1152     unsigned long fileLength = 100;
1153     unsigned char *fileBuf = static_cast<unsigned char *>(malloc(fileLength));
1154     exinfo.CreateExifData(fileBuf, fileLength, &ptrExifData, isNewExifData);
1155     ExifByteOrder order = exinfo.GetExifByteOrder(isNewExifData, fileBuf);
1156     ExifEntry *entry = nullptr;
1157     const std::string value = "test,test,test,test,test,test";
1158     bool ret = exinfo.CreateExifEntry(EXIF_TAG_WHITE_BALANCE, ptrExifData, value, order, &entry);
1159     ASSERT_EQ(ret, true);
1160     ret = exinfo.CreateExifEntry(EXIF_TAG_FOCAL_LENGTH_IN_35MM_FILM, ptrExifData, value, order, &entry);
1161     ASSERT_EQ(ret, true);
1162     ret = exinfo.CreateExifEntry(EXIF_TAG_FLASH, ptrExifData, value, order, &entry);
1163     ASSERT_EQ(ret, true);
1164     free(fileBuf);
1165     fileBuf = nullptr;
1166     GTEST_LOG_(INFO) << "PluginLibJpegTest: CreateExifEntry0010 end";
1167 }
1168 
1169 /**
1170  * @tc.name: CreateExifEntry0011
1171  * @tc.desc: CreateExifEntry
1172  * @tc.type: FUNC
1173  */
1174 HWTEST_F(PluginLibJpegTest, CreateExifEntry0011, TestSize.Level3)
1175 {
1176     GTEST_LOG_(INFO) << "PluginLibJpegTest: CreateExifEntry0011 start";
1177     EXIFInfo exinfo;
1178     ExifData *ptrExifData;
1179     bool isNewExifData = false;
1180     unsigned long fileLength = 100;
1181     unsigned char *fileBuf = static_cast<unsigned char *>(malloc(fileLength));
1182     exinfo.CreateExifData(fileBuf, fileLength, &ptrExifData, isNewExifData);
1183     ExifByteOrder order = exinfo.GetExifByteOrder(isNewExifData, fileBuf);
1184     ExifEntry *entry = nullptr;
1185     const std::string value = "test/test/test/test/test";
1186     bool ret = exinfo.CreateExifEntry(EXIF_TAG_APERTURE_VALUE, ptrExifData, value, order, &entry);
1187     ASSERT_EQ(ret, false);
1188     ret = exinfo.CreateExifEntry(EXIF_TAG_APERTURE_VALUE, ptrExifData, "test/test", order, &entry);
1189     ASSERT_EQ(ret, true);
1190     ret = exinfo.CreateExifEntry(EXIF_TAG_DATE_TIME_ORIGINAL, ptrExifData, "test", order, &entry);
1191     ASSERT_EQ(ret, true);
1192     ret = exinfo.CreateExifEntry(EXIF_TAG_DATE_TIME, ptrExifData, "test", order, &entry);
1193     ASSERT_EQ(ret, true);
1194     free(fileBuf);
1195     fileBuf = nullptr;
1196     GTEST_LOG_(INFO) << "PluginLibJpegTest: CreateExifEntry0011 end";
1197 }
1198 
1199 /**
1200  * @tc.name: CreateExifEntry0012
1201  * @tc.desc: CreateExifEntry
1202  * @tc.type: FUNC
1203  */
1204 HWTEST_F(PluginLibJpegTest, CreateExifEntry0012, TestSize.Level3)
1205 {
1206     GTEST_LOG_(INFO) << "PluginLibJpegTest: CreateExifEntry0012 start";
1207     EXIFInfo exinfo;
1208     ExifData *ptrExifData;
1209     bool isNewExifData = false;
1210     unsigned long fileLength = 100;
1211     unsigned char *fileBuf = static_cast<unsigned char *>(malloc(fileLength));
1212     exinfo.CreateExifData(fileBuf, fileLength, &ptrExifData, isNewExifData);
1213     ExifByteOrder order = exinfo.GetExifByteOrder(isNewExifData, fileBuf);
1214     ExifEntry *entry = nullptr;
1215     const std::string value = "test/test/test/test/test";
1216     bool ret = exinfo.CreateExifEntry(EXIF_TAG_EXPOSURE_BIAS_VALUE, ptrExifData, value, order, &entry);
1217     ASSERT_EQ(ret, false);
1218     ret = exinfo.CreateExifEntry(EXIF_TAG_EXPOSURE_BIAS_VALUE, ptrExifData, "test/test", order, &entry);
1219     ASSERT_EQ(ret, true);
1220     ret = exinfo.CreateExifEntry(EXIF_TAG_EXPOSURE_TIME, ptrExifData, value, order, &entry);
1221     ASSERT_EQ(ret, false);
1222     ret = exinfo.CreateExifEntry(EXIF_TAG_EXPOSURE_TIME, ptrExifData, "test/test", order, &entry);
1223     ASSERT_EQ(ret, true);
1224     ret = exinfo.CreateExifEntry(EXIF_TAG_FNUMBER, ptrExifData, value, order, &entry);
1225     ASSERT_EQ(ret, false);
1226     ret = exinfo.CreateExifEntry(EXIF_TAG_FNUMBER, ptrExifData, "test/test", order, &entry);
1227     ASSERT_EQ(ret, true);
1228     ret = exinfo.CreateExifEntry(EXIF_TAG_FOCAL_LENGTH, ptrExifData, value, order, &entry);
1229     ASSERT_EQ(ret, false);
1230     ret = exinfo.CreateExifEntry(EXIF_TAG_FOCAL_LENGTH, ptrExifData, "test/test", order, &entry);
1231     ASSERT_EQ(ret, true);
1232     ret = exinfo.CreateExifEntry(EXIF_TAG_GPS_TIME_STAMP, ptrExifData, "test:test", order, &entry);
1233     ASSERT_EQ(ret, false);
1234     ret = exinfo.CreateExifEntry(EXIF_TAG_GPS_TIME_STAMP, ptrExifData, "test:test:test", order, &entry);
1235     ASSERT_EQ(ret, true);
1236     free(fileBuf);
1237     fileBuf = nullptr;
1238     GTEST_LOG_(INFO) << "PluginLibJpegTest: CreateExifEntry0012 end";
1239 }
1240 
1241 /**
1242  * @tc.name: CreateExifEntry0013
1243  * @tc.desc: CreateExifEntry
1244  * @tc.type: FUNC
1245  */
1246 HWTEST_F(PluginLibJpegTest, CreateExifEntry0013, TestSize.Level3)
1247 {
1248     GTEST_LOG_(INFO) << "PluginLibJpegTest: CreateExifEntry0013 start";
1249     EXIFInfo exinfo;
1250     ExifData *ptrExifData;
1251     bool isNewExifData = false;
1252     unsigned long fileLength = 100;
1253     unsigned char *fileBuf = static_cast<unsigned char *>(malloc(fileLength));
1254     exinfo.CreateExifData(fileBuf, fileLength, &ptrExifData, isNewExifData);
1255     ExifByteOrder order = exinfo.GetExifByteOrder(isNewExifData, fileBuf);
1256     ExifEntry *entry = nullptr;
1257     const std::string value = "test/test/test/test/test";
1258     bool ret = exinfo.CreateExifEntry(EXIF_TAG_GPS_DATE_STAMP, ptrExifData, value, order, &entry);
1259     ASSERT_EQ(ret, true);
1260     ret = exinfo.CreateExifEntry(EXIF_TAG_IMAGE_DESCRIPTION, ptrExifData, value, order, &entry);
1261     ASSERT_EQ(ret, true);
1262     ret = exinfo.CreateExifEntry(EXIF_TAG_ISO_SPEED_RATINGS, ptrExifData, value, order, &entry);
1263     ASSERT_EQ(ret, true);
1264     ret = exinfo.CreateExifEntry(EXIF_TAG_ISO_SPEED, ptrExifData, value, order, &entry);
1265     ASSERT_EQ(ret, true);
1266     ret = exinfo.CreateExifEntry(EXIF_TAG_LIGHT_SOURCE, ptrExifData, value, order, &entry);
1267     ASSERT_EQ(ret, true);
1268     ret = exinfo.CreateExifEntry(EXIF_TAG_MAKE, ptrExifData, value, order, &entry);
1269     ASSERT_EQ(ret, true);
1270     ret = exinfo.CreateExifEntry(EXIF_TAG_METERING_MODE, ptrExifData, value, order, &entry);
1271     ASSERT_EQ(ret, true);
1272     ret = exinfo.CreateExifEntry(EXIF_TAG_MODEL, ptrExifData, value, order, &entry);
1273     ASSERT_EQ(ret, true);
1274     ret = exinfo.CreateExifEntry(EXIF_TAG_PIXEL_X_DIMENSION, ptrExifData, value, order, &entry);
1275     ASSERT_EQ(ret, true);
1276     ret = exinfo.CreateExifEntry(EXIF_TAG_PIXEL_Y_DIMENSION, ptrExifData, value, order, &entry);
1277     ASSERT_EQ(ret, true);
1278     ret = exinfo.CreateExifEntry(EXIF_TAG_RECOMMENDED_EXPOSURE_INDEX, ptrExifData, value, order, &entry);
1279     ASSERT_EQ(ret, true);
1280     ret = exinfo.CreateExifEntry(EXIF_TAG_SCENE_TYPE, ptrExifData, value, order, &entry);
1281     ASSERT_EQ(ret, true);
1282     ret = exinfo.CreateExifEntry(EXIF_TAG_SENSITIVITY_TYPE, ptrExifData, value, order, &entry);
1283     ASSERT_EQ(ret, true);
1284     ret = exinfo.CreateExifEntry(EXIF_TAG_STANDARD_OUTPUT_SENSITIVITY, ptrExifData, value, order, &entry);
1285     ASSERT_EQ(ret, true);
1286     ret = exinfo.CreateExifEntry(EXIF_TAG_USER_COMMENT, ptrExifData, value, order, &entry);
1287     ASSERT_EQ(ret, true);
1288     free(fileBuf);
1289     fileBuf = nullptr;
1290     GTEST_LOG_(INFO) << "PluginLibJpegTest: CreateExifEntry0013 end";
1291 }
1292 
1293 /**
1294  * @tc.name: SetDEDataByteCount001
1295  * @tc.desc: SetDEDataByteCount
1296  * @tc.type: FUNC
1297  */
1298 HWTEST_F(PluginLibJpegTest, SetDEDataByteCount001, TestSize.Level3)
1299 {
1300     GTEST_LOG_(INFO) << "PluginLibJpegTest: SetDEDataByteCount001 start";
1301     const uint8_t *buf = new uint8_t;
1302     ByteOrderedBuffer byteorder(buf, 10);
1303     uint16_t dataFormat = byteorder.ReadUnsignedShort();
1304     int32_t numberOfComponents = byteorder.ReadInt32();
1305     uint32_t byteCount = 0;
1306     bool ret = byteorder.SetDEDataByteCount(0x0000, dataFormat, numberOfComponents, byteCount);
1307     ASSERT_EQ(ret, false);
1308     ret = byteorder.SetDEDataByteCount(0x0133, -1, numberOfComponents, byteCount);
1309     ASSERT_EQ(ret, false);
1310     ret = byteorder.SetDEDataByteCount(0x0133, 1, numberOfComponents, byteCount);
1311     ASSERT_EQ(ret, true);
1312     delete buf;
1313     buf = nullptr;
1314     GTEST_LOG_(INFO) << "PluginLibJpegTest: SetDEDataByteCount001 end";
1315 }
1316 
1317 /**
1318  * @tc.name: ParseIFDPointerTag002
1319  * @tc.desc: ParseIFDPointerTag
1320  * @tc.type: FUNC
1321  */
1322 HWTEST_F(PluginLibJpegTest, ParseIFDPointerTag002, TestSize.Level3)
1323 {
1324     GTEST_LOG_(INFO) << "PluginLibJpegTest: ParseIFDPointerTag002 start";
1325     const uint8_t *buf = new uint8_t;
1326     ByteOrderedBuffer byteorder(buf, 10);
1327     uint16_t tagNumber = byteorder.ReadUnsignedShort();
1328     const ExifIfd ifd = byteorder.GetIFDOfIFDPointerTag(tagNumber);;
1329     byteorder.ParseIFDPointerTag(ifd, EXIF_FORMAT_SHORT);
1330     byteorder.ParseIFDPointerTag(ifd, EXIF_FORMAT_SSHORT);
1331     byteorder.ParseIFDPointerTag(ifd, EXIF_FORMAT_LONG);
1332     byteorder.ParseIFDPointerTag(ifd, EXIF_FORMAT_SLONG);
1333     delete buf;
1334     buf = nullptr;
1335     GTEST_LOG_(INFO) << "PluginLibJpegTest: ParseIFDPointerTag002 end";
1336 }
1337 
1338 /**
1339  * @tc.name: GetOrginExifDataLength001
1340  * @tc.desc: GetOrginExifDataLength
1341  * @tc.type: FUNC
1342  */
1343 HWTEST_F(PluginLibJpegTest, GetOrginExifDataLength001, TestSize.Level3)
1344 {
1345     GTEST_LOG_(INFO) << "PluginLibJpegTest: GetOrginExifDataLength001 start";
1346     EXIFInfo exinfo;
1347     unsigned char buf[10] = "testtest";
1348     unsigned int ret = exinfo.GetOrginExifDataLength(true, buf);
1349     ASSERT_EQ(ret, 0);
1350     ret = exinfo.GetOrginExifDataLength(false, buf);
1351     ASSERT_NE(ret, 0);
1352     GTEST_LOG_(INFO) << "PluginLibJpegTest: GetOrginExifDataLength001 end";
1353 }
1354 
1355 /**
1356  * @tc.name: GenerateDEArray001
1357  * @tc.desc: GenerateDEArray
1358  * @tc.type: FUNC
1359  */
1360 HWTEST_F(PluginLibJpegTest, GenerateDEArray001, TestSize.Level3)
1361 {
1362     GTEST_LOG_(INFO) << "PluginLibJpegTest: GenerateDEArray001 start";
1363     EXIFInfo exinfo;
1364     const uint8_t *buf = new uint8_t;
1365     ByteOrderedBuffer byteOrderedBuffer(buf, 10);
1366     byteOrderedBuffer.bufferLength_ = 0;
1367     byteOrderedBuffer.GenerateDEArray();
1368     delete buf;
1369     buf = nullptr;
1370     GTEST_LOG_(INFO) << "PluginLibJpegTest: GenerateDEArray001 end";
1371 }
1372 
1373 /**
1374  * @tc.name: GenerateDEArray002
1375  * @tc.desc: GenerateDEArray
1376  * @tc.type: FUNC
1377  */
1378 HWTEST_F(PluginLibJpegTest, GenerateDEArray002, TestSize.Level3)
1379 {
1380     GTEST_LOG_(INFO) << "PluginLibJpegTest: GenerateDEArray002 start";
1381     EXIFInfo exinfo;
1382     const uint8_t *buf = new uint8_t;
1383     ByteOrderedBuffer byteOrderedBuffer(buf, 10);
1384     byteOrderedBuffer.bufferLength_ = 21;
1385     byteOrderedBuffer.GenerateDEArray();
1386     delete buf;
1387     buf = nullptr;
1388     GTEST_LOG_(INFO) << "PluginLibJpegTest: GenerateDEArray002 end";
1389 }
1390 
1391 /**
1392  * @tc.name: ReadInt32001
1393  * @tc.desc: ReadInt32
1394  * @tc.type: FUNC
1395  */
1396 HWTEST_F(PluginLibJpegTest, ReadInt32001, TestSize.Level3)
1397 {
1398     GTEST_LOG_(INFO) << "PluginLibJpegTest: ReadInt32001 start";
1399     EXIFInfo exinfo;
1400     const uint8_t *buf = new uint8_t;
1401     ByteOrderedBuffer byteOrderedBuffer(buf, 10);
1402     byteOrderedBuffer.bufferLength_ = 1;
1403     int32_t ret = byteOrderedBuffer.ReadInt32();
1404     ASSERT_EQ(ret, -1);
1405     byteOrderedBuffer.bufferLength_ = 100;
1406     byteOrderedBuffer.byteOrder_ = EXIF_BYTE_ORDER_MOTOROLA;
1407     ret = byteOrderedBuffer.ReadInt32();
1408     ASSERT_NE(ret, -1);
1409     byteOrderedBuffer.byteOrder_ = EXIF_BYTE_ORDER_INTEL;
1410     ret = byteOrderedBuffer.ReadInt32();
1411     ASSERT_NE(ret, -1);
1412     delete buf;
1413     buf = nullptr;
1414     GTEST_LOG_(INFO) << "PluginLibJpegTest: ReadInt32001 end";
1415 }
1416 
1417 /**
1418  * @tc.name: CheckExifEntryValid002
1419  * @tc.desc: CheckExifEntryValid
1420  * @tc.type: FUNC
1421  */
1422 HWTEST_F(PluginLibJpegTest, CheckExifEntryValid002, TestSize.Level3)
1423 {
1424     GTEST_LOG_(INFO) << "PluginLibJpegTest: CheckExifEntryValid002 start";
1425     EXIFInfo exinfo;
1426     bool ret;
1427     ret = exinfo.CheckExifEntryValid(EXIF_IFD_0, EXIF_TAG_BITS_PER_SAMPLE);
1428     ASSERT_EQ(ret, true);
1429     ret = exinfo.CheckExifEntryValid(EXIF_IFD_0, EXIF_TAG_IMAGE_LENGTH);
1430     ASSERT_EQ(ret, true);
1431     ret = exinfo.CheckExifEntryValid(EXIF_IFD_0, EXIF_TAG_IMAGE_WIDTH);
1432     ASSERT_EQ(ret, true);
1433     ret = exinfo.CheckExifEntryValid(EXIF_IFD_EXIF, EXIF_TAG_EXPOSURE_TIME);
1434     ASSERT_EQ(ret, true);
1435     ret = exinfo.CheckExifEntryValid(EXIF_IFD_EXIF, EXIF_TAG_FNUMBER);
1436     ASSERT_EQ(ret, true);
1437     ret = exinfo.CheckExifEntryValid(EXIF_IFD_EXIF, EXIF_TAG_ISO_SPEED_RATINGS);
1438     ASSERT_EQ(ret, true);
1439     ret = exinfo.CheckExifEntryValid(EXIF_IFD_EXIF, EXIF_TAG_SCENE_TYPE);
1440     ASSERT_EQ(ret, true);
1441     ret = exinfo.CheckExifEntryValid(EXIF_IFD_EXIF, EXIF_TAG_COMPRESSED_BITS_PER_PIXEL);
1442     ASSERT_EQ(ret, true);
1443     ret = exinfo.CheckExifEntryValid(EXIF_IFD_GPS, EXIF_TAG_GPS_LONGITUDE);
1444     ASSERT_EQ(ret, true);
1445     ret = exinfo.CheckExifEntryValid(EXIF_IFD_GPS, EXIF_TAG_GPS_LATITUDE_REF);
1446     ASSERT_EQ(ret, true);
1447     ret = exinfo.CheckExifEntryValid(EXIF_IFD_GPS, EXIF_TAG_GPS_LONGITUDE_REF);
1448     ASSERT_EQ(ret, true);
1449     const ExifIfd ifd = EXIF_IFD_COUNT;
1450     ret = exinfo.CheckExifEntryValid(ifd, EXIF_TAG_GPS_DATE_STAMP);
1451     ASSERT_EQ(ret, false);
1452     GTEST_LOG_(INFO) << "PluginLibJpegTest: CheckExifEntryValid002 end";
1453 }
1454 
1455 /**
1456  * @tc.name: SetExifTagValuesEx002
1457  * @tc.desc: SetExifTagValuesEx
1458  * @tc.type: FUNC
1459  */
1460 HWTEST_F(PluginLibJpegTest, SetExifTagValuesEx002, TestSize.Level3)
1461 {
1462     GTEST_LOG_(INFO) << "PluginLibJpegTest: SetExifTagValuesEx002 start";
1463     EXIFInfo exinfo;
1464     const std::string val = "test";
1465     exinfo.SetExifTagValuesEx(EXIF_TAG_LIGHT_SOURCE, val);
1466     ASSERT_EQ(exinfo.lightSource_, val);
1467     GTEST_LOG_(INFO) << "PluginLibJpegTest: SetExifTagValuesEx002 end";
1468 }
1469 
1470 /**
1471  * @tc.name: CheckExifEntryValidEx001
1472  * @tc.desc: CheckExifEntryValidEx
1473  * @tc.type: FUNC
1474  */
1475 HWTEST_F(PluginLibJpegTest, CheckExifEntryValidEx001, TestSize.Level3)
1476 {
1477     GTEST_LOG_(INFO) << "PluginLibJpegTest: CheckExifEntryValidEx001 start";
1478     EXIFInfo exinfo;
1479     bool ret;
1480     ret = exinfo.CheckExifEntryValidEx(EXIF_IFD_0, EXIF_TAG_DATE_TIME);
1481     ASSERT_EQ(ret, true);
1482     ret = exinfo.CheckExifEntryValidEx(EXIF_IFD_0, EXIF_TAG_IMAGE_DESCRIPTION);
1483     ASSERT_EQ(ret, true);
1484     ret = exinfo.CheckExifEntryValidEx(EXIF_IFD_0, EXIF_TAG_MAKE);
1485     ASSERT_EQ(ret, true);
1486     ret = exinfo.CheckExifEntryValidEx(EXIF_IFD_0, EXIF_TAG_MODEL);
1487     ASSERT_EQ(ret, true);
1488     ret = exinfo.CheckExifEntryValidEx(EXIF_IFD_EXIF, static_cast<ExifTag>(0x8830));
1489     ASSERT_EQ(ret, true);
1490     ret = exinfo.CheckExifEntryValidEx(EXIF_IFD_EXIF, static_cast<ExifTag>(0x8831));
1491     ASSERT_EQ(ret, true);
1492     ret = exinfo.CheckExifEntryValidEx(EXIF_IFD_EXIF, static_cast<ExifTag>(0x8832));
1493     ASSERT_EQ(ret, true);
1494     ret = exinfo.CheckExifEntryValidEx(EXIF_IFD_EXIF, EXIF_TAG_APERTURE_VALUE);
1495     ASSERT_EQ(ret, true);
1496     ret = exinfo.CheckExifEntryValidEx(EXIF_IFD_EXIF, EXIF_TAG_EXPOSURE_BIAS_VALUE);
1497     ASSERT_EQ(ret, true);
1498     ret = exinfo.CheckExifEntryValidEx(EXIF_IFD_EXIF, EXIF_TAG_METERING_MODE);
1499     ASSERT_EQ(ret, true);
1500     ret = exinfo.CheckExifEntryValidEx(EXIF_IFD_EXIF, EXIF_TAG_LIGHT_SOURCE);
1501     ASSERT_EQ(ret, true);
1502     ret = exinfo.CheckExifEntryValidEx(EXIF_IFD_EXIF, EXIF_TAG_FLASH);
1503     ASSERT_EQ(ret, true);
1504     ret = exinfo.CheckExifEntryValidEx(EXIF_IFD_EXIF, EXIF_TAG_FOCAL_LENGTH);
1505     ASSERT_EQ(ret, true);
1506     ret = exinfo.CheckExifEntryValidEx(EXIF_IFD_EXIF, EXIF_TAG_USER_COMMENT);
1507     ASSERT_EQ(ret, true);
1508     ret = exinfo.CheckExifEntryValidEx(EXIF_IFD_EXIF, EXIF_TAG_PIXEL_X_DIMENSION);
1509     ASSERT_EQ(ret, true);
1510     ret = exinfo.CheckExifEntryValidEx(EXIF_IFD_EXIF, EXIF_TAG_PIXEL_Y_DIMENSION);
1511     ASSERT_EQ(ret, true);
1512     ret = exinfo.CheckExifEntryValidEx(EXIF_IFD_EXIF, EXIF_TAG_WHITE_BALANCE);
1513     ASSERT_EQ(ret, true);
1514     ret = exinfo.CheckExifEntryValidEx(EXIF_IFD_EXIF, EXIF_TAG_FOCAL_LENGTH_IN_35MM_FILM);
1515     ASSERT_EQ(ret, true);
1516     ret = exinfo.CheckExifEntryValidEx(EXIF_IFD_GPS, EXIF_TAG_GPS_TIME_STAMP);
1517     ASSERT_EQ(ret, true);
1518     ret = exinfo.CheckExifEntryValidEx(EXIF_IFD_GPS, EXIF_TAG_GPS_DATE_STAMP);
1519     ASSERT_EQ(ret, true);
1520     const ExifIfd ifd = EXIF_IFD_COUNT;
1521     ret = exinfo.CheckExifEntryValidEx(ifd, EXIF_TAG_GPS_DATE_STAMP);
1522     ASSERT_EQ(ret, false);
1523     GTEST_LOG_(INFO) << "PluginLibJpegTest: CheckExifEntryValidEx001 end";
1524 }
1525 
1526 /**
1527  * @tc.name: GetExifData001
1528  * @tc.desc: GetExifData
1529  * @tc.type: FUNC
1530  */
1531 HWTEST_F(PluginLibJpegTest, GetExifData001, TestSize.Level3)
1532 {
1533     GTEST_LOG_(INFO) << "PluginLibJpegTest: GetExifData001 start";
1534     EXIFInfo exinfo;
1535     std::string value = "test";
1536     const std::string name = "DateTimeOriginalForMedia";
1537     uint32_t ret;
1538     ret = exinfo.GetExifData(name, value);
1539     ASSERT_NE(ret, Media::ERR_MEDIA_STATUS_ABNORMAL);
1540     const std::string name2 = "OrientationInt";
1541     ret = exinfo.GetExifData(name2, value);
1542     ASSERT_NE(ret, Media::ERR_MEDIA_STATUS_ABNORMAL);
1543     GTEST_LOG_(INFO) << "PluginLibJpegTest: GetExifData001 end";
1544 }
1545 
1546 /**
1547  * @tc.name: ModifyExifData001
1548  * @tc.desc: ModifyExifData
1549  * @tc.type: FUNC
1550  */
1551 HWTEST_F(PluginLibJpegTest, ModifyExifData001, TestSize.Level3)
1552 {
1553     GTEST_LOG_(INFO) << "PluginLibJpegTest: ModifyExifData001 start";
1554     EXIFInfo exinfo;
1555     const std::string value = "test";
1556     const std::string name = "test";
1557     std::string path = "test";
1558     uint32_t ret;
1559     ret = exinfo.ModifyExifData(name, value, path);
1560     ASSERT_EQ(ret, Media::ERR_IMAGE_DECODE_EXIF_UNSUPPORT);
1561     GTEST_LOG_(INFO) << "PluginLibJpegTest: ModifyExifData001 end";
1562 }
1563 
1564 /**
1565  * @tc.name: ModifyExifData002
1566  * @tc.desc: ModifyExifData
1567  * @tc.type: FUNC
1568  */
1569 HWTEST_F(PluginLibJpegTest, ModifyExifData002, TestSize.Level3)
1570 {
1571     GTEST_LOG_(INFO) << "PluginLibJpegTest: ModifyExifData002 start";
1572     EXIFInfo exinfo;
1573     const std::string value = "test";
1574     const std::string name = "test";
1575     const int fd = 0;
1576     uint32_t ret;
1577     ret = exinfo.ModifyExifData(name, value, fd);
1578     ASSERT_EQ(ret, Media::ERR_IMAGE_DECODE_EXIF_UNSUPPORT);
1579     GTEST_LOG_(INFO) << "PluginLibJpegTest: ModifyExifData002 end";
1580 }
1581 
1582 /**
1583  * @tc.name: ModifyExifData003
1584  * @tc.desc: ModifyExifData
1585  * @tc.type: FUNC
1586  */
1587 HWTEST_F(PluginLibJpegTest, ModifyExifData003, TestSize.Level3)
1588 {
1589     GTEST_LOG_(INFO) << "PluginLibJpegTest: ModifyExifData003 start";
1590     EXIFInfo exinfo;
1591     const std::string value = "test";
1592     const std::string name = "test";
1593     unsigned char data[2];
1594     uint32_t size = 2;
1595     uint32_t ret;
1596     ret = exinfo.ModifyExifData(name, value, data, size);
1597     ASSERT_EQ(ret, Media::ERR_IMAGE_DECODE_EXIF_UNSUPPORT);
1598     GTEST_LOG_(INFO) << "PluginLibJpegTest: ModifyExifData003 end";
1599 }
1600 
1601 /**
1602  * @tc.name: WriteExifDataToFile002
1603  * @tc.desc: WriteExifDataToFile
1604  * @tc.type: FUNC
1605  */
1606 HWTEST_F(PluginLibJpegTest, WriteExifDataToFile002, TestSize.Level3)
1607 {
1608     GTEST_LOG_(INFO) << "PluginLibJpegTest: WriteExifDataToFile002 start";
1609     EXIFInfo exinfo;
1610     ExifData *ptrExifData = nullptr;
1611     FILE *file = fopen("/data/local/tmp/image/test_noexit.jpg", "w+");
1612     ASSERT_NE(file, nullptr);
1613     bool isNewExifData = false;
1614     unsigned long fileLength = exinfo.GetFileSize(file);
1615     unsigned char *fileBuf = static_cast<unsigned char *>(malloc(fileLength));
1616     exinfo.CreateExifData(fileBuf, fileLength, &ptrExifData, isNewExifData);
1617     unsigned int orginExifDataLength = exinfo.GetOrginExifDataLength(isNewExifData, fileBuf);
1618     bool ret = exinfo.WriteExifDataToFile(ptrExifData, orginExifDataLength, fileLength, fileBuf, file);
1619     ASSERT_EQ(ret, false);
1620     free(fileBuf);
1621     GTEST_LOG_(INFO) << "PluginLibJpegTest: WriteExifDataToFile002 end";
1622 }
1623 
1624 /**
1625  * @tc.name: GetDataRangeFromDE001
1626  * @tc.desc: GetDataRangeFromDE
1627  * @tc.type: FUNC
1628  */
1629 HWTEST_F(PluginLibJpegTest, GetDataRangeFromDE001, TestSize.Level3)
1630 {
1631     GTEST_LOG_(INFO) << "PluginLibJpegTest: GetDataRangeFromDE001 start";
1632     EXIFInfo exinfo;
1633     const uint8_t *buf = new uint8_t;
1634     ByteOrderedBuffer byteOrderedBuffer(buf, 10);
1635     int16_t entryCount = byteOrderedBuffer.ReadShort();
1636     byteOrderedBuffer.GetDataRangeFromDE(EXIF_IFD_0, entryCount);
1637     GTEST_LOG_(INFO) << "PluginLibJpegTest: GetDataRangeFromDE001 end";
1638 }
1639 
1640 /**
1641  * @tc.name: CreateExifTag001
1642  * @tc.desc: CreateExifTag
1643  * @tc.type: FUNC
1644  */
1645 HWTEST_F(PluginLibJpegTest, CreateExifTag001, TestSize.Level3)
1646 {
1647     GTEST_LOG_(INFO) << "PluginLibJpegTest: CreateExifTag001 start";
1648     EXIFInfo exinfo;
1649     ExifEntry *ptrEntry = nullptr;
1650     ExifData *data;
1651     FILE *file = fopen("/data/local/tmp/image/test_noexit.jpg", "w+");
1652     ASSERT_NE(file, nullptr);
1653     unsigned long fileLength = exinfo.GetFileSize(file);
1654     unsigned char *fileBuf = static_cast<unsigned char *>(malloc(fileLength));
1655     bool isNewExifData = false;
1656     exinfo.CreateExifData(fileBuf, fileLength, &data, isNewExifData);
1657     ptrEntry = exinfo.CreateExifTag(data, EXIF_IFD_GPS, EXIF_TAG_GPS_LATITUDE, 20, EXIF_FORMAT_RATIONAL);
1658     ASSERT_NE(ptrEntry, nullptr);
1659     free(fileBuf);
1660     GTEST_LOG_(INFO) << "PluginLibJpegTest: CreateExifTag001 end";
1661 }
1662 
1663 /**
1664  * @tc.name: GetExifTag001
1665  * @tc.desc: GetExifTagTag
1666  * @tc.type: FUNC
1667  */
1668 HWTEST_F(PluginLibJpegTest, GetExifTag001, TestSize.Level3)
1669 {
1670     GTEST_LOG_(INFO) << "PluginLibJpegTest: GetExifTag001 start";
1671     EXIFInfo exinfo;
1672     ExifEntry *ptrEntry = nullptr;
1673     ExifData *data;
1674     FILE *file = fopen("/data/local/tmp/image/test_noexit.jpg", "rb+");
1675     ASSERT_NE(file, nullptr);
1676     unsigned long fileLength = exinfo.GetFileSize(file);
1677     unsigned char *fileBuf = static_cast<unsigned char *>(malloc(fileLength));
1678     bool isNewExifData = false;
1679     exinfo.CreateExifData(fileBuf, fileLength, &data, isNewExifData);
1680     ptrEntry = exinfo.GetExifTag(data, EXIF_IFD_GPS, EXIF_TAG_GPS_LATITUDE, 20);
1681 
1682     // There is no latitude exif in test_noexit.jpg, modify failed
1683     ASSERT_EQ(ptrEntry, nullptr);
1684     free(fileBuf);
1685     GTEST_LOG_(INFO) << "PluginLibJpegTest: GetExifTag001 end";
1686 }
1687 
1688 /**
1689  * @tc.name: GetExifTag002
1690  * @tc.desc: GetExifTag
1691  * @tc.type: FUNC
1692  */
1693 HWTEST_F(PluginLibJpegTest, GetExifTag002, TestSize.Level3)
1694 {
1695     GTEST_LOG_(INFO) << "PluginLibJpegTest: GetExifTag002 start";
1696     EXIFInfo exinfo;
1697     ExifEntry *ptrEntry = nullptr;
1698     ExifData *data;
1699     FILE *file = fopen("/data/local/tmp/image/test_exif.jpg", "rb+");
1700     ASSERT_NE(file, nullptr);
1701     unsigned long fileLength = exinfo.GetFileSize(file);
1702     unsigned char *fileBuf = static_cast<unsigned char *>(malloc(fileLength));
1703     bool isNewExifData = false;
1704     (void)fseek(file, 0L, 0);
1705     int ret = fread(fileBuf, fileLength, 1, file);
1706     ASSERT_EQ(ret, 1);
1707     exinfo.CreateExifData(fileBuf, fileLength, &data, isNewExifData);
1708     ptrEntry = exinfo.GetExifTag(data, EXIF_IFD_GPS, EXIF_TAG_GPS_LATITUDE, 20);
1709 
1710     // There is latitude exif in test_exif.jpg, modify succeeded
1711     ASSERT_NE(ptrEntry, nullptr);
1712     free(fileBuf);
1713     GTEST_LOG_(INFO) << "PluginLibJpegTest: GetExifTag002 end";
1714 }
1715 
1716 /**
1717  * @tc.name: ParseExifData001
1718  * @tc.desc: ParseExifData
1719  * @tc.type: FUNC
1720  */
1721 HWTEST_F(PluginLibJpegTest, ParseExifData001, TestSize.Level3)
1722 {
1723     GTEST_LOG_(INFO) << "PluginLibJpegTest: ParseExifData001 start";
1724     EXIFInfo exinfo;
1725     FILE *file = fopen("/data/local/tmp/image/test_noexit.jpg", "w+");
1726     ASSERT_NE(file, nullptr);
1727     unsigned long fileLength = exinfo.GetFileSize(file);
1728     unsigned char *fileBuf = static_cast<unsigned char *>(malloc(fileLength));
1729     bool isNewExifData = false;
1730     exinfo.CreateExifData(fileBuf, fileLength, &exinfo.exifData_, isNewExifData);
1731     unsigned char buf = 'n';
1732     unsigned len = 0;
1733     int ret = exinfo.ParseExifData(&buf, len);
1734     ASSERT_EQ(ret, 0);
1735     free(fileBuf);
1736     GTEST_LOG_(INFO) << "PluginLibJpegTest: ParseExifData001 end";
1737 }
1738 
1739 /**
1740  * @tc.name: ByteOrderedBuffer001
1741  * @tc.desc: ByteOrderedBuffer
1742  * @tc.type: FUNC
1743  */
1744 HWTEST_F(PluginLibJpegTest, ByteOrderedBuffer001, TestSize.Level3)
1745 {
1746     GTEST_LOG_(INFO) << "PluginLibJpegTest: ByteOrderedBuffer001 start";
1747     uint8_t buf[20];
1748     buf[12] = 'M';
1749     buf[13] = 'M';
1750     ByteOrderedBuffer byteOrderedBuffer(buf, 20);
1751     ASSERT_EQ(byteOrderedBuffer.byteOrder_, EXIF_BYTE_ORDER_MOTOROLA);
1752     GTEST_LOG_(INFO) << "PluginLibJpegTest: ByteOrderedBuffer001 end";
1753 }
1754 
1755 /**
1756  * @tc.name: ByteOrderedBuffer002
1757  * @tc.desc: ByteOrderedBuffer
1758  * @tc.type: FUNC
1759  */
1760 HWTEST_F(PluginLibJpegTest, ByteOrderedBuffer002, TestSize.Level3)
1761 {
1762     GTEST_LOG_(INFO) << "PluginLibJpegTest: ByteOrderedBuffer002 start";
1763     uint8_t buf[20];
1764     buf[12] = 'M';
1765     buf[13] = 'x';
1766     ByteOrderedBuffer byteOrderedBuffer(buf, 20);
1767     ASSERT_EQ(byteOrderedBuffer.byteOrder_, EXIF_BYTE_ORDER_INTEL);
1768     GTEST_LOG_(INFO) << "PluginLibJpegTest: ByteOrderedBuffer002 end";
1769 }
1770 
1771 /**
1772  * @tc.name: SetDEDataByteCount002
1773  * @tc.desc: SetDEDataByteCount
1774  * @tc.type: FUNC
1775  */
1776 HWTEST_F(PluginLibJpegTest, SetDEDataByteCount002, TestSize.Level3)
1777 {
1778     GTEST_LOG_(INFO) << "PluginLibJpegTest: SetDEDataByteCount002 start";
1779     const uint8_t *buf = new uint8_t;
1780     ByteOrderedBuffer byteorder(buf, 10);
1781     uint16_t dataFormat = byteorder.ReadUnsignedShort();
1782     int32_t numberOfComponents = byteorder.ReadInt32();
1783     uint32_t byteCount = 0;
1784     bool ret = byteorder.SetDEDataByteCount(0xa436, dataFormat, numberOfComponents, byteCount);
1785     ASSERT_EQ(ret, false);
1786     delete buf;
1787     buf = nullptr;
1788     GTEST_LOG_(INFO) << "PluginLibJpegTest: SetDEDataByteCount002 end";
1789 }
1790 
1791 /**
1792  * @tc.name: GenerateDEArray003
1793  * @tc.desc: GenerateDEArray
1794  * @tc.type: FUNC
1795  */
1796 HWTEST_F(PluginLibJpegTest, GenerateDEArray003, TestSize.Level3)
1797 {
1798     GTEST_LOG_(INFO) << "PluginLibJpegTest: GenerateDEArray003 start";
1799     EXIFInfo exinfo;
1800     const uint8_t *buf = new uint8_t;
1801     ByteOrderedBuffer byteOrderedBuffer(buf, 10);
1802     byteOrderedBuffer.bufferLength_ = 1;
1803     byteOrderedBuffer.GenerateDEArray();
1804     delete buf;
1805     buf = nullptr;
1806     GTEST_LOG_(INFO) << "PluginLibJpegTest: GenerateDEArray003 end";
1807 }
1808 
1809 /**
1810  * @tc.name: ParseExifData002
1811  * @tc.desc: ParseExifData
1812  * @tc.type: FUNC
1813  */
1814 HWTEST_F(PluginLibJpegTest, ParseExifData002, TestSize.Level3)
1815 {
1816     GTEST_LOG_(INFO) << "PluginLibJpegTest: ParseExifData002 start";
1817     EXIFInfo exinfo;
1818     unsigned char *buf = nullptr;
1819     unsigned len = 1000;
1820     exinfo.exifData_ = exif_data_new();
1821     exinfo.imageFileDirectory_ = EXIF_IFD_COUNT;
1822     int ret = exinfo.ParseExifData(buf, len);
1823     ASSERT_NE(ret, 10001);
1824     exif_data_unref(exinfo.exifData_);
1825     GTEST_LOG_(INFO) << "PluginLibJpegTest: ParseExifData002 end";
1826 }
1827 
1828 /**
1829  * @tc.name: UpdateCacheExifData002
1830  * @tc.desc: UpdateCacheExifData
1831  * @tc.type: FUNC
1832  */
1833 HWTEST_F(PluginLibJpegTest, UpdateCacheExifData002, TestSize.Level3)
1834 {
1835     GTEST_LOG_(INFO) << "PluginLibJpegTest: UpdateCacheExifData002 start";
1836     EXIFInfo exinfo;
1837     FILE *file = fopen("/data/local/tmp/image/testtest.txt", "w+");
1838     exinfo.UpdateCacheExifData(file);
1839     GTEST_LOG_(INFO) << "PluginLibJpegTest: UpdateCacheExifData002 end";
1840 }
1841 
1842 /**
1843  * @tc.name: GetAreaFromExifEntries002
1844  * @tc.desc: GetAreaFromExifEntries
1845  * @tc.type: FUNC
1846  */
1847 HWTEST_F(PluginLibJpegTest, GetAreaFromExifEntries002, TestSize.Level3)
1848 {
1849     GTEST_LOG_(INFO) << "PluginLibJpegTest: GetAreaFromExifEntries002 start";
1850     EXIFInfo exinfo;
1851     const uint8_t *buf = new uint8_t;
1852     ByteOrderedBuffer byteOrderedBuffer(buf, 10);
1853     byteOrderedBuffer.GenerateDEArray();
1854     std::vector<std::pair<uint32_t, uint32_t>> ranges;
1855     DirectoryEntry Direc;
1856     Direc.ifd = EXIF_IFD_GPS;
1857     byteOrderedBuffer.directoryEntryArray_.push_back(Direc);
1858     exinfo.GetAreaFromExifEntries(1, byteOrderedBuffer.directoryEntryArray_, ranges);
1859     delete buf;
1860     buf = nullptr;
1861     GTEST_LOG_(INFO) << "PluginLibJpegTest: GetAreaFromExifEntries002 end";
1862 }
1863 
1864 /**
1865  * @tc.name: PluginExternalCreateTest001
1866  * @tc.desc: PluginExternalCreate
1867  * @tc.type: FUNC
1868  */
1869 HWTEST_F(PluginLibJpegTest, PluginExternalCreateTest001, TestSize.Level3)
1870 {
1871     GTEST_LOG_(INFO) << "PluginExportTest: PluginExternalCreateTest001 start";
1872     string className = "";
1873     OHOS::MultimediaPlugin::PluginClassBase *result = PluginExternalCreate(className);
1874     ASSERT_EQ(result, nullptr);
1875     className = "#ImplClassType";
1876     result = PluginExternalCreate(className);
1877     ASSERT_EQ(result, nullptr);
1878     GTEST_LOG_(INFO) << "PluginExportTest: PluginExternalCreateTest001 end";
1879 }
1880 
1881 /**
1882  * @tc.name: getGrColorSpaceTest001
1883  * @tc.desc: getGrColorSpace
1884  * @tc.type: FUNC
1885  */
1886 HWTEST_F(PluginLibJpegTest, getGrColorSpaceTest001, TestSize.Level3)
1887 {
1888     GTEST_LOG_(INFO) << "IccProfileInfoTest: getGrColorSpaceTest001 start";
1889     ICCProfileInfo iccProfileInfo;
1890     iccProfileInfo.getGrColorSpace();
1891     GTEST_LOG_(INFO) << "IccProfileInfoTest: getGrColorSpaceTest001 end";
1892 }
1893 
1894 /**
1895  * @tc.name: PackingICCProfileTest001
1896  * @tc.desc: PackingICCProfile
1897  * @tc.type: FUNC
1898  */
1899 HWTEST_F(PluginLibJpegTest, PackingICCProfileTest001, TestSize.Level3)
1900 {
1901     GTEST_LOG_(INFO) << "IccProfileInfoTest: PackingICCProfileTest001 start";
1902     ICCProfileInfo iccProfileInfo;
1903     j_compress_ptr cinfo = nullptr;
1904     const SkImageInfo info;
1905     uint32_t result = iccProfileInfo.PackingICCProfile(cinfo, info);
1906     ASSERT_EQ(result, OHOS::Media::ERR_IMAGE_ENCODE_ICC_FAILED);
1907     GTEST_LOG_(INFO) << "IccProfileInfoTest: PackingICCProfileTest001 end";
1908 }
1909 
1910 /**
1911  * @tc.name: exif_info017
1912  * @tc.desc: ModifyExifData
1913  * @tc.type: FUNC
1914  */
1915 HWTEST_F(PluginLibJpegTest, exif_info017, TestSize.Level3)
1916 {
1917     GTEST_LOG_(INFO) << "PluginLibJpegTest: exif_info017 start";
1918     EXIFInfo exinfo;
1919     ExifTag tag = EXIF_TAG_GPS_LATITUDE;
1920     std::string value = "111";
1921     unsigned char data[3] = {0xFF, 0xD8, 0x12};
1922     uint32_t size = 1;
1923     uint32_t ret = exinfo.ModifyExifData(tag, value, data, size);
1924     ASSERT_EQ(ret, ERR_IMAGE_DECODE_EXIF_UNSUPPORT);
1925     GTEST_LOG_(INFO) << "PluginLibJpegTest: exif_info017 end";
1926 }
1927 
1928 /**
1929  * @tc.name: exif_info018
1930  * @tc.desc: SetGpsRationals
1931  * @tc.type: FUNC
1932  */
1933 HWTEST_F(PluginLibJpegTest, exif_info018, TestSize.Level3)
1934 {
1935     GTEST_LOG_(INFO) << "PluginLibJpegTest: exif_info018 start";
1936     EXIFInfo exinfo;
1937     ExifData *data = nullptr;
1938     ExifEntry *ptrEntry = nullptr;
1939     ExifByteOrder order = EXIF_BYTE_ORDER_INTEL;
1940     ExifTag tag = EXIF_TAG_GPS_LATITUDE;
1941     std::vector<ExifRational> exifRationals;
1942     bool ret = exinfo.SetGpsRationals(data, &ptrEntry, order, tag, exifRationals);
1943     ASSERT_EQ(ret, false);
1944     GTEST_LOG_(INFO) << "PluginLibJpegTest: exif_info018 end";
1945 }
1946 
1947 /**
1948  * @tc.name: exif_info019
1949  * @tc.desc: ModifyExifData
1950  * @tc.type: FUNC
1951  */
1952 HWTEST_F(PluginLibJpegTest, exif_info019, TestSize.Level3)
1953 {
1954     GTEST_LOG_(INFO) << "PluginLibJpegTest: exif_info019 start";
1955     EXIFInfo exinfo;
1956     ExifTag tag = EXIF_TAG_GPS_LATITUDE;
1957     std::string value = "111";
1958     std::string path = IMAGE_INPUT_JPEG_PATH;
1959     uint32_t ret = exinfo.ModifyExifData(tag, value, path);
1960     ASSERT_EQ(ret, ERR_IMAGE_DECODE_EXIF_UNSUPPORT);
1961     GTEST_LOG_(INFO) << "PluginLibJpegTest: exif_info019 end";
1962 }
1963 
1964 /**
1965  * @tc.name: exif_info020
1966  * @tc.desc: ModifyExifData
1967  * @tc.type: FUNC
1968  */
1969 HWTEST_F(PluginLibJpegTest, exif_info020, TestSize.Level3)
1970 {
1971     GTEST_LOG_(INFO) << "PluginLibJpegTest: exif_info020 start";
1972     EXIFInfo exinfo;
1973     ExifTag tag = EXIF_TAG_GPS_LATITUDE;
1974     std::string value = "111";
1975     int fd = open("/data/local/tmp/image/test_test.text", O_RDWR | O_CREAT, 0777);
1976     char buffer[3] = {0xFF, 0xD8, 0x11};
1977     write(fd, buffer, strlen(buffer));
1978     uint32_t ret = exinfo.ModifyExifData(tag, value, fd);
1979     ASSERT_EQ(ret, ERR_IMAGE_DECODE_EXIF_UNSUPPORT);
1980     GTEST_LOG_(INFO) << "PluginLibJpegTest: exif_info020 end";
1981 }
1982 
1983 /**
1984  * @tc.name: Jpeg_EncoderTest001
1985  * @tc.desc: GetEncodeFormat
1986  * @tc.type: FUNC
1987  */
1988 HWTEST_F(PluginLibJpegTest, Jpeg_EncoderTest001, TestSize.Level3)
1989 {
1990     GTEST_LOG_(INFO) << "PluginLibJpegTest: Jpeg_EncoderTest001 start";
1991     auto Jpegencoder = std::make_shared<JpegEncoder>();
1992     PixelFormat format = PixelFormat::RGBA_F16;
1993     int32_t componentsNum = 1;
1994     Jpegencoder->GetEncodeFormat(format, componentsNum);
1995     ASSERT_EQ(componentsNum, COMPONENT_NUM_RGBA);
1996     format = PixelFormat::RGBA_8888;
1997     Jpegencoder->GetEncodeFormat(format, componentsNum);
1998     ASSERT_EQ(componentsNum, COMPONENT_NUM_RGBA);
1999     format = PixelFormat::BGRA_8888;
2000     Jpegencoder->GetEncodeFormat(format, componentsNum);
2001     ASSERT_EQ(componentsNum, COMPONENT_NUM_BGRA);
2002     format = PixelFormat::ALPHA_8;
2003     Jpegencoder->GetEncodeFormat(format, componentsNum);
2004     ASSERT_EQ(componentsNum, COMPONENT_NUM_GRAY);
2005     format = PixelFormat::RGB_565;
2006     Jpegencoder->GetEncodeFormat(format, componentsNum);
2007     ASSERT_EQ(componentsNum, COMPONENT_NUM_RGB);
2008     format = PixelFormat::RGB_888;
2009     Jpegencoder->GetEncodeFormat(format, componentsNum);
2010     ASSERT_EQ(componentsNum, COMPONENT_NUM_RGB);
2011     format = PixelFormat::NV12;
2012     Jpegencoder->GetEncodeFormat(format, componentsNum);
2013     ASSERT_EQ(componentsNum, COMPONENT_NUM_YUV420SP);
2014     format = PixelFormat::NV21;
2015     Jpegencoder->GetEncodeFormat(format, componentsNum);
2016     ASSERT_EQ(componentsNum, COMPONENT_NUM_YUV420SP);
2017     format = PixelFormat::CMYK;
2018     Jpegencoder->GetEncodeFormat(format, componentsNum);
2019     ASSERT_EQ(componentsNum, COMPONENT_NUM_RGBA);
2020     format = PixelFormat::UNKNOWN;
2021     Jpegencoder->GetEncodeFormat(format, componentsNum);
2022     ASSERT_EQ(componentsNum, 0);
2023     GTEST_LOG_(INFO) << "PluginLibJpegTest: Jpeg_EncoderTest001 end";
2024 }
2025 
2026 /**
2027  * @tc.name: GenerateDEArray004
2028  * @tc.desc: GenerateDEArray
2029  * @tc.type: FUNC
2030  */
2031 HWTEST_F(PluginLibJpegTest, GenerateDEArray004, TestSize.Level3)
2032 {
2033     GTEST_LOG_(INFO) << "PluginLibJpegTest: GenerateDEArray004 start";
2034     const uint8_t buf = 'a';
2035     ByteOrderedBuffer byteorder(&buf, 10);
2036     byteorder.curPosition_ = 2;
2037     byteorder.bufferLength_ = 7;
2038     byteorder.GenerateDEArray();
2039     ASSERT_EQ(true, byteorder.curPosition_ + 2 > byteorder.bufferLength_);
2040     GTEST_LOG_(INFO) << "PluginLibJpegTest: GenerateDEArray004 end";
2041 }
2042 
2043 /**
2044  * @tc.name: GetExifData002
2045  * @tc.desc: GetExifData
2046  * @tc.type: FUNC
2047  */
2048 HWTEST_F(PluginLibJpegTest, GetExifData002, TestSize.Level3)
2049 {
2050     GTEST_LOG_(INFO) << "PluginLibJpegTest: GetExifData002 start";
2051     EXIFInfo exinfo;
2052     std::string value = "test";
2053     const std::string name = "test";
2054     uint32_t ret = exinfo.GetExifData(name, value);
2055     ASSERT_EQ(ret, Media::ERR_IMAGE_DECODE_EXIF_UNSUPPORT);
2056     GTEST_LOG_(INFO) << "PluginLibJpegTest: GetExifData002 end";
2057 }
2058 
2059 /**
2060  * @tc.name: GetExifIfdByExifTag001
2061  * @tc.desc: GetExifIfdByExifTag
2062  * @tc.type: FUNC
2063  */
2064 HWTEST_F(PluginLibJpegTest, GetExifIfdByExifTag001, TestSize.Level3)
2065 {
2066     GTEST_LOG_(INFO) << "PluginLibJpegTest: GetExifIfdByExifTag001 start";
2067     EXIFInfo exinfo;
2068     ExifTag tag = static_cast<ExifTag>(0xea1c);
2069     ExifIfd ret = exinfo.GetExifIfdByExifTag(tag);
2070     ASSERT_EQ(ret, EXIF_IFD_COUNT);
2071     GTEST_LOG_(INFO) << "PluginLibJpegTest: GetExifIfdByExifTag001 end";
2072 }
2073 
2074 /**
2075  * @tc.name: GetExifFormatByExifTag001
2076  * @tc.desc: GetExifFormatByExifTag
2077  * @tc.type: FUNC
2078  */
2079 HWTEST_F(PluginLibJpegTest, GetExifFormatByExifTag001, TestSize.Level3)
2080 {
2081     GTEST_LOG_(INFO) << "PluginLibJpegTest: GetExifFormatByExifTag001 start";
2082     EXIFInfo exinfo;
2083     ExifTag tag = static_cast<ExifTag>(0xea1c);
2084     ExifFormat ret = exinfo.GetExifFormatByExifTag(tag);
2085     ASSERT_EQ(ret, EXIF_FORMAT_UNDEFINED);
2086     GTEST_LOG_(INFO) << "PluginLibJpegTest: GetExifFormatByExifTag001 end";
2087 }
2088 
2089 /**
2090  * @tc.name: SetGpsRationals001
2091  * @tc.desc: SetGpsRationals
2092  * @tc.type: FUNC
2093  */
2094 HWTEST_F(PluginLibJpegTest, SetGpsRationals001, TestSize.Level3)
2095 {
2096     GTEST_LOG_(INFO) << "PluginLibJpegTest: SetGpsRationals001 start";
2097     EXIFInfo exinfo;
2098     ExifData *ptrExifData = nullptr;
2099     ExifEntry *ptrEntry = nullptr;
2100     ExifByteOrder order = EXIF_BYTE_ORDER_INTEL;
2101     ExifTag tag = EXIF_TAG_GPS_LATITUDE;
2102     std::vector<ExifRational> exifRationals;
2103     exifRationals.resize(3);
2104     ASSERT_EQ(exifRationals.size(), 3);
2105     unsigned char data = 'a';
2106     uint32_t size = 10;
2107     bool isNewExifData = true;
2108     exinfo.CreateExifData(&data, size, &ptrExifData, isNewExifData);
2109     bool ret = exinfo.SetGpsRationals(ptrExifData, &ptrEntry, order, tag, exifRationals);
2110     ASSERT_EQ(ret, false);
2111     GTEST_LOG_(INFO) << "PluginLibJpegTest: SetGpsRationals001 end";
2112 }
2113 
2114 /**
2115  * @tc.name: SetGpsDegreeRational001
2116  * @tc.desc: SetGpsDegreeRational
2117  * @tc.type: FUNC
2118  */
2119 HWTEST_F(PluginLibJpegTest, SetGpsDegreeRational001, TestSize.Level3)
2120 {
2121     GTEST_LOG_(INFO) << "PluginLibJpegTest: SetGpsDegreeRational001 start";
2122     EXIFInfo exinfo;
2123     ExifData *ptrExifData = nullptr;
2124     ExifEntry *ptrEntry = nullptr;
2125     ExifByteOrder order = EXIF_BYTE_ORDER_INTEL;
2126     ExifTag tag = EXIF_TAG_GPS_LATITUDE;
2127     std::vector<std::string> exifRationals;
2128     exifRationals.resize(3);
2129     ASSERT_NE(exifRationals.size(), 2);
2130     unsigned char data = 'a';
2131     uint32_t size = 10;
2132     bool isNewExifData = true;
2133     exinfo.CreateExifData(&data, size, &ptrExifData, isNewExifData);
2134     bool ret = exinfo.SetGpsDegreeRational(ptrExifData, &ptrEntry, order, tag, exifRationals);
2135     ASSERT_EQ(ret, false);
2136     GTEST_LOG_(INFO) << "PluginLibJpegTest: SetGpsDegreeRational001 end";
2137 }
2138 
2139 /**
2140  * @tc.name: Jpeg_EncoderTest002
2141  * @tc.desc: AddImage
2142  * @tc.type: FUNC
2143  */
2144 HWTEST_F(PluginLibJpegTest, Jpeg_EncoderTest002, TestSize.Level3)
2145 {
2146     GTEST_LOG_(INFO) << "PluginLibJpegTest: Jpeg_EncoderTest002 start";
2147     auto Jpegencoder = std::make_shared<JpegEncoder>();
2148     Media::PixelMap pixelmap;
2149     Jpegencoder->pixelMaps_.push_back(&pixelmap);
2150     uint32_t ret = Jpegencoder->AddImage(pixelmap);
2151     ASSERT_EQ(ret, ERR_IMAGE_ADD_PIXEL_MAP_FAILED);
2152     GTEST_LOG_(INFO) << "PluginLibJpegTest: Jpeg_EncoderTest002 end";
2153 }
2154 
2155 /**
2156  * @tc.name: Jpeg_EncoderTest003
2157  * @tc.desc: FinalizeEncode
2158  * @tc.type: FUNC
2159  */
2160 HWTEST_F(PluginLibJpegTest, Jpeg_EncoderTest003, TestSize.Level3)
2161 {
2162     GTEST_LOG_(INFO) << "PluginLibJpegTest: Jpeg_EncoderTest003 start";
2163     auto Jpegencoder = std::make_shared<JpegEncoder>();
2164     Media::PixelMap pixelmap;
2165     pixelmap.imageInfo_.pixelFormat = PixelFormat::BGRA_8888;
2166     pixelmap.data_ = nullptr;
2167     Jpegencoder->pixelMaps_.push_back(&pixelmap);
2168     uint32_t ret = Jpegencoder->FinalizeEncode();
2169     ASSERT_EQ(ret, ERR_IMAGE_INVALID_PARAMETER);
2170     GTEST_LOG_(INFO) << "PluginLibJpegTest: Jpeg_EncoderTest003 end";
2171 }
2172 
2173 /**
2174  * @tc.name: Jpeg_EncoderTest004
2175  * @tc.desc: SetCommonConfig
2176  * @tc.type: FUNC
2177  */
2178 HWTEST_F(PluginLibJpegTest, Jpeg_EncoderTest004, TestSize.Level3)
2179 {
2180     GTEST_LOG_(INFO) << "PluginLibJpegTest: Jpeg_EncoderTest004 start";
2181     auto Jpegencoder = std::make_shared<JpegEncoder>();
2182     Media::PixelMap pixelmap;
2183     Jpegencoder->pixelMaps_.clear();
2184     uint32_t ret = Jpegencoder->SetCommonConfig();
2185     ASSERT_EQ(ret, ERR_IMAGE_INVALID_PARAMETER);
2186     GTEST_LOG_(INFO) << "PluginLibJpegTest: Jpeg_EncoderTest004 end";
2187 }
2188 
2189 /**
2190  * @tc.name: Jpeg_EncoderTest005
2191  * @tc.desc: SetYuv420spExtraConfig
2192  * @tc.type: FUNC
2193  */
2194 HWTEST_F(PluginLibJpegTest, Jpeg_EncoderTest005, TestSize.Level3)
2195 {
2196     GTEST_LOG_(INFO) << "PluginLibJpegTest: Jpeg_EncoderTest005 start";
2197     auto Jpegencoder = std::make_shared<JpegEncoder>();
2198     Jpegencoder->encodeInfo_.comp_info = new jpeg_component_info;
2199     Jpegencoder->SetYuv420spExtraConfig();
2200     ASSERT_EQ(Jpegencoder->encodeInfo_.comp_info[0].h_samp_factor, SAMPLE_FACTOR_TWO);
2201     GTEST_LOG_(INFO) << "PluginLibJpegTest: Jpeg_EncoderTest005 end";
2202 }
2203 
2204 /**
2205  * @tc.name: Jpeg_EncoderTest006
2206  * @tc.desc: Deinterweave
2207  * @tc.type: FUNC
2208  */
2209 HWTEST_F(PluginLibJpegTest, Jpeg_EncoderTest006, TestSize.Level3)
2210 {
2211     GTEST_LOG_(INFO) << "PluginLibJpegTest: Jpeg_EncoderTest006 start";
2212     auto Jpegencoder = std::make_shared<JpegEncoder>();
2213     Media::PixelMap pixelmap;
2214     Jpegencoder->pixelMaps_.push_back(&pixelmap);
2215     uint8_t *uvPlane = nullptr;
2216     uint8_t *uPlane = nullptr;
2217     uint8_t *vPlane = nullptr;
2218     uint32_t curRow = 0;
2219     uint32_t width = 0;
2220     uint32_t height = 0;
2221     Jpegencoder->Deinterweave(uvPlane, uPlane, vPlane, curRow, width, height);
2222     ASSERT_EQ(pixelmap.imageInfo_.pixelFormat, PixelFormat::UNKNOWN);
2223     GTEST_LOG_(INFO) << "PluginLibJpegTest: Jpeg_EncoderTest006 end";
2224 }
2225 } // namespace Multimedia
2226 } // namespace OHOS