@@ -21,7 +21,7 @@ - (void)testSaveWebPImage API_AVAILABLE(ios(14)) {
21
21
NSItemProvider *itemProvider = [[NSItemProvider alloc ] initWithContentsOfURL: imageURL];
22
22
PHPickerResult *result = [self createPickerResultWithProvider: itemProvider];
23
23
24
- [self verifySavingImageWithPickerResult: result fullMetadata: YES ];
24
+ [self verifySavingImageWithPickerResult: result fullMetadata: YES withExtension: @" jpg " ];
25
25
}
26
26
27
27
- (void )testSavePNGImage API_AVAILABLE(ios(14 )) {
@@ -30,7 +30,7 @@ - (void)testSavePNGImage API_AVAILABLE(ios(14)) {
30
30
NSItemProvider *itemProvider = [[NSItemProvider alloc ] initWithContentsOfURL: imageURL];
31
31
PHPickerResult *result = [self createPickerResultWithProvider: itemProvider];
32
32
33
- [self verifySavingImageWithPickerResult: result fullMetadata: YES ];
33
+ [self verifySavingImageWithPickerResult: result fullMetadata: YES withExtension: @" png " ];
34
34
}
35
35
36
36
- (void )testSaveJPGImage API_AVAILABLE(ios(14 )) {
@@ -39,7 +39,7 @@ - (void)testSaveJPGImage API_AVAILABLE(ios(14)) {
39
39
NSItemProvider *itemProvider = [[NSItemProvider alloc ] initWithContentsOfURL: imageURL];
40
40
PHPickerResult *result = [self createPickerResultWithProvider: itemProvider];
41
41
42
- [self verifySavingImageWithPickerResult: result fullMetadata: YES ];
42
+ [self verifySavingImageWithPickerResult: result fullMetadata: YES withExtension: @" jpg " ];
43
43
}
44
44
45
45
- (void )testSaveGIFImage API_AVAILABLE(ios(14 )) {
@@ -48,7 +48,39 @@ - (void)testSaveGIFImage API_AVAILABLE(ios(14)) {
48
48
NSItemProvider *itemProvider = [[NSItemProvider alloc ] initWithContentsOfURL: imageURL];
49
49
PHPickerResult *result = [self createPickerResultWithProvider: itemProvider];
50
50
51
- [self verifySavingImageWithPickerResult: result fullMetadata: YES ];
51
+ NSData *dataGIF = [NSData dataWithContentsOfURL: imageURL];
52
+ CGImageSourceRef imageSource = CGImageSourceCreateWithData ((__bridge CFDataRef )dataGIF, nil );
53
+ size_t numberOfFrames = CGImageSourceGetCount (imageSource);
54
+
55
+ XCTestExpectation *pathExpectation = [self expectationWithDescription: @" Path was created" ];
56
+ XCTestExpectation *operationExpectation =
57
+ [self expectationWithDescription: @" Operation completed" ];
58
+
59
+ FLTPHPickerSaveImageToPathOperation *operation = [[FLTPHPickerSaveImageToPathOperation alloc ]
60
+ initWithResult: result
61
+ maxHeight: @100
62
+ maxWidth: @100
63
+ desiredImageQuality: @100
64
+ fullMetadata: NO
65
+ savedPathBlock: ^(NSString *savedPath, FlutterError *error) {
66
+ XCTAssertTrue ([[NSFileManager defaultManager ] fileExistsAtPath: savedPath]);
67
+
68
+ // Ensure gif is animated.
69
+ XCTAssertEqualObjects ([NSURL URLWithString: savedPath].pathExtension , @" gif" );
70
+ NSData *newDataGIF = [NSData dataWithContentsOfFile: savedPath];
71
+ CGImageSourceRef newImageSource =
72
+ CGImageSourceCreateWithData ((__bridge CFDataRef )newDataGIF, nil );
73
+ size_t newNumberOfFrames = CGImageSourceGetCount (newImageSource);
74
+ XCTAssertEqual (numberOfFrames, newNumberOfFrames);
75
+ [pathExpectation fulfill ];
76
+ }];
77
+ operation.completionBlock = ^{
78
+ [operationExpectation fulfill ];
79
+ };
80
+
81
+ [operation start ];
82
+ [self waitForExpectationsWithTimeout: 30 handler: nil ];
83
+ XCTAssertTrue (operation.isFinished );
52
84
}
53
85
54
86
- (void )testSaveBMPImage API_AVAILABLE(ios(14 )) {
@@ -57,7 +89,7 @@ - (void)testSaveBMPImage API_AVAILABLE(ios(14)) {
57
89
NSItemProvider *itemProvider = [[NSItemProvider alloc ] initWithContentsOfURL: imageURL];
58
90
PHPickerResult *result = [self createPickerResultWithProvider: itemProvider];
59
91
60
- [self verifySavingImageWithPickerResult: result fullMetadata: YES ];
92
+ [self verifySavingImageWithPickerResult: result fullMetadata: YES withExtension: @" jpg " ];
61
93
}
62
94
63
95
- (void )testSaveHEICImage API_AVAILABLE(ios(14 )) {
@@ -66,7 +98,7 @@ - (void)testSaveHEICImage API_AVAILABLE(ios(14)) {
66
98
NSItemProvider *itemProvider = [[NSItemProvider alloc ] initWithContentsOfURL: imageURL];
67
99
PHPickerResult *result = [self createPickerResultWithProvider: itemProvider];
68
100
69
- [self verifySavingImageWithPickerResult: result fullMetadata: YES ];
101
+ [self verifySavingImageWithPickerResult: result fullMetadata: YES withExtension: @" jpg " ];
70
102
}
71
103
72
104
- (void )testSaveICNSImage API_AVAILABLE(ios(14 )) {
@@ -75,7 +107,7 @@ - (void)testSaveICNSImage API_AVAILABLE(ios(14)) {
75
107
NSItemProvider *itemProvider = [[NSItemProvider alloc ] initWithContentsOfURL: imageURL];
76
108
PHPickerResult *result = [self createPickerResultWithProvider: itemProvider];
77
109
78
- [self verifySavingImageWithPickerResult: result fullMetadata: YES ];
110
+ [self verifySavingImageWithPickerResult: result fullMetadata: YES withExtension: @" jpg " ];
79
111
}
80
112
81
113
- (void )testSaveICOImage API_AVAILABLE(ios(14 )) {
@@ -84,7 +116,7 @@ - (void)testSaveICOImage API_AVAILABLE(ios(14)) {
84
116
NSItemProvider *itemProvider = [[NSItemProvider alloc ] initWithContentsOfURL: imageURL];
85
117
PHPickerResult *result = [self createPickerResultWithProvider: itemProvider];
86
118
87
- [self verifySavingImageWithPickerResult: result fullMetadata: YES ];
119
+ [self verifySavingImageWithPickerResult: result fullMetadata: YES withExtension: @" jpg " ];
88
120
}
89
121
90
122
- (void )testSaveProRAWImage API_AVAILABLE(ios(14 )) {
@@ -93,7 +125,7 @@ - (void)testSaveProRAWImage API_AVAILABLE(ios(14)) {
93
125
NSItemProvider *itemProvider = [[NSItemProvider alloc ] initWithContentsOfURL: imageURL];
94
126
PHPickerResult *result = [self createPickerResultWithProvider: itemProvider];
95
127
96
- [self verifySavingImageWithPickerResult: result fullMetadata: YES ];
128
+ [self verifySavingImageWithPickerResult: result fullMetadata: YES withExtension: @" jpg " ];
97
129
}
98
130
99
131
- (void )testSaveSVGImage API_AVAILABLE(ios(14 )) {
@@ -102,15 +134,15 @@ - (void)testSaveSVGImage API_AVAILABLE(ios(14)) {
102
134
NSItemProvider *itemProvider = [[NSItemProvider alloc ] initWithContentsOfURL: imageURL];
103
135
PHPickerResult *result = [self createPickerResultWithProvider: itemProvider];
104
136
105
- [self verifySavingImageWithPickerResult: result fullMetadata: YES ];
137
+ [self verifySavingImageWithPickerResult: result fullMetadata: YES withExtension: @" jpg " ];
106
138
}
107
139
108
140
- (void )testSaveTIFFImage API_AVAILABLE(ios(14 )) {
109
141
NSURL *imageURL = [[NSBundle bundleForClass: [self class ]] URLForResource: @" tiffImage"
110
142
withExtension: @" tiff" ];
111
143
NSItemProvider *itemProvider = [[NSItemProvider alloc ] initWithContentsOfURL: imageURL];
112
144
PHPickerResult *result = [self createPickerResultWithProvider: itemProvider];
113
- [self verifySavingImageWithPickerResult: result fullMetadata: YES ];
145
+ [self verifySavingImageWithPickerResult: result fullMetadata: YES withExtension: @" jpg " ];
114
146
}
115
147
116
148
- (void )testNonexistentImage API_AVAILABLE(ios(14 )) {
@@ -176,7 +208,7 @@ - (void)testSavePNGImageWithoutFullMetadata API_AVAILABLE(ios(14)) {
176
208
PHPickerResult *result = [self createPickerResultWithProvider: itemProvider];
177
209
OCMReject ([photoAssetUtil fetchAssetsWithLocalIdentifiers: OCMOCK_ANY options: OCMOCK_ANY]);
178
210
179
- [self verifySavingImageWithPickerResult: result fullMetadata: NO ];
211
+ [self verifySavingImageWithPickerResult: result fullMetadata: NO withExtension: @" png " ];
180
212
OCMVerifyAll (photoAssetUtil);
181
213
}
182
214
@@ -204,7 +236,8 @@ - (PHPickerResult *)createPickerResultWithProvider:(NSItemProvider *)itemProvide
204
236
* @param result the picker result
205
237
*/
206
238
- (void )verifySavingImageWithPickerResult : (PHPickerResult *)result
207
- fullMetadata : (BOOL )fullMetadata API_AVAILABLE(ios(14 )) {
239
+ fullMetadata : (BOOL )fullMetadata
240
+ withExtension : (NSString *)extension API_AVAILABLE(ios(14 )) {
208
241
XCTestExpectation *pathExpectation = [self expectationWithDescription: @" Path was created" ];
209
242
XCTestExpectation *operationExpectation =
210
243
[self expectationWithDescription: @" Operation completed" ];
@@ -217,6 +250,7 @@ - (void)verifySavingImageWithPickerResult:(PHPickerResult *)result
217
250
fullMetadata: fullMetadata
218
251
savedPathBlock: ^(NSString *savedPath, FlutterError *error) {
219
252
XCTAssertTrue ([[NSFileManager defaultManager ] fileExistsAtPath: savedPath]);
253
+ XCTAssertEqualObjects ([NSURL URLWithString: savedPath].pathExtension , extension);
220
254
[pathExpectation fulfill ];
221
255
}];
222
256
operation.completionBlock = ^{
0 commit comments