MetaDataUtilTests.m 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. // Copyright 2019 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #import "ImagePickerTestImages.h"
  5. @import image_picker;
  6. @import XCTest;
  7. @interface MetaDataUtilTests : XCTestCase
  8. @end
  9. @implementation MetaDataUtilTests
  10. - (void)testGetImageMIMETypeFromImageData {
  11. // test jpeg
  12. XCTAssertEqual(
  13. [FLTImagePickerMetaDataUtil getImageMIMETypeFromImageData:ImagePickerTestImages.JPGTestData],
  14. FLTImagePickerMIMETypeJPEG);
  15. // test png
  16. XCTAssertEqual(
  17. [FLTImagePickerMetaDataUtil getImageMIMETypeFromImageData:ImagePickerTestImages.PNGTestData],
  18. FLTImagePickerMIMETypePNG);
  19. // test gif
  20. XCTAssertEqual(
  21. [FLTImagePickerMetaDataUtil getImageMIMETypeFromImageData:ImagePickerTestImages.GIFTestData],
  22. FLTImagePickerMIMETypeGIF);
  23. }
  24. - (void)testSuffixFromType {
  25. // test jpeg
  26. XCTAssertEqualObjects(
  27. [FLTImagePickerMetaDataUtil imageTypeSuffixFromType:FLTImagePickerMIMETypeJPEG], @".jpg");
  28. // test png
  29. XCTAssertEqualObjects(
  30. [FLTImagePickerMetaDataUtil imageTypeSuffixFromType:FLTImagePickerMIMETypePNG], @".png");
  31. // test gif
  32. XCTAssertEqualObjects(
  33. [FLTImagePickerMetaDataUtil imageTypeSuffixFromType:FLTImagePickerMIMETypeGIF], @".gif");
  34. // test other
  35. XCTAssertNil([FLTImagePickerMetaDataUtil imageTypeSuffixFromType:FLTImagePickerMIMETypeOther]);
  36. }
  37. - (void)testGetMetaData {
  38. NSDictionary *metaData =
  39. [FLTImagePickerMetaDataUtil getMetaDataFromImageData:ImagePickerTestImages.JPGTestData];
  40. NSDictionary *exif = [metaData objectForKey:(__bridge NSString *)kCGImagePropertyExifDictionary];
  41. XCTAssertEqual([exif[(__bridge NSString *)kCGImagePropertyExifPixelXDimension] integerValue], 12);
  42. }
  43. - (void)testWriteMetaData {
  44. NSData *dataJPG = ImagePickerTestImages.JPGTestData;
  45. NSDictionary *metaData = [FLTImagePickerMetaDataUtil getMetaDataFromImageData:dataJPG];
  46. NSString *tmpFile = [NSString stringWithFormat:@"image_picker_test.jpg"];
  47. NSString *tmpDirectory = NSTemporaryDirectory();
  48. NSString *tmpPath = [tmpDirectory stringByAppendingPathComponent:tmpFile];
  49. NSData *newData = [FLTImagePickerMetaDataUtil updateMetaData:metaData toImage:dataJPG];
  50. if ([[NSFileManager defaultManager] createFileAtPath:tmpPath contents:newData attributes:nil]) {
  51. NSData *savedTmpImageData = [NSData dataWithContentsOfFile:tmpPath];
  52. NSDictionary *tmpMetaData =
  53. [FLTImagePickerMetaDataUtil getMetaDataFromImageData:savedTmpImageData];
  54. XCTAssert([tmpMetaData isEqualToDictionary:metaData]);
  55. } else {
  56. XCTAssert(NO);
  57. }
  58. }
  59. - (void)testConvertImageToData {
  60. UIImage *imageJPG = [UIImage imageWithData:ImagePickerTestImages.JPGTestData];
  61. NSData *convertedDataJPG = [FLTImagePickerMetaDataUtil convertImage:imageJPG
  62. usingType:FLTImagePickerMIMETypeJPEG
  63. quality:@(0.5)];
  64. XCTAssertEqual([FLTImagePickerMetaDataUtil getImageMIMETypeFromImageData:convertedDataJPG],
  65. FLTImagePickerMIMETypeJPEG);
  66. NSData *convertedDataPNG = [FLTImagePickerMetaDataUtil convertImage:imageJPG
  67. usingType:FLTImagePickerMIMETypePNG
  68. quality:nil];
  69. XCTAssertEqual([FLTImagePickerMetaDataUtil getImageMIMETypeFromImageData:convertedDataPNG],
  70. FLTImagePickerMIMETypePNG);
  71. }
  72. @end