From 26a47e48474faee257a164a936f482a1b7d8912b Mon Sep 17 00:00:00 2001 From: Joan Martin Date: Wed, 5 Nov 2014 12:31:01 -0800 Subject: [PATCH] Updating XCTest for performance measurement --- SampleProject/Motis Tests/MJPerformanceTest.m | 75 +++++++++++++ .../Performance Test/MJCompany.h | 0 .../Performance Test/MJCompany.m | 0 .../Performance Test/MJCountry.h | 0 .../Performance Test/MJCountry.m | 0 .../Performance Test/MJParser.h | 0 .../Performance Test/MJParser.m | 0 .../Performance Test/MJPerson.h | 0 .../Performance Test/MJPerson.m | 0 .../Performance Test/MJProject.h | 0 .../Performance Test/MJProject.m | 0 .../Performance Test/data_25MB.json | 0 SampleProject/Motis.xcodeproj/project.pbxproj | 94 ++++++++-------- .../xcshareddata/xcschemes/Motis.xcscheme | 5 + SampleProject/Motis/MJAppDelegate.m | 21 +--- .../Performance Test/MJPerformanceTest.h | 15 --- .../Performance Test/MJPerformanceTest.m | 105 ------------------ 17 files changed, 127 insertions(+), 188 deletions(-) create mode 100644 SampleProject/Motis Tests/MJPerformanceTest.m rename SampleProject/{Motis => Motis Tests}/Performance Test/MJCompany.h (100%) rename SampleProject/{Motis => Motis Tests}/Performance Test/MJCompany.m (100%) rename SampleProject/{Motis => Motis Tests}/Performance Test/MJCountry.h (100%) rename SampleProject/{Motis => Motis Tests}/Performance Test/MJCountry.m (100%) rename SampleProject/{Motis => Motis Tests}/Performance Test/MJParser.h (100%) rename SampleProject/{Motis => Motis Tests}/Performance Test/MJParser.m (100%) rename SampleProject/{Motis => Motis Tests}/Performance Test/MJPerson.h (100%) rename SampleProject/{Motis => Motis Tests}/Performance Test/MJPerson.m (100%) rename SampleProject/{Motis => Motis Tests}/Performance Test/MJProject.h (100%) rename SampleProject/{Motis => Motis Tests}/Performance Test/MJProject.m (100%) rename SampleProject/{Motis => Motis Tests}/Performance Test/data_25MB.json (100%) delete mode 100644 SampleProject/Motis/Performance Test/MJPerformanceTest.h delete mode 100644 SampleProject/Motis/Performance Test/MJPerformanceTest.m diff --git a/SampleProject/Motis Tests/MJPerformanceTest.m b/SampleProject/Motis Tests/MJPerformanceTest.m new file mode 100644 index 0000000..e26d451 --- /dev/null +++ b/SampleProject/Motis Tests/MJPerformanceTest.m @@ -0,0 +1,75 @@ +// +// MJPerformanceTest.m +// Motis +// +// Created by Joan Martin on 05/11/14. +// Copyright (c) 2014 Mobile Jazz. All rights reserved. +// + +#import +#import + +#import "Motis.h" +#import "MJParser.h" + +NSString *urlEncoding(NSString* string) +{ + return (__bridge NSString *)CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)string, NULL, (CFStringRef)@"!*'();:@&=+$,/?%#[]", kCFStringEncodingUTF8); +} + +NSString* uniqueString() +{ + CFUUIDRef uuidObj = CFUUIDCreate(nil); + NSString *uuidString = (__bridge_transfer NSString*)CFUUIDCreateString(nil, uuidObj); + CFRelease(uuidObj); + return uuidString; +} + +@interface MJPerformanceTest : XCTestCase + +@end + +@implementation MJPerformanceTest +{ + NSDictionary *_jsonDictionary; +} + +- (void)setUp +{ + [super setUp]; + + static NSData *data = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + NSString *file = @"data_25MB.json"; + NSString *path = [[NSBundle bundleForClass:self.class] pathForResource:[file stringByDeletingPathExtension] ofType:[file pathExtension]]; + data = [NSData dataWithContentsOfFile:path]; + }); + + NSError *error = nil; + _jsonDictionary = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&error]; +} + +- (void)tearDown +{ + _jsonDictionary = nil; + [super tearDown]; +} + +- (void)testPerformanceMotis +{ + MJCountry *country = [[MJCountry alloc] init]; + [self measureBlock:^{ + [country mts_setValuesForKeysWithDictionary:_jsonDictionary]; + }]; +} + +- (void)testPerformanceParser +{ + [self measureBlock:^{ + MJCountry *country = nil; + country = [MJParser parseCountry:_jsonDictionary]; + }]; +} + +@end diff --git a/SampleProject/Motis/Performance Test/MJCompany.h b/SampleProject/Motis Tests/Performance Test/MJCompany.h similarity index 100% rename from SampleProject/Motis/Performance Test/MJCompany.h rename to SampleProject/Motis Tests/Performance Test/MJCompany.h diff --git a/SampleProject/Motis/Performance Test/MJCompany.m b/SampleProject/Motis Tests/Performance Test/MJCompany.m similarity index 100% rename from SampleProject/Motis/Performance Test/MJCompany.m rename to SampleProject/Motis Tests/Performance Test/MJCompany.m diff --git a/SampleProject/Motis/Performance Test/MJCountry.h b/SampleProject/Motis Tests/Performance Test/MJCountry.h similarity index 100% rename from SampleProject/Motis/Performance Test/MJCountry.h rename to SampleProject/Motis Tests/Performance Test/MJCountry.h diff --git a/SampleProject/Motis/Performance Test/MJCountry.m b/SampleProject/Motis Tests/Performance Test/MJCountry.m similarity index 100% rename from SampleProject/Motis/Performance Test/MJCountry.m rename to SampleProject/Motis Tests/Performance Test/MJCountry.m diff --git a/SampleProject/Motis/Performance Test/MJParser.h b/SampleProject/Motis Tests/Performance Test/MJParser.h similarity index 100% rename from SampleProject/Motis/Performance Test/MJParser.h rename to SampleProject/Motis Tests/Performance Test/MJParser.h diff --git a/SampleProject/Motis/Performance Test/MJParser.m b/SampleProject/Motis Tests/Performance Test/MJParser.m similarity index 100% rename from SampleProject/Motis/Performance Test/MJParser.m rename to SampleProject/Motis Tests/Performance Test/MJParser.m diff --git a/SampleProject/Motis/Performance Test/MJPerson.h b/SampleProject/Motis Tests/Performance Test/MJPerson.h similarity index 100% rename from SampleProject/Motis/Performance Test/MJPerson.h rename to SampleProject/Motis Tests/Performance Test/MJPerson.h diff --git a/SampleProject/Motis/Performance Test/MJPerson.m b/SampleProject/Motis Tests/Performance Test/MJPerson.m similarity index 100% rename from SampleProject/Motis/Performance Test/MJPerson.m rename to SampleProject/Motis Tests/Performance Test/MJPerson.m diff --git a/SampleProject/Motis/Performance Test/MJProject.h b/SampleProject/Motis Tests/Performance Test/MJProject.h similarity index 100% rename from SampleProject/Motis/Performance Test/MJProject.h rename to SampleProject/Motis Tests/Performance Test/MJProject.h diff --git a/SampleProject/Motis/Performance Test/MJProject.m b/SampleProject/Motis Tests/Performance Test/MJProject.m similarity index 100% rename from SampleProject/Motis/Performance Test/MJProject.m rename to SampleProject/Motis Tests/Performance Test/MJProject.m diff --git a/SampleProject/Motis/Performance Test/data_25MB.json b/SampleProject/Motis Tests/Performance Test/data_25MB.json similarity index 100% rename from SampleProject/Motis/Performance Test/data_25MB.json rename to SampleProject/Motis Tests/Performance Test/data_25MB.json diff --git a/SampleProject/Motis.xcodeproj/project.pbxproj b/SampleProject/Motis.xcodeproj/project.pbxproj index f7c4a38..9a2bf84 100644 --- a/SampleProject/Motis.xcodeproj/project.pbxproj +++ b/SampleProject/Motis.xcodeproj/project.pbxproj @@ -15,16 +15,16 @@ D2A0544618D8A5B80050DE68 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2C3463A18959EF2005B6B5C /* UIKit.framework */; }; D2A0544C18D8A5B80050DE68 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = D2A0544A18D8A5B80050DE68 /* InfoPlist.strings */; }; D2A0544E18D8A5B80050DE68 /* MJValidationTest.m in Sources */ = {isa = PBXBuildFile; fileRef = D2A0544D18D8A5B80050DE68 /* MJValidationTest.m */; }; - D2B776D2191B959500CC9B4F /* MJCompany.m in Sources */ = {isa = PBXBuildFile; fileRef = D2B776C8191B959500CC9B4F /* MJCompany.m */; }; - D2B776D3191B959500CC9B4F /* MJCountry.m in Sources */ = {isa = PBXBuildFile; fileRef = D2B776CA191B959500CC9B4F /* MJCountry.m */; }; - D2B776D4191B959500CC9B4F /* MJParser.m in Sources */ = {isa = PBXBuildFile; fileRef = D2B776CC191B959500CC9B4F /* MJParser.m */; }; - D2B776D5191B959500CC9B4F /* MJPerson.m in Sources */ = {isa = PBXBuildFile; fileRef = D2B776CE191B959500CC9B4F /* MJPerson.m */; }; - D2B776D6191B959500CC9B4F /* MJProject.m in Sources */ = {isa = PBXBuildFile; fileRef = D2B776D0191B959500CC9B4F /* MJProject.m */; }; - D2B776D7191B959500CC9B4F /* data_25MB.json in Resources */ = {isa = PBXBuildFile; fileRef = D2B776D1191B959500CC9B4F /* data_25MB.json */; }; - D2B776DA191B95EA00CC9B4F /* MJPerformanceTest.m in Sources */ = {isa = PBXBuildFile; fileRef = D2B776D9191B95EA00CC9B4F /* MJPerformanceTest.m */; }; D2C3463718959EF2005B6B5C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2C3463618959EF2005B6B5C /* Foundation.framework */; }; D2C3463918959EF2005B6B5C /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2C3463818959EF2005B6B5C /* CoreGraphics.framework */; }; D2C3463B18959EF2005B6B5C /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2C3463A18959EF2005B6B5C /* UIKit.framework */; }; + D2C890151A0ABBD700E81A9D /* MJPerformanceTest.m in Sources */ = {isa = PBXBuildFile; fileRef = D2C890141A0ABBD700E81A9D /* MJPerformanceTest.m */; }; + D2C890221A0ABC2900E81A9D /* data_25MB.json in Resources */ = {isa = PBXBuildFile; fileRef = D2C890171A0ABC2900E81A9D /* data_25MB.json */; }; + D2C890231A0ABC2900E81A9D /* MJCompany.m in Sources */ = {isa = PBXBuildFile; fileRef = D2C890191A0ABC2900E81A9D /* MJCompany.m */; }; + D2C890241A0ABC2900E81A9D /* MJCountry.m in Sources */ = {isa = PBXBuildFile; fileRef = D2C8901B1A0ABC2900E81A9D /* MJCountry.m */; }; + D2C890251A0ABC2900E81A9D /* MJParser.m in Sources */ = {isa = PBXBuildFile; fileRef = D2C8901D1A0ABC2900E81A9D /* MJParser.m */; }; + D2C890261A0ABC2900E81A9D /* MJPerson.m in Sources */ = {isa = PBXBuildFile; fileRef = D2C8901F1A0ABC2900E81A9D /* MJPerson.m */; }; + D2C890271A0ABC2900E81A9D /* MJProject.m in Sources */ = {isa = PBXBuildFile; fileRef = D2C890211A0ABC2900E81A9D /* MJProject.m */; }; D2DD9FD3192DF28400163C50 /* MJMotisObject.m in Sources */ = {isa = PBXBuildFile; fileRef = D2DD9FCC192DF28400163C50 /* MJMotisObject.m */; }; D2DD9FD4192DF28400163C50 /* MJMotisObjectNonRestricted.m in Sources */ = {isa = PBXBuildFile; fileRef = D2DD9FCE192DF28400163C50 /* MJMotisObjectNonRestricted.m */; }; D2DD9FD5192DF28400163C50 /* MJMotisObjectWithFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = D2DD9FD0192DF28400163C50 /* MJMotisObjectWithFormatter.m */; }; @@ -62,24 +62,23 @@ D2A0544D18D8A5B80050DE68 /* MJValidationTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MJValidationTest.m; sourceTree = ""; }; D2A0544F18D8A5B80050DE68 /* Motis Tests-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Motis Tests-Prefix.pch"; sourceTree = ""; }; D2B776BF191B945400CC9B4F /* Motis copy-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Motis copy-Info.plist"; path = "/Users/martinhj/Documents/MobileJazz/repos/Motis/SampleProject/Motis copy-Info.plist"; sourceTree = ""; }; - D2B776C7191B959500CC9B4F /* MJCompany.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJCompany.h; sourceTree = ""; }; - D2B776C8191B959500CC9B4F /* MJCompany.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJCompany.m; sourceTree = ""; }; - D2B776C9191B959500CC9B4F /* MJCountry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJCountry.h; sourceTree = ""; }; - D2B776CA191B959500CC9B4F /* MJCountry.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJCountry.m; sourceTree = ""; }; - D2B776CB191B959500CC9B4F /* MJParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJParser.h; sourceTree = ""; }; - D2B776CC191B959500CC9B4F /* MJParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJParser.m; sourceTree = ""; }; - D2B776CD191B959500CC9B4F /* MJPerson.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJPerson.h; sourceTree = ""; }; - D2B776CE191B959500CC9B4F /* MJPerson.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJPerson.m; sourceTree = ""; }; - D2B776CF191B959500CC9B4F /* MJProject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJProject.h; sourceTree = ""; }; - D2B776D0191B959500CC9B4F /* MJProject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJProject.m; sourceTree = ""; }; - D2B776D1191B959500CC9B4F /* data_25MB.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = data_25MB.json; sourceTree = ""; }; - D2B776D8191B95EA00CC9B4F /* MJPerformanceTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJPerformanceTest.h; sourceTree = ""; }; - D2B776D9191B95EA00CC9B4F /* MJPerformanceTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJPerformanceTest.m; sourceTree = ""; }; D2C3463318959EF2005B6B5C /* Motis.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Motis.app; sourceTree = BUILT_PRODUCTS_DIR; }; D2C3463618959EF2005B6B5C /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; D2C3463818959EF2005B6B5C /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; D2C3463A18959EF2005B6B5C /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; D2C3464F18959EF2005B6B5C /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; + D2C890141A0ABBD700E81A9D /* MJPerformanceTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJPerformanceTest.m; sourceTree = ""; }; + D2C890171A0ABC2900E81A9D /* data_25MB.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = data_25MB.json; sourceTree = ""; }; + D2C890181A0ABC2900E81A9D /* MJCompany.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJCompany.h; sourceTree = ""; }; + D2C890191A0ABC2900E81A9D /* MJCompany.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJCompany.m; sourceTree = ""; }; + D2C8901A1A0ABC2900E81A9D /* MJCountry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJCountry.h; sourceTree = ""; }; + D2C8901B1A0ABC2900E81A9D /* MJCountry.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJCountry.m; sourceTree = ""; }; + D2C8901C1A0ABC2900E81A9D /* MJParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJParser.h; sourceTree = ""; }; + D2C8901D1A0ABC2900E81A9D /* MJParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJParser.m; sourceTree = ""; }; + D2C8901E1A0ABC2900E81A9D /* MJPerson.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJPerson.h; sourceTree = ""; }; + D2C8901F1A0ABC2900E81A9D /* MJPerson.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJPerson.m; sourceTree = ""; }; + D2C890201A0ABC2900E81A9D /* MJProject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJProject.h; sourceTree = ""; }; + D2C890211A0ABC2900E81A9D /* MJProject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJProject.m; sourceTree = ""; }; D2DD9FCB192DF28400163C50 /* MJMotisObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJMotisObject.h; sourceTree = ""; }; D2DD9FCC192DF28400163C50 /* MJMotisObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MJMotisObject.m; sourceTree = ""; }; D2DD9FCD192DF28400163C50 /* MJMotisObjectNonRestricted.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MJMotisObjectNonRestricted.h; sourceTree = ""; }; @@ -146,6 +145,8 @@ children = ( D2A0544D18D8A5B80050DE68 /* MJValidationTest.m */, D2DD9FCA192DF28400163C50 /* Validation Test */, + D2C890141A0ABBD700E81A9D /* MJPerformanceTest.m */, + D2C890161A0ABC2900E81A9D /* Performance Test */, D2E3E02F190E8D82002BD141 /* MJHierarchyTest.m */, D2E3E031190E8D88002BD141 /* Hierarchy Test */, D2A0544818D8A5B80050DE68 /* Supporting Files */, @@ -184,26 +185,6 @@ name = Example; sourceTree = ""; }; - D2B776C6191B959500CC9B4F /* Performance Test */ = { - isa = PBXGroup; - children = ( - D2B776D8191B95EA00CC9B4F /* MJPerformanceTest.h */, - D2B776D9191B95EA00CC9B4F /* MJPerformanceTest.m */, - D2B776C7191B959500CC9B4F /* MJCompany.h */, - D2B776C8191B959500CC9B4F /* MJCompany.m */, - D2B776C9191B959500CC9B4F /* MJCountry.h */, - D2B776CA191B959500CC9B4F /* MJCountry.m */, - D2B776CB191B959500CC9B4F /* MJParser.h */, - D2B776CC191B959500CC9B4F /* MJParser.m */, - D2B776CD191B959500CC9B4F /* MJPerson.h */, - D2B776CE191B959500CC9B4F /* MJPerson.m */, - D2B776CF191B959500CC9B4F /* MJProject.h */, - D2B776D0191B959500CC9B4F /* MJProject.m */, - D2B776D1191B959500CC9B4F /* data_25MB.json */, - ); - path = "Performance Test"; - sourceTree = ""; - }; D2C3462A18959EF2005B6B5C = { isa = PBXGroup; children = ( @@ -244,7 +225,6 @@ D2DF757818D746A800163BA8 /* MJAppDelegate.m */, D2B776C4191B957000CC9B4F /* Motis */, D2B776C5191B957700CC9B4F /* Example */, - D2B776C6191B959500CC9B4F /* Performance Test */, D2C3463D18959EF2005B6B5C /* Supporting Files */, ); path = Motis; @@ -261,6 +241,24 @@ name = "Supporting Files"; sourceTree = ""; }; + D2C890161A0ABC2900E81A9D /* Performance Test */ = { + isa = PBXGroup; + children = ( + D2C890171A0ABC2900E81A9D /* data_25MB.json */, + D2C890181A0ABC2900E81A9D /* MJCompany.h */, + D2C890191A0ABC2900E81A9D /* MJCompany.m */, + D2C8901A1A0ABC2900E81A9D /* MJCountry.h */, + D2C8901B1A0ABC2900E81A9D /* MJCountry.m */, + D2C8901C1A0ABC2900E81A9D /* MJParser.h */, + D2C8901D1A0ABC2900E81A9D /* MJParser.m */, + D2C8901E1A0ABC2900E81A9D /* MJPerson.h */, + D2C8901F1A0ABC2900E81A9D /* MJPerson.m */, + D2C890201A0ABC2900E81A9D /* MJProject.h */, + D2C890211A0ABC2900E81A9D /* MJProject.m */, + ); + path = "Performance Test"; + sourceTree = ""; + }; D2DD9FCA192DF28400163C50 /* Validation Test */ = { isa = PBXGroup; children = ( @@ -366,6 +364,7 @@ buildActionMask = 2147483647; files = ( D2A0544C18D8A5B80050DE68 /* InfoPlist.strings in Resources */, + D2C890221A0ABC2900E81A9D /* data_25MB.json in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -373,7 +372,6 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - D2B776D7191B959500CC9B4F /* data_25MB.json in Resources */, D2DF758118D746AF00163BA8 /* Images.xcassets in Resources */, D21D6FB218D7470D000E620B /* InfoPlist.strings in Resources */, ); @@ -387,14 +385,20 @@ buildActionMask = 2147483647; files = ( D2DD9FD5192DF28400163C50 /* MJMotisObjectWithFormatter.m in Sources */, + D2C890251A0ABC2900E81A9D /* MJParser.m in Sources */, D2A0544E18D8A5B80050DE68 /* MJValidationTest.m in Sources */, + D2C890271A0ABC2900E81A9D /* MJProject.m in Sources */, D2E3E03B190E8DCA002BD141 /* MJChildB.m in Sources */, + D2C890231A0ABC2900E81A9D /* MJCompany.m in Sources */, D2DD9FD6192DF28400163C50 /* MJTestObject.m in Sources */, + D2C890241A0ABC2900E81A9D /* MJCountry.m in Sources */, + D2C890261A0ABC2900E81A9D /* MJPerson.m in Sources */, D2E3E038190E8DBF002BD141 /* MJChildA.m in Sources */, D2DD9FD3192DF28400163C50 /* MJMotisObject.m in Sources */, D2E3E034190E8D9E002BD141 /* MJParentObject.m in Sources */, D2DD9FD4192DF28400163C50 /* MJMotisObjectNonRestricted.m in Sources */, D2E3E030190E8D82002BD141 /* MJHierarchyTest.m in Sources */, + D2C890151A0ABBD700E81A9D /* MJPerformanceTest.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -402,16 +406,10 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - D2B776D5191B959500CC9B4F /* MJPerson.m in Sources */, D2DF757E18D746A800163BA8 /* MJUser.m in Sources */, - D2B776D4191B959500CC9B4F /* MJParser.m in Sources */, D2DF757F18D746A800163BA8 /* MJVideo.m in Sources */, - D2B776D2191B959500CC9B4F /* MJCompany.m in Sources */, - D2B776D3191B959500CC9B4F /* MJCountry.m in Sources */, D2DF758518D746C200163BA8 /* main.m in Sources */, D2DF757D18D746A800163BA8 /* MJAppDelegate.m in Sources */, - D2B776D6191B959500CC9B4F /* MJProject.m in Sources */, - D2B776DA191B95EA00CC9B4F /* MJPerformanceTest.m in Sources */, D21D6FB518D74717000E620B /* NSObject+Motis.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/SampleProject/Motis.xcodeproj/xcshareddata/xcschemes/Motis.xcscheme b/SampleProject/Motis.xcodeproj/xcshareddata/xcschemes/Motis.xcscheme index 2dc410e..668f8b8 100644 --- a/SampleProject/Motis.xcodeproj/xcshareddata/xcschemes/Motis.xcscheme +++ b/SampleProject/Motis.xcodeproj/xcshareddata/xcschemes/Motis.xcscheme @@ -37,6 +37,11 @@ BlueprintName = "Motis Tests" ReferencedContainer = "container:Motis.xcodeproj"> + + + + diff --git a/SampleProject/Motis/MJAppDelegate.m b/SampleProject/Motis/MJAppDelegate.m index 3b95b9c..bbad2e7 100644 --- a/SampleProject/Motis/MJAppDelegate.m +++ b/SampleProject/Motis/MJAppDelegate.m @@ -18,22 +18,14 @@ #import "Motis.h" -#if PERFORMANCE_TEST -#import "MJPerformanceTest.h" -#else #import "MJVideo.h" #import "MJUser.h" -#endif @implementation MJAppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { -#if PERFORMANCE_TEST - [self testMotisPerformance]; -#else - [self testMotis]; // <--- UNCOMMENT FOR TESTING -#endif + //[self testMotis]; // <--- UNCOMMENT FOR TESTING UIWindow *window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; window.rootViewController = [[UIViewController alloc] init]; @@ -47,16 +39,6 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( #pragma mark Private Methods -#if PERFORMANCE_TEST - -- (void)testMotisPerformance -{ - MJPerformanceTest *test = [[MJPerformanceTest alloc] init]; - [test start]; -} - -#else - - (void)testMotis { // Defining a JSONDictionary @@ -116,6 +98,5 @@ - (void)testMotis NSLog(@"AFTER parsing: %@", video.mts_extendedObjectDescription); NSLog(@"video.privateVideoKey: %@",[video.privateVideoKey description]); } -#endif @end diff --git a/SampleProject/Motis/Performance Test/MJPerformanceTest.h b/SampleProject/Motis/Performance Test/MJPerformanceTest.h deleted file mode 100644 index 69312d5..0000000 --- a/SampleProject/Motis/Performance Test/MJPerformanceTest.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// MJPerformanceTest.h -// Motis -// -// Created by Joan Martin on 08/05/14. -// Copyright (c) 2014 Mobile Jazz. All rights reserved. -// - -#import - -@interface MJPerformanceTest : NSObject - -- (void)start; - -@end diff --git a/SampleProject/Motis/Performance Test/MJPerformanceTest.m b/SampleProject/Motis/Performance Test/MJPerformanceTest.m deleted file mode 100644 index 5acfc2a..0000000 --- a/SampleProject/Motis/Performance Test/MJPerformanceTest.m +++ /dev/null @@ -1,105 +0,0 @@ -// -// MJPerformanceTest.m -// Motis -// -// Created by Joan Martin on 08/05/14. -// Copyright (c) 2014 Mobile Jazz. All rights reserved. -// - -#import "MJPerformanceTest.h" - -#import "Motis.h" -#import "MJParser.h" - -NSString *urlEncoding(NSString* string) -{ - return (__bridge NSString *)CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)string, NULL, (CFStringRef)@"!*'();:@&=+$,/?%#[]", kCFStringEncodingUTF8); -} - -NSString* uniqueString() -{ - CFUUIDRef uuidObj = CFUUIDCreate(nil); - NSString *uuidString = (__bridge_transfer NSString*)CFUUIDCreateString(nil, uuidObj); - CFRelease(uuidObj); - return uuidString; -} - -#define MJZLog(format, ...) NSLog(@"[PERFORMANCE TEST] %@",[NSString stringWithFormat:format, ## __VA_ARGS__]) - -@implementation MJPerformanceTest -{ - NSDictionary *_jsonDictionary; -} - -- (id)init -{ - self = [super init]; - if (self) - { - - } - return self; -} - -#pragma mark Public Methods - -- (void)start -{ - [self mjz_performTestWithFile:@"data_25MB.json"]; -} - -#pragma mark Private Methods - -- (void)mjz_performTestWithFile:(NSString*)file -{ - MJZLog(@"** START"); - MJZLog(@"* File:\t\t\t%@", file); - NSString *path = [[NSBundle bundleForClass:self.class] pathForResource:[file stringByDeletingPathExtension] ofType:[file pathExtension]]; - - NSData *data = [NSData dataWithContentsOfFile:path]; - MJZLog(@"* Size:\t\t\t%.02f KB", ((float)data.length / 1024.0f)); - - __block NSDictionary *jsonDictionary = nil; - - NSTimeInterval deserializingTime = [self mjz_mesureBlock:^{ - NSError *error = nil; - jsonDictionary = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&error]; - }]; - - MJZLog(@"* JSON time:\t%f seconds", deserializingTime); - - NSTimeInterval motisTime = [self mjz_mesureBlock:^{ - [self mjz_testMotisWithDictionary:jsonDictionary]; - }]; - MJZLog(@"* Motis time:\t%f seconds", motisTime); - - NSTimeInterval parserTime = [self mjz_mesureBlock:^{ - [self mjz_testParserWithDictionary:jsonDictionary]; - }]; - MJZLog(@"* Mapper time:\t%f seconds", parserTime); - - MJZLog(@"** END"); -} - -- (void)mjz_testMotisWithDictionary:(NSDictionary*)dictionary -{ - MJCountry *country = [[MJCountry alloc] init]; - [country mts_setValuesForKeysWithDictionary:dictionary]; -} - -- (void)mjz_testParserWithDictionary:(NSDictionary*)dictionary -{ - MJCountry *country = nil; - country = [MJParser parseCountry:dictionary]; -} - -- (NSTimeInterval)mjz_mesureBlock:(void(^)())block -{ - NSTimeInterval start = [NSDate timeIntervalSinceReferenceDate]; - block(); - NSTimeInterval stop = [NSDate timeIntervalSinceReferenceDate]; - - return stop - start; -} - -@end