From 835eb13e307aaa0ab0b51b18b538fa4437565f40 Mon Sep 17 00:00:00 2001 From: DreamPiggy Date: Wed, 8 Nov 2023 18:14:10 +0800 Subject: [PATCH] Change the encoding test into official macOS unit test Added `testWebPEncodingWithICCProfile` --- Cartfile.resolved | 4 +- .../Info.plist | 11 ++ .../ViewController.m | 55 +++++- .../pexels-egor-kamelev-920163/after.webp | Bin 32690 -> 0 bytes .../project.pbxproj | 4 + .../SDWebImageWebPCoderExample-macOS.xcscheme | 78 +++++++++ Podfile | 7 + .../contents.xcworkspacedata | 3 - .../Images/TestColorspaceBefore.jpeg | Bin Tests/SDWebImageWebPCoderTests.m | 20 +++ .../project.pbxproj | 161 ++++++++++++++++++ .../SDWebImageWebPCoderTests-macOS.xcscheme | 78 +++++++++ 12 files changed, 407 insertions(+), 14 deletions(-) create mode 100644 Example/SDWebImageWebPCoderExample-macOS/Info.plist delete mode 100644 Example/SDWebImageWebPCoderExample-macOS/examples/pexels-egor-kamelev-920163/after.webp create mode 100644 Example/SDWebImageWebPCoderExample.xcodeproj/xcshareddata/xcschemes/SDWebImageWebPCoderExample-macOS.xcscheme rename Example/SDWebImageWebPCoderExample-macOS/examples/pexels-egor-kamelev-920163/before.jpeg => Tests/Images/TestColorspaceBefore.jpeg (100%) create mode 100644 Tests/SDWebImageWebPCoderTests.xcodeproj/xcshareddata/xcschemes/SDWebImageWebPCoderTests-macOS.xcscheme diff --git a/Cartfile.resolved b/Cartfile.resolved index e1c257c..c944c61 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -1,2 +1,2 @@ -github "SDWebImage/SDWebImage" "5.10.0" -github "SDWebImage/libwebp-Xcode" "1.1.0" +github "SDWebImage/SDWebImage" "5.18.4" +github "SDWebImage/libwebp-Xcode" "1.3.2" diff --git a/Example/SDWebImageWebPCoderExample-macOS/Info.plist b/Example/SDWebImageWebPCoderExample-macOS/Info.plist new file mode 100644 index 0000000..6a6654d --- /dev/null +++ b/Example/SDWebImageWebPCoderExample-macOS/Info.plist @@ -0,0 +1,11 @@ + + + + + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + + + diff --git a/Example/SDWebImageWebPCoderExample-macOS/ViewController.m b/Example/SDWebImageWebPCoderExample-macOS/ViewController.m index 000c13f..11492b0 100644 --- a/Example/SDWebImageWebPCoderExample-macOS/ViewController.m +++ b/Example/SDWebImageWebPCoderExample-macOS/ViewController.m @@ -10,22 +10,59 @@ #import #import +@interface ViewController () + +@property (nonatomic, strong) UIImageView *imageView1; +@property (nonatomic, strong) SDAnimatedImageView *imageView2; + +@end + @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; - - // Test transcoding - NSString *jpegPath = [NSBundle.mainBundle pathForResource:@"before.jpeg" ofType:nil inDirectory:@"examples/pexels-egor-kamelev-920163"]; - NSData *jpegData = [NSData dataWithContentsOfFile:jpegPath]; - NSImage *jpegImage = [[NSImage alloc] initWithData:jpegData]; - NSData *webpData = [[SDImageWebPCoder sharedCoder] encodedDataWithImage:jpegImage format:SDImageFormatWebP options:nil]; - NSString *webpPath = [[jpegPath stringByDeletingLastPathComponent] stringByAppendingPathComponent:@"after.webp"]; - BOOL success = [webpData writeToFile:webpPath atomically:YES]; - NSAssert(success, @"Encode WebP success"); + [SDImageCache.sharedImageCache clearDiskOnCompletion:nil]; + + [[SDImageCodersManager sharedManager] addCoder:[SDImageWebPCoder sharedCoder]]; + + self.imageView1 = [UIImageView new]; + self.imageView1.imageScaling = NSImageScaleProportionallyUpOrDown; + [self.view addSubview:self.imageView1]; + + self.imageView2 = [SDAnimatedImageView new]; + self.imageView2.imageScaling = NSImageScaleProportionallyUpOrDown; + [self.view addSubview:self.imageView2]; + + NSURL *staticWebPURL = [NSURL URLWithString:@"https://www.gstatic.com/webp/gallery/2.webp"]; + NSURL *animatedWebPURL = [NSURL URLWithString:@"http://littlesvr.ca/apng/images/world-cup-2014-42.webp"]; + + [self.imageView1 sd_setImageWithURL:staticWebPURL placeholderImage:nil options:0 context:@{SDWebImageContextImageScaleDownLimitBytes : @(1024 * 100)} progress:nil completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) { + NSCAssert(image.size.width < 200, @"Limit Bytes should limit image size to 186"); + if (image) { + NSLog(@"%@", @"Static WebP load success"); + } + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + NSUInteger maxFileSize = 4096; + NSData *webpData = [SDImageWebPCoder.sharedCoder encodedDataWithImage:image format:SDImageFormatWebP options:@{SDImageCoderEncodeMaxFileSize : @(maxFileSize)}]; + if (webpData) { + NSCAssert(webpData.length <= maxFileSize, @"WebP Encoding with max file size limit works"); + NSLog(@"%@", @"WebP encoding success"); + } + }); + }]; + [self.imageView2 sd_setImageWithURL:animatedWebPURL placeholderImage:nil options:SDWebImageProgressiveLoad completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) { + if (image) { + NSLog(@"%@", @"Animated WebP load success"); + } + }]; } +- (void)viewWillLayout { + [super viewWillLayout]; + self.imageView1.frame = CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height / 2); + self.imageView2.frame = CGRectMake(0, self.view.bounds.size.height / 2, self.view.bounds.size.width, self.view.bounds.size.height / 2); +} - (void)setRepresentedObject:(id)representedObject { [super setRepresentedObject:representedObject]; diff --git a/Example/SDWebImageWebPCoderExample-macOS/examples/pexels-egor-kamelev-920163/after.webp b/Example/SDWebImageWebPCoderExample-macOS/examples/pexels-egor-kamelev-920163/after.webp deleted file mode 100644 index 0b333f3e8a39ce1d5cc399b4947158a02412ceba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32690 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 diff --git a/Example/SDWebImageWebPCoderExample.xcodeproj/project.pbxproj b/Example/SDWebImageWebPCoderExample.xcodeproj/project.pbxproj index 1dc8cdc..b0f8eb1 100644 --- a/Example/SDWebImageWebPCoderExample.xcodeproj/project.pbxproj +++ b/Example/SDWebImageWebPCoderExample.xcodeproj/project.pbxproj @@ -35,6 +35,7 @@ 329D55C52AFB8A1B008B4DA3 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 329D55C72AFB8A1B008B4DA3 /* SDWebImageWebPCoderExample_macOS.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = SDWebImageWebPCoderExample_macOS.entitlements; sourceTree = ""; }; 329D55E02AFB8C39008B4DA3 /* examples */ = {isa = PBXFileReference; lastKnownFileType = folder; path = examples; sourceTree = ""; }; + 329D55E22AFB916E008B4DA3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; 4038A28BEB6E86807E9286D7 /* Pods_SDWebImageWebPCoderExample_macOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SDWebImageWebPCoderExample_macOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 803D79CE213597CB00C815FC /* SDWebImageWebPCoderExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SDWebImageWebPCoderExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; 803D79D1213597CB00C815FC /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; @@ -75,6 +76,7 @@ 329D55B92AFB8A1A008B4DA3 /* SDWebImageWebPCoderExample-macOS */ = { isa = PBXGroup; children = ( + 329D55E22AFB916E008B4DA3 /* Info.plist */, 329D55E02AFB8C39008B4DA3 /* examples */, 329D55BA2AFB8A1A008B4DA3 /* AppDelegate.h */, 329D55BB2AFB8A1A008B4DA3 /* AppDelegate.m */, @@ -386,6 +388,7 @@ COMBINE_HIDPI_IMAGES = YES; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = "SDWebImageWebPCoderExample-macOS/Info.plist"; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2023 SDWebImage. All rights reserved."; INFOPLIST_KEY_NSMainStoryboardFile = Main; INFOPLIST_KEY_NSPrincipalClass = NSApplication; @@ -418,6 +421,7 @@ COMBINE_HIDPI_IMAGES = YES; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = "SDWebImageWebPCoderExample-macOS/Info.plist"; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2023 SDWebImage. All rights reserved."; INFOPLIST_KEY_NSMainStoryboardFile = Main; INFOPLIST_KEY_NSPrincipalClass = NSApplication; diff --git a/Example/SDWebImageWebPCoderExample.xcodeproj/xcshareddata/xcschemes/SDWebImageWebPCoderExample-macOS.xcscheme b/Example/SDWebImageWebPCoderExample.xcodeproj/xcshareddata/xcschemes/SDWebImageWebPCoderExample-macOS.xcscheme new file mode 100644 index 0000000..1684255 --- /dev/null +++ b/Example/SDWebImageWebPCoderExample.xcodeproj/xcshareddata/xcschemes/SDWebImageWebPCoderExample-macOS.xcscheme @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Podfile b/Podfile index e0cf719..2e1e4fe 100644 --- a/Podfile +++ b/Podfile @@ -22,3 +22,10 @@ target 'SDWebImageWebPCoderTests' do pod 'Expecta' pod 'SDWebImageWebPCoder', :path => './' end + +target 'SDWebImageWebPCoderTests-macOS' do + platform :osx, '11.0' + project test_project_path + pod 'Expecta' + pod 'SDWebImageWebPCoder', :path => './' +end diff --git a/SDWebImageWebPCoder.xcworkspace/contents.xcworkspacedata b/SDWebImageWebPCoder.xcworkspace/contents.xcworkspacedata index 8421577..7f75143 100644 --- a/SDWebImageWebPCoder.xcworkspace/contents.xcworkspacedata +++ b/SDWebImageWebPCoder.xcworkspace/contents.xcworkspacedata @@ -7,9 +7,6 @@ - - diff --git a/Example/SDWebImageWebPCoderExample-macOS/examples/pexels-egor-kamelev-920163/before.jpeg b/Tests/Images/TestColorspaceBefore.jpeg similarity index 100% rename from Example/SDWebImageWebPCoderExample-macOS/examples/pexels-egor-kamelev-920163/before.jpeg rename to Tests/Images/TestColorspaceBefore.jpeg diff --git a/Tests/SDWebImageWebPCoderTests.m b/Tests/SDWebImageWebPCoderTests.m index 2dc5a9d..11a6080 100644 --- a/Tests/SDWebImageWebPCoderTests.m +++ b/Tests/SDWebImageWebPCoderTests.m @@ -338,6 +338,26 @@ const int64_t kAsyncTestTimeout = 5; expect(255 * b1).notTo.equal(255 * b2); } +- (void)testWebPEncodingWithICCProfile { + // Test transcoding + NSString *jpegPath = [[NSBundle bundleForClass:[self class]] pathForResource:@"TestColorspaceBefore" ofType:@"jpeg"]; + NSData *jpegData = [NSData dataWithContentsOfFile:jpegPath]; + UIImage *jpegImage = [[UIImage alloc] initWithData:jpegData]; + + NSData *webpData = [[SDImageWebPCoder sharedCoder] encodedDataWithImage:jpegImage format:SDImageFormatWebP options:nil]; + // Re-decode to pick color + UIImage *webpImage = [[SDImageWebPCoder sharedCoder] decodedImageWithData:webpData options:nil]; + CGPoint point1 = CGPointMake(310, 70); + UIColor *color1 = [webpImage sd_colorAtPoint:point1]; + CGFloat r1; + CGFloat g1; + CGFloat b1; + [color1 getRed:&r1 green:&g1 blue:&b1 alpha:nil]; + expect(255 * r1).beCloseToWithin(0, 5); + expect(255 * g1).beCloseToWithin(38, 5); + expect(255 * b1).beCloseToWithin(135, 5); +} + @end @implementation SDWebImageWebPCoderTests (Helpers) diff --git a/Tests/SDWebImageWebPCoderTests.xcodeproj/project.pbxproj b/Tests/SDWebImageWebPCoderTests.xcodeproj/project.pbxproj index 504faab..2489786 100644 --- a/Tests/SDWebImageWebPCoderTests.xcodeproj/project.pbxproj +++ b/Tests/SDWebImageWebPCoderTests.xcodeproj/project.pbxproj @@ -11,6 +11,15 @@ 3219F3B2228B0453003822A6 /* TestImageBlendAnimated.webp in Resources */ = {isa = PBXBuildFile; fileRef = 3219F3B1228B0453003822A6 /* TestImageBlendAnimated.webp */; }; 325E268E25C82BE1000B807B /* TestImageGrayscale.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 325E268D25C82BE1000B807B /* TestImageGrayscale.jpg */; }; 326420312A5D53E300EE3E46 /* TestColorspaceStatic.webp in Resources */ = {isa = PBXBuildFile; fileRef = 326420302A5D53E300EE3E46 /* TestColorspaceStatic.webp */; }; + 32B4C78B2AFB954C003A4BC7 /* TestImageGrayscale.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 325E268D25C82BE1000B807B /* TestImageGrayscale.jpg */; }; + 32B4C78C2AFB954C003A4BC7 /* TestColorspaceStatic.webp in Resources */ = {isa = PBXBuildFile; fileRef = 326420302A5D53E300EE3E46 /* TestColorspaceStatic.webp */; }; + 32B4C78D2AFB954C003A4BC7 /* TestImageBlendAnimated.webp in Resources */ = {isa = PBXBuildFile; fileRef = 3219F3B1228B0453003822A6 /* TestImageBlendAnimated.webp */; }; + 32B4C78E2AFB954C003A4BC7 /* TestImageAnimated.webp in Resources */ = {isa = PBXBuildFile; fileRef = 808C919B213FD2B2004B0F7C /* TestImageAnimated.webp */; }; + 32B4C78F2AFB954C003A4BC7 /* TestImageStatic.webp in Resources */ = {isa = PBXBuildFile; fileRef = 808C919A213FD2B2004B0F7C /* TestImageStatic.webp */; }; + 32B4C7902AFB954E003A4BC7 /* SDWebImageWebPCoderTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 808C918D213FD131004B0F7C /* SDWebImageWebPCoderTests.m */; }; + 32B4C7922AFB959E003A4BC7 /* TestColorspaceBefore.jpeg in Resources */ = {isa = PBXBuildFile; fileRef = 32B4C7912AFB959E003A4BC7 /* TestColorspaceBefore.jpeg */; }; + 32B4C7932AFB959E003A4BC7 /* TestColorspaceBefore.jpeg in Resources */ = {isa = PBXBuildFile; fileRef = 32B4C7912AFB959E003A4BC7 /* TestColorspaceBefore.jpeg */; }; + 3DCFBEFFFAB96D2ACC81D9E4 /* Pods_SDWebImageWebPCoderTests_macOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 629C9E800FD4422F8978409C /* Pods_SDWebImageWebPCoderTests_macOS.framework */; }; 808C918E213FD131004B0F7C /* SDWebImageWebPCoderTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 808C918D213FD131004B0F7C /* SDWebImageWebPCoderTests.m */; }; 808C919C213FD2B2004B0F7C /* TestImageStatic.webp in Resources */ = {isa = PBXBuildFile; fileRef = 808C919A213FD2B2004B0F7C /* TestImageStatic.webp */; }; 808C919D213FD2B2004B0F7C /* TestImageAnimated.webp in Resources */ = {isa = PBXBuildFile; fileRef = 808C919B213FD2B2004B0F7C /* TestImageAnimated.webp */; }; @@ -21,16 +30,29 @@ 3219F3B1228B0453003822A6 /* TestImageBlendAnimated.webp */ = {isa = PBXFileReference; lastKnownFileType = file; path = TestImageBlendAnimated.webp; sourceTree = ""; }; 325E268D25C82BE1000B807B /* TestImageGrayscale.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = TestImageGrayscale.jpg; sourceTree = ""; }; 326420302A5D53E300EE3E46 /* TestColorspaceStatic.webp */ = {isa = PBXFileReference; lastKnownFileType = file; path = TestColorspaceStatic.webp; sourceTree = ""; }; + 32B4C7842AFB9544003A4BC7 /* SDWebImageWebPCoderTests-macOS.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "SDWebImageWebPCoderTests-macOS.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; + 32B4C7912AFB959E003A4BC7 /* TestColorspaceBefore.jpeg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = TestColorspaceBefore.jpeg; sourceTree = ""; }; 46F21AD7D1692EBAC4D0FF33 /* Pods_SDWebImageWebPCoderTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SDWebImageWebPCoderTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 629C9E800FD4422F8978409C /* Pods_SDWebImageWebPCoderTests_macOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SDWebImageWebPCoderTests_macOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 629CDA5B28E4CDE69D5A5051 /* Pods-SDWebImageWebPCoderTests-macOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SDWebImageWebPCoderTests-macOS.release.xcconfig"; path = "../Pods/Target Support Files/Pods-SDWebImageWebPCoderTests-macOS/Pods-SDWebImageWebPCoderTests-macOS.release.xcconfig"; sourceTree = ""; }; 808C918B213FD130004B0F7C /* SDWebImageWebPCoderTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SDWebImageWebPCoderTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 808C918D213FD131004B0F7C /* SDWebImageWebPCoderTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDWebImageWebPCoderTests.m; sourceTree = ""; }; 808C918F213FD131004B0F7C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 808C919A213FD2B2004B0F7C /* TestImageStatic.webp */ = {isa = PBXFileReference; lastKnownFileType = file; path = TestImageStatic.webp; sourceTree = ""; }; 808C919B213FD2B2004B0F7C /* TestImageAnimated.webp */ = {isa = PBXFileReference; lastKnownFileType = file; path = TestImageAnimated.webp; sourceTree = ""; }; D92E6791BF088D1A101E670E /* Pods-SDWebImageWebPCoderTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SDWebImageWebPCoderTests.release.xcconfig"; path = "../Pods/Target Support Files/Pods-SDWebImageWebPCoderTests/Pods-SDWebImageWebPCoderTests.release.xcconfig"; sourceTree = ""; }; + F121CFAEBEFA209D335C5C6D /* Pods-SDWebImageWebPCoderTests-macOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SDWebImageWebPCoderTests-macOS.debug.xcconfig"; path = "../Pods/Target Support Files/Pods-SDWebImageWebPCoderTests-macOS/Pods-SDWebImageWebPCoderTests-macOS.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + 32B4C7812AFB9544003A4BC7 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 3DCFBEFFFAB96D2ACC81D9E4 /* Pods_SDWebImageWebPCoderTests_macOS.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 808C9188213FD130004B0F7C /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -47,6 +69,8 @@ children = ( 28D8AA3D3015E075692FD3E3 /* Pods-SDWebImageWebPCoderTests.debug.xcconfig */, D92E6791BF088D1A101E670E /* Pods-SDWebImageWebPCoderTests.release.xcconfig */, + F121CFAEBEFA209D335C5C6D /* Pods-SDWebImageWebPCoderTests-macOS.debug.xcconfig */, + 629CDA5B28E4CDE69D5A5051 /* Pods-SDWebImageWebPCoderTests-macOS.release.xcconfig */, ); name = Pods; sourceTree = ""; @@ -65,6 +89,7 @@ isa = PBXGroup; children = ( 808C918B213FD130004B0F7C /* SDWebImageWebPCoderTests.xctest */, + 32B4C7842AFB9544003A4BC7 /* SDWebImageWebPCoderTests-macOS.xctest */, ); name = Products; sourceTree = ""; @@ -82,6 +107,7 @@ 808C9199213FD2B2004B0F7C /* Images */ = { isa = PBXGroup; children = ( + 32B4C7912AFB959E003A4BC7 /* TestColorspaceBefore.jpeg */, 326420302A5D53E300EE3E46 /* TestColorspaceStatic.webp */, 325E268D25C82BE1000B807B /* TestImageGrayscale.jpg */, 808C919A213FD2B2004B0F7C /* TestImageStatic.webp */, @@ -95,6 +121,7 @@ isa = PBXGroup; children = ( 46F21AD7D1692EBAC4D0FF33 /* Pods_SDWebImageWebPCoderTests.framework */, + 629C9E800FD4422F8978409C /* Pods_SDWebImageWebPCoderTests_macOS.framework */, ); name = Frameworks; sourceTree = ""; @@ -102,6 +129,25 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ + 32B4C7832AFB9544003A4BC7 /* SDWebImageWebPCoderTests-macOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = 32B4C78A2AFB9544003A4BC7 /* Build configuration list for PBXNativeTarget "SDWebImageWebPCoderTests-macOS" */; + buildPhases = ( + 09FBAA666475C3CD1B2B08E4 /* [CP] Check Pods Manifest.lock */, + 32B4C7802AFB9544003A4BC7 /* Sources */, + 32B4C7812AFB9544003A4BC7 /* Frameworks */, + 32B4C7822AFB9544003A4BC7 /* Resources */, + F262B3BCDAE3514B4F1ED3D7 /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "SDWebImageWebPCoderTests-macOS"; + productName = "SDWebImageWebPCoderTests-macOS"; + productReference = 32B4C7842AFB9544003A4BC7 /* SDWebImageWebPCoderTests-macOS.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; 808C918A213FD130004B0F7C /* SDWebImageWebPCoderTests */ = { isa = PBXNativeTarget; buildConfigurationList = 808C9195213FD131004B0F7C /* Build configuration list for PBXNativeTarget "SDWebImageWebPCoderTests" */; @@ -130,6 +176,9 @@ LastUpgradeCheck = 0940; ORGANIZATIONNAME = SDWebImage; TargetAttributes = { + 32B4C7832AFB9544003A4BC7 = { + CreatedOnToolsVersion = 14.1; + }; 808C918A213FD130004B0F7C = { CreatedOnToolsVersion = 9.4.1; }; @@ -148,11 +197,25 @@ projectRoot = ""; targets = ( 808C918A213FD130004B0F7C /* SDWebImageWebPCoderTests */, + 32B4C7832AFB9544003A4BC7 /* SDWebImageWebPCoderTests-macOS */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ + 32B4C7822AFB9544003A4BC7 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 32B4C78E2AFB954C003A4BC7 /* TestImageAnimated.webp in Resources */, + 32B4C78C2AFB954C003A4BC7 /* TestColorspaceStatic.webp in Resources */, + 32B4C78D2AFB954C003A4BC7 /* TestImageBlendAnimated.webp in Resources */, + 32B4C7932AFB959E003A4BC7 /* TestColorspaceBefore.jpeg in Resources */, + 32B4C78B2AFB954C003A4BC7 /* TestImageGrayscale.jpg in Resources */, + 32B4C78F2AFB954C003A4BC7 /* TestImageStatic.webp in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 808C9189213FD130004B0F7C /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -160,6 +223,7 @@ 3219F3B2228B0453003822A6 /* TestImageBlendAnimated.webp in Resources */, 808C919D213FD2B2004B0F7C /* TestImageAnimated.webp in Resources */, 808C919C213FD2B2004B0F7C /* TestImageStatic.webp in Resources */, + 32B4C7922AFB959E003A4BC7 /* TestColorspaceBefore.jpeg in Resources */, 326420312A5D53E300EE3E46 /* TestColorspaceStatic.webp in Resources */, 325E268E25C82BE1000B807B /* TestImageGrayscale.jpg in Resources */, ); @@ -168,6 +232,28 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 09FBAA666475C3CD1B2B08E4 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-SDWebImageWebPCoderTests-macOS-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; 16EA90D31CB9146CCF2C1C4E /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -203,9 +289,34 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; + F262B3BCDAE3514B4F1ED3D7 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-SDWebImageWebPCoderTests-macOS/Pods-SDWebImageWebPCoderTests-macOS-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-SDWebImageWebPCoderTests-macOS/Pods-SDWebImageWebPCoderTests-macOS-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-SDWebImageWebPCoderTests-macOS/Pods-SDWebImageWebPCoderTests-macOS-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + 32B4C7802AFB9544003A4BC7 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 32B4C7902AFB954E003A4BC7 /* SDWebImageWebPCoderTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 808C9187213FD130004B0F7C /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -217,6 +328,47 @@ /* End PBXSourcesBuildPhase section */ /* Begin XCBuildConfiguration section */ + 32B4C7882AFB9544003A4BC7 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = F121CFAEBEFA209D335C5C6D /* Pods-SDWebImageWebPCoderTests-macOS.debug.xcconfig */; + buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = Info.plist; + MACOSX_DEPLOYMENT_TARGET = 13.0; + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.SDWebImageWebPCoderTests-macOS"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + SWIFT_EMIT_LOC_STRINGS = NO; + }; + name = Debug; + }; + 32B4C7892AFB9544003A4BC7 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 629CDA5B28E4CDE69D5A5051 /* Pods-SDWebImageWebPCoderTests-macOS.release.xcconfig */; + buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = Info.plist; + MACOSX_DEPLOYMENT_TARGET = 13.0; + MARKETING_VERSION = 1.0; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.SDWebImageWebPCoderTests-macOS"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + SWIFT_EMIT_LOC_STRINGS = NO; + }; + name = Release; + }; 806E77A32136A1C000A316D2 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -401,6 +553,15 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + 32B4C78A2AFB9544003A4BC7 /* Build configuration list for PBXNativeTarget "SDWebImageWebPCoderTests-macOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 32B4C7882AFB9544003A4BC7 /* Debug */, + 32B4C7892AFB9544003A4BC7 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 806E77972136A1C000A316D2 /* Build configuration list for PBXProject "SDWebImageWebPCoderTests" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/Tests/SDWebImageWebPCoderTests.xcodeproj/xcshareddata/xcschemes/SDWebImageWebPCoderTests-macOS.xcscheme b/Tests/SDWebImageWebPCoderTests.xcodeproj/xcshareddata/xcschemes/SDWebImageWebPCoderTests-macOS.xcscheme new file mode 100644 index 0000000..cfbad4c --- /dev/null +++ b/Tests/SDWebImageWebPCoderTests.xcodeproj/xcshareddata/xcschemes/SDWebImageWebPCoderTests-macOS.xcscheme @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +