| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- // Copyright 2019 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #import "ImagePickerTestImages.h"
- @import image_picker;
- @import XCTest;
- @interface PhotoAssetUtilTests : XCTestCase
- @end
- @implementation PhotoAssetUtilTests
- - (void)getAssetFromImagePickerInfoShouldReturnNilIfNotAvailable {
- NSDictionary *mockData = @{};
- XCTAssertNil([FLTImagePickerPhotoAssetUtil getAssetFromImagePickerInfo:mockData]);
- }
- - (void)testSaveImageWithOriginalImageData_ShouldSaveWithTheCorrectExtentionAndMetaData {
- // test jpg
- NSData *dataJPG = ImagePickerTestImages.JPGTestData;
- UIImage *imageJPG = [UIImage imageWithData:dataJPG];
- NSString *savedPathJPG = [FLTImagePickerPhotoAssetUtil saveImageWithOriginalImageData:dataJPG
- image:imageJPG
- maxWidth:nil
- maxHeight:nil
- imageQuality:nil];
- XCTAssertNotNil(savedPathJPG);
- XCTAssertEqualObjects([savedPathJPG substringFromIndex:savedPathJPG.length - 4], @".jpg");
- NSDictionary *originalMetaDataJPG = [FLTImagePickerMetaDataUtil getMetaDataFromImageData:dataJPG];
- NSData *newDataJPG = [NSData dataWithContentsOfFile:savedPathJPG];
- NSDictionary *newMetaDataJPG = [FLTImagePickerMetaDataUtil getMetaDataFromImageData:newDataJPG];
- XCTAssertEqualObjects(originalMetaDataJPG[@"ProfileName"], newMetaDataJPG[@"ProfileName"]);
- // test png
- NSData *dataPNG = ImagePickerTestImages.PNGTestData;
- UIImage *imagePNG = [UIImage imageWithData:dataPNG];
- NSString *savedPathPNG = [FLTImagePickerPhotoAssetUtil saveImageWithOriginalImageData:dataPNG
- image:imagePNG
- maxWidth:nil
- maxHeight:nil
- imageQuality:nil];
- XCTAssertNotNil(savedPathPNG);
- XCTAssertEqualObjects([savedPathPNG substringFromIndex:savedPathPNG.length - 4], @".png");
- NSDictionary *originalMetaDataPNG = [FLTImagePickerMetaDataUtil getMetaDataFromImageData:dataPNG];
- NSData *newDataPNG = [NSData dataWithContentsOfFile:savedPathPNG];
- NSDictionary *newMetaDataPNG = [FLTImagePickerMetaDataUtil getMetaDataFromImageData:newDataPNG];
- XCTAssertEqualObjects(originalMetaDataPNG[@"ProfileName"], newMetaDataPNG[@"ProfileName"]);
- }
- - (void)testSaveImageWithPickerInfo_ShouldSaveWithDefaultExtention {
- UIImage *imageJPG = [UIImage imageWithData:ImagePickerTestImages.JPGTestData];
- NSString *savedPathJPG = [FLTImagePickerPhotoAssetUtil saveImageWithPickerInfo:nil
- image:imageJPG
- imageQuality:nil];
- XCTAssertNotNil(savedPathJPG);
- // should be saved as
- XCTAssertEqualObjects([savedPathJPG substringFromIndex:savedPathJPG.length - 4],
- kFLTImagePickerDefaultSuffix);
- }
- - (void)testSaveImageWithPickerInfo_ShouldSaveWithTheCorrectExtentionAndMetaData {
- NSDictionary *dummyInfo = @{
- UIImagePickerControllerMediaMetadata : @{
- (__bridge NSString *)kCGImagePropertyExifDictionary :
- @{(__bridge NSString *)kCGImagePropertyExifMakerNote : @"aNote"}
- }
- };
- UIImage *imageJPG = [UIImage imageWithData:ImagePickerTestImages.JPGTestData];
- NSString *savedPathJPG = [FLTImagePickerPhotoAssetUtil saveImageWithPickerInfo:dummyInfo
- image:imageJPG
- imageQuality:nil];
- NSData *data = [NSData dataWithContentsOfFile:savedPathJPG];
- NSDictionary *meta = [FLTImagePickerMetaDataUtil getMetaDataFromImageData:data];
- XCTAssertEqualObjects(meta[(__bridge NSString *)kCGImagePropertyExifDictionary]
- [(__bridge NSString *)kCGImagePropertyExifMakerNote],
- @"aNote");
- }
- - (void)testSaveImageWithOriginalImageData_ShouldSaveAsGifAnimation {
- // test gif
- NSData *dataGIF = ImagePickerTestImages.GIFTestData;
- UIImage *imageGIF = [UIImage imageWithData:dataGIF];
- CGImageSourceRef imageSource = CGImageSourceCreateWithData((CFDataRef)dataGIF, nil);
- size_t numberOfFrames = CGImageSourceGetCount(imageSource);
- NSNumber *nilSize = (NSNumber *)[NSNull null];
- NSString *savedPathGIF = [FLTImagePickerPhotoAssetUtil saveImageWithOriginalImageData:dataGIF
- image:imageGIF
- maxWidth:nilSize
- maxHeight:nilSize
- imageQuality:nil];
- XCTAssertNotNil(savedPathGIF);
- XCTAssertEqualObjects([savedPathGIF substringFromIndex:savedPathGIF.length - 4], @".gif");
- NSData *newDataGIF = [NSData dataWithContentsOfFile:savedPathGIF];
- CGImageSourceRef newImageSource = CGImageSourceCreateWithData((CFDataRef)newDataGIF, nil);
- size_t newNumberOfFrames = CGImageSourceGetCount(newImageSource);
- XCTAssertEqual(numberOfFrames, newNumberOfFrames);
- }
- - (void)testSaveImageWithOriginalImageData_ShouldSaveAsScalledGifAnimation {
- // test gif
- NSData *dataGIF = ImagePickerTestImages.GIFTestData;
- UIImage *imageGIF = [UIImage imageWithData:dataGIF];
- CGImageSourceRef imageSource = CGImageSourceCreateWithData((CFDataRef)dataGIF, nil);
- size_t numberOfFrames = CGImageSourceGetCount(imageSource);
- NSString *savedPathGIF = [FLTImagePickerPhotoAssetUtil saveImageWithOriginalImageData:dataGIF
- image:imageGIF
- maxWidth:@3
- maxHeight:@2
- imageQuality:nil];
- NSData *newDataGIF = [NSData dataWithContentsOfFile:savedPathGIF];
- UIImage *newImage = [[UIImage alloc] initWithData:newDataGIF];
- XCTAssertEqual(newImage.size.width, 3);
- XCTAssertEqual(newImage.size.height, 2);
- CGImageSourceRef newImageSource = CGImageSourceCreateWithData((CFDataRef)newDataGIF, nil);
- size_t newNumberOfFrames = CGImageSourceGetCount(newImageSource);
- XCTAssertEqual(numberOfFrames, newNumberOfFrames);
- }
- @end
|