Bgerstle has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/187828

Change subject: add unit testing target
......................................................................

add unit testing target

- adds test for NSArray+Predicate to (partially) test pods integration
  into test target
- remove unnecessary MediaWikiKit.m
- rename scheme from Wikipedia-iOS to Wikipedia

Change-Id: Ibe635c95d1a0cc37dd09ac17b5fa50ac643b75ab
---
M MediaWikiKit/MediaWikiKit.xcodeproj/project.pbxproj
M MediaWikiKit/MediaWikiKit/MediaWikiKit.h
D MediaWikiKit/MediaWikiKit/MediaWikiKit.m
M Podfile
M Podfile.lock
M Wikipedia.xcodeproj/project.pbxproj
R Wikipedia.xcodeproj/xcshareddata/xcschemes/Wikipedia.xcscheme
A WikipediaUnitTests/Info.plist
A WikipediaUnitTests/Utilities/NSArray+PredicateTests.m
M wikipedia/Categories/NSArray+Predicate.m
10 files changed, 273 insertions(+), 82 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/apps/ios/wikipedia 
refs/changes/28/187828/1

diff --git a/MediaWikiKit/MediaWikiKit.xcodeproj/project.pbxproj 
b/MediaWikiKit/MediaWikiKit.xcodeproj/project.pbxproj
index 249fa67..5d22f52 100644
--- a/MediaWikiKit/MediaWikiKit.xcodeproj/project.pbxproj
+++ b/MediaWikiKit/MediaWikiKit.xcodeproj/project.pbxproj
@@ -21,7 +21,6 @@
                D47F56281A1A89B4004D9856 /* MWKHistoryList.m in Sources */ = 
{isa = PBXBuildFile; fileRef = D47F56271A1A89B4004D9856 /* MWKHistoryList.m */; 
};
                D47F56291A1A89B4004D9856 /* MWKHistoryList.m in Sources */ = 
{isa = PBXBuildFile; fileRef = D47F56271A1A89B4004D9856 /* MWKHistoryList.m */; 
};
                D48405A619E473E6006F4139 /* MediaWikiKit.h in CopyFiles */ = 
{isa = PBXBuildFile; fileRef = D48405A519E473E6006F4139 /* MediaWikiKit.h */; };
-               D48405A819E473E6006F4139 /* MediaWikiKit.m in Sources */ = {isa 
= PBXBuildFile; fileRef = D48405A719E473E6006F4139 /* MediaWikiKit.m */; };
                D48405BF19E47526006F4139 /* MWKSection.m in Sources */ = {isa = 
PBXBuildFile; fileRef = D48405BE19E47526006F4139 /* MWKSection.m */; };
                D48405C019E47526006F4139 /* MWKSection.m in Sources */ = {isa = 
PBXBuildFile; fileRef = D48405BE19E47526006F4139 /* MWKSection.m */; };
                D48405C319E47535006F4139 /* MWKArticle.m in Sources */ = {isa = 
PBXBuildFile; fileRef = D48405C219E47535006F4139 /* MWKArticle.m */; };
@@ -98,7 +97,6 @@
                D47F56271A1A89B4004D9856 /* MWKHistoryList.m */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path 
= MWKHistoryList.m; sourceTree = "<group>"; };
                D48405A219E473E6006F4139 /* libMediaWikiKit.a */ = {isa = 
PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = 
libMediaWikiKit.a; sourceTree = BUILT_PRODUCTS_DIR; };
                D48405A519E473E6006F4139 /* MediaWikiKit.h */ = {isa = 
PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MediaWikiKit.h; 
sourceTree = "<group>"; };
-               D48405A719E473E6006F4139 /* MediaWikiKit.m */ = {isa = 
PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MediaWikiKit.m; 
sourceTree = "<group>"; };
                D48405AD19E473E7006F4139 /* MediaWikiKitTests.xctest */ = {isa 
= PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; 
path = MediaWikiKitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
                D48405B019E473E7006F4139 /* Info.plist */ = {isa = 
PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; 
sourceTree = "<group>"; };
                D48405BD19E47526006F4139 /* MWKSection.h */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = 
MWKSection.h; sourceTree = "<group>"; };
@@ -190,7 +188,6 @@
                        isa = PBXGroup;
                        children = (
                                D48405A519E473E6006F4139 /* MediaWikiKit.h */,
-                               D48405A719E473E6006F4139 /* MediaWikiKit.m */,
                                D4C3FA5719E478C200EB08CC /* Metadata classes */,
                                D4C3FA5619E478AA00EB08CC /* Data classes */,
                                D4C3FA5819E478CC00EB08CC /* Data i/o */,
@@ -409,7 +406,6 @@
                                D44EA78D1A1BCD2600631A1D /* 
MWKRecentSearchList.m in Sources */,
                                D44EA7851A1BCC0300631A1D /* MWKUserDataStore.m 
in Sources */,
                                D48405C319E47535006F4139 /* MWKArticle.m in 
Sources */,
-                               D48405A819E473E6006F4139 /* MediaWikiKit.m in 
Sources */,
                                D494A6FE19F6C7C30098AA18 /* 
MWKProtectionStatus.m in Sources */,
                                D494A70E19F6E8F20098AA18 /* MWKDataStore.m in 
Sources */,
                                D47F56281A1A89B4004D9856 /* MWKHistoryList.m in 
Sources */,
diff --git a/MediaWikiKit/MediaWikiKit/MediaWikiKit.h 
b/MediaWikiKit/MediaWikiKit/MediaWikiKit.h
index cadd7f4..ca5817b 100644
--- a/MediaWikiKit/MediaWikiKit/MediaWikiKit.h
+++ b/MediaWikiKit/MediaWikiKit/MediaWikiKit.h
@@ -39,7 +39,3 @@
 #import "MWKImageList.h"
 
 #import "MWKUserDataStore.h"
-
-@interface MediaWikiKit : NSObject
-
-@end
diff --git a/MediaWikiKit/MediaWikiKit/MediaWikiKit.m 
b/MediaWikiKit/MediaWikiKit/MediaWikiKit.m
deleted file mode 100644
index 51d4223..0000000
--- a/MediaWikiKit/MediaWikiKit/MediaWikiKit.m
+++ /dev/null
@@ -1,13 +0,0 @@
-//
-//  MediaWikiKit.m
-//  MediaWikiKit
-//
-//  Created by Brion on 10/7/14.
-//  Copyright (c) 2014 Wikimedia Foundation. All rights reserved.
-//
-
-#import "MediaWikiKit.h"
-
-@implementation MediaWikiKit
-
-@end
diff --git a/Podfile b/Podfile
index 5f046a6..fd18f8a 100644
--- a/Podfile
+++ b/Podfile
@@ -1,4 +1,10 @@
 source 'https://github.com/CocoaPods/Specs.git'
 platform :ios, :deployment_target => '6.0'
+
 pod 'AFNetworking', '< 2.6'
-pod 'hpple', '< 0.3'
\ No newline at end of file
+pod 'hpple', '< 0.3'
+
+target 'WikipediaUnitTests', :exclusive => false do
+  pod 'OCMockito', '< 1.5'
+  pod 'OCHamcrest', '< 4.2'
+end
diff --git a/Podfile.lock b/Podfile.lock
index 8ff46c9..a667c0b 100644
--- a/Podfile.lock
+++ b/Podfile.lock
@@ -21,13 +21,20 @@
     - AFNetworking/NSURLConnection
     - AFNetworking/NSURLSession
   - hpple (0.2.0)
+  - OCHamcrest (4.1.1)
+  - OCMockito (1.4.0):
+    - OCHamcrest (~> 4.0)
 
 DEPENDENCIES:
   - AFNetworking (< 2.6)
   - hpple (< 0.3)
+  - OCHamcrest (< 4.2)
+  - OCMockito (< 1.5)
 
 SPEC CHECKSUMS:
   AFNetworking: 0f54cb5d16ce38c1b76948faffb8d5fb705021c7
   hpple: f4eb7c21a8db83ec264e5d614ec7509e10e5adec
+  OCHamcrest: af1c7c5ea345de69ea6c9c2958f65f3044e5c420
+  OCMockito: 991936bb775cc4c27f063d38f5e17b9161fbd21c
 
 COCOAPODS: 0.35.0
diff --git a/Wikipedia.xcodeproj/project.pbxproj 
b/Wikipedia.xcodeproj/project.pbxproj
index dde3063..7e554fd 100644
--- a/Wikipedia.xcodeproj/project.pbxproj
+++ b/Wikipedia.xcodeproj/project.pbxproj
@@ -178,7 +178,10 @@
                04F27B7618FE0F2E00EDD838 /* PageHistoryResultPrototypeView.xib 
in Resources */ = {isa = PBXBuildFile; fileRef = 04F27B7018FE0F2E00EDD838 /* 
PageHistoryResultPrototypeView.xib */; };
                04F27B7818FE0F2E00EDD838 /* PageHistoryViewController.m in 
Sources */ = {isa = PBXBuildFile; fileRef = 04F27B7418FE0F2E00EDD838 /* 
PageHistoryViewController.m */; };
                04F39590186CF80100B0D6FC /* TOCViewController.m in Sources */ = 
{isa = PBXBuildFile; fileRef = 04F3958F186CF80100B0D6FC /* TOCViewController.m 
*/; };
+               41D22A1AE1138DFBCA72FDD4 /* libPods-WikipediaUnitTests.a in 
Frameworks */ = {isa = PBXBuildFile; fileRef = 8CE61C6963F825760822A28A /* 
libPods-WikipediaUnitTests.a */; };
                701FF5EE601DEA3FCAB7EFD3 /* libPods.a in Frameworks */ = {isa = 
PBXBuildFile; fileRef = D82982ED992F47428037BDF2 /* libPods.a */; };
+               BC8309C91A7C370B003FC5C7 /* NSArray+PredicateTests.m in Sources 
*/ = {isa = PBXBuildFile; fileRef = BC8309C81A7C370B003FC5C7 /* 
NSArray+PredicateTests.m */; };
+               BC8309CA1A7C3BBD003FC5C7 /* NSArray+Predicate.m in Sources */ = 
{isa = PBXBuildFile; fileRef = 04CBAC7219A9B786009F3D7E /* NSArray+Predicate.m 
*/; };
                C9180EC418AED30C006C1DCA /* WikipediaAppUtils.m in Sources */ = 
{isa = PBXBuildFile; fileRef = C9180EC318AED30C006C1DCA /* WikipediaAppUtils.m 
*/; };
                D407E6411A51DBDA00CCC8B1 /* SchemaConverter.m in Sources */ = 
{isa = PBXBuildFile; fileRef = D407E6401A51DBDA00CCC8B1 /* SchemaConverter.m 
*/; };
                D42E75EB18D11237002EA7E5 /* MWLanguageInfo.m in Sources */ = 
{isa = PBXBuildFile; fileRef = D42E75EA18D11237002EA7E5 /* MWLanguageInfo.m */; 
};
@@ -574,7 +577,12 @@
                04F3958E186CF80100B0D6FC /* TOCViewController.h */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = 
TOCViewController.h; sourceTree = "<group>"; };
                04F3958F186CF80100B0D6FC /* TOCViewController.m */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path 
= TOCViewController.m; sourceTree = "<group>"; };
                15847B39C337F6CC5C052C54 /* Pods.test.xcconfig */ = {isa = 
PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = 
Pods.test.xcconfig; path = "Pods/Target Support Files/Pods/Pods.test.xcconfig"; 
sourceTree = "<group>"; };
+               17A2F22335C5256576CEDBDD /* 
Pods-WikipediaUnitTests.release.xcconfig */ = {isa = PBXFileReference; 
includeInIndex = 1; lastKnownFileType = text.xcconfig; name = 
"Pods-WikipediaUnitTests.release.xcconfig"; path = "Pods/Target Support 
Files/Pods-WikipediaUnitTests/Pods-WikipediaUnitTests.release.xcconfig"; 
sourceTree = "<group>"; };
                357504E50DA104E39C6ACFEB /* Pods.release.xcconfig */ = {isa = 
PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = 
Pods.release.xcconfig; path = "Pods/Target Support 
Files/Pods/Pods.release.xcconfig"; sourceTree = "<group>"; };
+               8CE61C6963F825760822A28A /* libPods-WikipediaUnitTests.a */ = 
{isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; 
path = "libPods-WikipediaUnitTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
+               BC8309961A7BF935003FC5C7 /* Info.plist */ = {isa = 
PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; 
sourceTree = "<group>"; };
+               BC8309B01A7BFBE4003FC5C7 /* WikipediaUnitTests.xctest */ = {isa 
= PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; 
path = WikipediaUnitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+               BC8309C81A7C370B003FC5C7 /* NSArray+PredicateTests.m */ = {isa 
= PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; 
name = "NSArray+PredicateTests.m"; path = "Utilities/NSArray+PredicateTests.m"; 
sourceTree = "<group>"; };
                C9180EC218AED30C006C1DCA /* WikipediaAppUtils.h */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = 
WikipediaAppUtils.h; sourceTree = "<group>"; };
                C9180EC318AED30C006C1DCA /* WikipediaAppUtils.m */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path 
= WikipediaAppUtils.m; sourceTree = "<group>"; };
                D407E63F1A51DBDA00CCC8B1 /* SchemaConverter.h */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = 
SchemaConverter.h; path = wikipedia/Data/SchemaConverter.h; sourceTree = 
SOURCE_ROOT; };
@@ -805,10 +813,19 @@
                D4F277FD194235B50032BA38 /* ToCInteractionFunnel.m */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name 
= ToCInteractionFunnel.m; path = EventLogging/ToCInteractionFunnel.m; 
sourceTree = "<group>"; };
                D4F478441A48CD8500D8043C /* OldDataSchema.xcodeproj */ = {isa = 
PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = 
OldDataSchema.xcodeproj; path = OldDataSchema/OldDataSchema.xcodeproj; 
sourceTree = "<group>"; };
                D82982ED992F47428037BDF2 /* libPods.a */ = {isa = 
PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = 
libPods.a; sourceTree = BUILT_PRODUCTS_DIR; };
+               DC96DA4AAD521D734849D20F /* 
Pods-WikipediaUnitTests.debug.xcconfig */ = {isa = PBXFileReference; 
includeInIndex = 1; lastKnownFileType = text.xcconfig; name = 
"Pods-WikipediaUnitTests.debug.xcconfig"; path = "Pods/Target Support 
Files/Pods-WikipediaUnitTests/Pods-WikipediaUnitTests.debug.xcconfig"; 
sourceTree = "<group>"; };
                EDA528BC357952A7D914F8E0 /* Pods.debug.xcconfig */ = {isa = 
PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = 
Pods.debug.xcconfig; path = "Pods/Target Support 
Files/Pods/Pods.debug.xcconfig"; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
+               BC8309AD1A7BFBE4003FC5C7 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               41D22A1AE1138DFBCA72FDD4 /* 
libPods-WikipediaUnitTests.a in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
                D4991432181D51DE00E6073C /* Frameworks */ = {
                        isa = PBXFrameworksBuildPhase;
                        buildActionMask = 2147483647;
@@ -1559,6 +1576,23 @@
                        path = TableOfContents;
                        sourceTree = "<group>";
                };
+               BC8309941A7BF935003FC5C7 /* WikipediaUnitTests */ = {
+                       isa = PBXGroup;
+                       children = (
+                               BC8309951A7BF935003FC5C7 /* Supporting Files */,
+                               BC8309C81A7C370B003FC5C7 /* 
NSArray+PredicateTests.m */,
+                       );
+                       path = WikipediaUnitTests;
+                       sourceTree = "<group>";
+               };
+               BC8309951A7BF935003FC5C7 /* Supporting Files */ = {
+                       isa = PBXGroup;
+                       children = (
+                               BC8309961A7BF935003FC5C7 /* Info.plist */,
+                       );
+                       name = "Supporting Files";
+                       sourceTree = "<group>";
+               };
                C9180EC118AED30C006C1DCA /* mw-utils */ = {
                        isa = PBXGroup;
                        children = (
@@ -1583,6 +1617,7 @@
                                D499143E181D51DE00E6073C /* Wikipedia */,
                                04E9A78218F73C7200F7ECF7 /* www */,
                                D4991453181D51DE00E6073C /* Images.xcassets */,
+                               BC8309941A7BF935003FC5C7 /* WikipediaUnitTests 
*/,
                                D4991437181D51DE00E6073C /* Frameworks */,
                                D4991436181D51DE00E6073C /* Products */,
                                D4F478441A48CD8500D8043C /* 
OldDataSchema.xcodeproj */,
@@ -1596,6 +1631,7 @@
                        isa = PBXGroup;
                        children = (
                                D4991435181D51DE00E6073C /* Wikipedia.app */,
+                               BC8309B01A7BFBE4003FC5C7 /* 
WikipediaUnitTests.xctest */,
                        );
                        name = Products;
                        sourceTree = "<group>";
@@ -1613,6 +1649,7 @@
                                D499143C181D51DE00E6073C /* UIKit.framework */,
                                D499145A181D51DF00E6073C /* XCTest.framework */,
                                D82982ED992F47428037BDF2 /* libPods.a */,
+                               8CE61C6963F825760822A28A /* 
libPods-WikipediaUnitTests.a */,
                        );
                        name = Frameworks;
                        sourceTree = "<group>";
@@ -1739,6 +1776,8 @@
                                EDA528BC357952A7D914F8E0 /* Pods.debug.xcconfig 
*/,
                                15847B39C337F6CC5C052C54 /* Pods.test.xcconfig 
*/,
                                357504E50DA104E39C6ACFEB /* 
Pods.release.xcconfig */,
+                               DC96DA4AAD521D734849D20F /* 
Pods-WikipediaUnitTests.debug.xcconfig */,
+                               17A2F22335C5256576CEDBDD /* 
Pods-WikipediaUnitTests.release.xcconfig */,
                        );
                        name = Pods;
                        sourceTree = "<group>";
@@ -1746,6 +1785,25 @@
 /* End PBXGroup section */
 
 /* Begin PBXNativeTarget section */
+               BC8309AF1A7BFBE4003FC5C7 /* WikipediaUnitTests */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = BC8309B61A7BFBE4003FC5C7 /* 
Build configuration list for PBXNativeTarget "WikipediaUnitTests" */;
+                       buildPhases = (
+                               47E108C0DA61EAC98870C454 /* Check Pods 
Manifest.lock */,
+                               BC8309AC1A7BFBE4003FC5C7 /* Sources */,
+                               BC8309AD1A7BFBE4003FC5C7 /* Frameworks */,
+                               BC8309AE1A7BFBE4003FC5C7 /* Resources */,
+                               A1EA1217DE65ED73E01F98E7 /* Copy Pods Resources 
*/,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = WikipediaUnitTests;
+                       productName = WikipediaUnitTests;
+                       productReference = BC8309B01A7BFBE4003FC5C7 /* 
WikipediaUnitTests.xctest */;
+                       productType = "com.apple.product-type.bundle.unit-test";
+               };
                D4991434181D51DE00E6073C /* Wikipedia */ = {
                        isa = PBXNativeTarget;
                        buildConfigurationList = D499146A181D51DF00E6073C /* 
Build configuration list for PBXNativeTarget "Wikipedia" */;
@@ -1782,6 +1840,9 @@
                                LastUpgradeCheck = 0600;
                                ORGANIZATIONNAME = "Wikimedia Foundation";
                                TargetAttributes = {
+                                       BC8309AF1A7BFBE4003FC5C7 = {
+                                               CreatedOnToolsVersion = 6.1.1;
+                                       };
                                        D4991434181D51DE00E6073C = {
                                                DevelopmentTeam = AKK7J2GV64;
                                        };
@@ -1885,6 +1946,7 @@
                        projectRoot = "";
                        targets = (
                                D4991434181D51DE00E6073C /* Wikipedia */,
+                               BC8309AF1A7BFBE4003FC5C7 /* WikipediaUnitTests 
*/,
                        );
                };
 /* End PBXProject section */
@@ -1921,6 +1983,13 @@
 /* End PBXReferenceProxy section */
 
 /* Begin PBXResourcesBuildPhase section */
+               BC8309AE1A7BFBE4003FC5C7 /* Resources */ = {
+                       isa = PBXResourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
                D4991433181D51DE00E6073C /* Resources */ = {
                        isa = PBXResourcesBuildPhase;
                        buildActionMask = 2147483647;
@@ -2045,6 +2114,36 @@
                        shellScript = "\"${SRCROOT}/Pods/Target Support 
Files/Pods/Pods-resources.sh\"\n";
                        showEnvVarsInLog = 0;
                };
+               47E108C0DA61EAC98870C454 /* Check Pods Manifest.lock */ = {
+                       isa = PBXShellScriptBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       inputPaths = (
+                       );
+                       name = "Check Pods Manifest.lock";
+                       outputPaths = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+                       shellPath = /bin/sh;
+                       shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" 
\"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n    cat << 
EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' 
or update your CocoaPods installation.\nEOM\n    exit 1\nfi\n";
+                       showEnvVarsInLog = 0;
+               };
+               A1EA1217DE65ED73E01F98E7 /* Copy Pods Resources */ = {
+                       isa = PBXShellScriptBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       inputPaths = (
+                       );
+                       name = "Copy Pods Resources";
+                       outputPaths = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+                       shellPath = /bin/sh;
+                       shellScript = "\"${SRCROOT}/Pods/Target Support 
Files/Pods-WikipediaUnitTests/Pods-WikipediaUnitTests-resources.sh\"\n";
+                       showEnvVarsInLog = 0;
+               };
                D4C16A621970946900CD91AD /* update-storyboard-strings */ = {
                        isa = PBXShellScriptBuildPhase;
                        buildActionMask = 2147483647;
@@ -2096,6 +2195,15 @@
 /* End PBXShellScriptBuildPhase section */
 
 /* Begin PBXSourcesBuildPhase section */
+               BC8309AC1A7BFBE4003FC5C7 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               BC8309CA1A7C3BBD003FC5C7 /* NSArray+Predicate.m 
in Sources */,
+                               BC8309C91A7C370B003FC5C7 /* 
NSArray+PredicateTests.m in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
                D4991431181D51DE00E6073C /* Sources */ = {
                        isa = PBXSourcesBuildPhase;
                        buildActionMask = 2147483647;
@@ -2480,72 +2588,47 @@
 /* End PBXVariantGroup section */
 
 /* Begin XCBuildConfiguration section */
-               04C43B0F1839DAEE006C643B /* Test */ = {
+               BC8309B71A7BFBE4003FC5C7 /* Debug */ = {
                        isa = XCBuildConfiguration;
+                       baseConfigurationReference = DC96DA4AAD521D734849D20F 
/* Pods-WikipediaUnitTests.debug.xcconfig */;
                        buildSettings = {
-                               ALWAYS_SEARCH_USER_PATHS = NO;
-                               CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
-                               CLANG_CXX_LIBRARY = "libc++";
-                               CLANG_ENABLE_MODULES = YES;
-                               CLANG_ENABLE_OBJC_ARC = YES;
-                               CLANG_WARN_BOOL_CONVERSION = YES;
-                               CLANG_WARN_CONSTANT_CONVERSION = YES;
-                               CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
-                               CLANG_WARN_EMPTY_BODY = YES;
-                               CLANG_WARN_ENUM_CONVERSION = YES;
-                               CLANG_WARN_INT_CONVERSION = YES;
-                               CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
-                               CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
-                               "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone 
Developer";
-                               COPY_PHASE_STRIP = NO;
-                               GCC_C_LANGUAGE_STANDARD = gnu99;
-                               GCC_DYNAMIC_NO_PIC = NO;
-                               GCC_OPTIMIZATION_LEVEL = 0;
+                               CLANG_WARN_UNREACHABLE_CODE = YES;
+                               ENABLE_STRICT_OBJC_MSGSEND = YES;
+                               FRAMEWORK_SEARCH_PATHS = (
+                                       
"$(SDKROOT)/Developer/Library/Frameworks",
+                                       "$(inherited)",
+                               );
                                GCC_PREPROCESSOR_DEFINITIONS = (
                                        "DEBUG=1",
                                        "$(inherited)",
                                );
-                               GCC_SYMBOLS_PRIVATE_EXTERN = NO;
-                               GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
-                               GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
-                               GCC_WARN_UNDECLARED_SELECTOR = YES;
-                               GCC_WARN_UNINITIALIZED_AUTOS = YES;
-                               GCC_WARN_UNUSED_FUNCTION = YES;
-                               GCC_WARN_UNUSED_VARIABLE = YES;
-                               IPHONEOS_DEPLOYMENT_TARGET = 6.0;
-                               ONLY_ACTIVE_ARCH = YES;
-                               SDKROOT = iphoneos;
-                               TARGETED_DEVICE_FAMILY = "1,2";
+                               GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+                               INFOPLIST_FILE = WikipediaUnitTests/Info.plist;
+                               IPHONEOS_DEPLOYMENT_TARGET = 8.1;
+                               LD_RUNPATH_SEARCH_PATHS = "$(inherited) 
@executable_path/Frameworks @loader_path/Frameworks";
+                               MTL_ENABLE_DEBUG_INFO = YES;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
                        };
-                       name = Test;
+                       name = Debug;
                };
-               04C43B101839DAEE006C643B /* Test */ = {
+               BC8309B81A7BFBE4003FC5C7 /* Release */ = {
                        isa = XCBuildConfiguration;
-                       baseConfigurationReference = 15847B39C337F6CC5C052C54 
/* Pods.test.xcconfig */;
+                       baseConfigurationReference = 17A2F22335C5256576CEDBDD 
/* Pods-WikipediaUnitTests.release.xcconfig */;
                        buildSettings = {
-                               ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
-                               ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = 
LaunchImage;
-                               CODE_SIGN_IDENTITY = "iPhone Developer";
-                               "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone 
Developer";
-                               GCC_PRECOMPILE_PREFIX_HEADER = YES;
-                               GCC_PREFIX_HEADER = 
"wikipedia/Wikipedia-Prefix.pch";
-                               HEADER_SEARCH_PATHS = (
+                               CLANG_WARN_UNREACHABLE_CODE = YES;
+                               ENABLE_STRICT_OBJC_MSGSEND = YES;
+                               FRAMEWORK_SEARCH_PATHS = (
+                                       
"$(SDKROOT)/Developer/Library/Frameworks",
                                        "$(inherited)",
-                                       "$(SDKROOT)/usr/include/libxml2",
-                                       
"$(PROJECT_DIR)/cocoapods/Pods/Headers/Public/AFNetworking",
-                                       
"$(PROJECT_DIR)/cocoapods/Pods/Headers/Public/hpple",
-                                       
"$(PROJECT_DIR)/MediaWikiKit/MediaWikiKit",
-                                       "$(PROJECT_DIR)/OldDataSchema/**",
                                );
-                               INFOPLIST_FILE = 
"Wikipedia/Wikipedia-Info.plist";
-                               IPHONEOS_DEPLOYMENT_TARGET = 6.0;
-                               LIBRARY_SEARCH_PATHS = "$(inherited)";
-                               OTHER_LDFLAGS = "$(inherited)";
-                               PRODUCT_NAME = Wikipedia;
-                               PROVISIONING_PROFILE = "";
-                               WRAPPER_EXTENSION = app;
+                               GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+                               INFOPLIST_FILE = WikipediaUnitTests/Info.plist;
+                               IPHONEOS_DEPLOYMENT_TARGET = 8.1;
+                               LD_RUNPATH_SEARCH_PATHS = "$(inherited) 
@executable_path/Frameworks @loader_path/Frameworks";
+                               MTL_ENABLE_DEBUG_INFO = NO;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
                        };
-                       name = Test;
+                       name = Release;
                };
                D4991468181D51DF00E6073C /* Debug */ = {
                        isa = XCBuildConfiguration;
@@ -2683,11 +2766,19 @@
 /* End XCBuildConfiguration section */
 
 /* Begin XCConfigurationList section */
+               BC8309B61A7BFBE4003FC5C7 /* Build configuration list for 
PBXNativeTarget "WikipediaUnitTests" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               BC8309B71A7BFBE4003FC5C7 /* Debug */,
+                               BC8309B81A7BFBE4003FC5C7 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
                D4991430181D51DE00E6073C /* Build configuration list for 
PBXProject "Wikipedia" */ = {
                        isa = XCConfigurationList;
                        buildConfigurations = (
                                D4991468181D51DF00E6073C /* Debug */,
-                               04C43B0F1839DAEE006C643B /* Test */,
                                D4991469181D51DF00E6073C /* Release */,
                        );
                        defaultConfigurationIsVisible = 0;
@@ -2697,7 +2788,6 @@
                        isa = XCConfigurationList;
                        buildConfigurations = (
                                D499146B181D51DF00E6073C /* Debug */,
-                               04C43B101839DAEE006C643B /* Test */,
                                D499146C181D51DF00E6073C /* Release */,
                        );
                        defaultConfigurationIsVisible = 0;
diff --git a/Wikipedia.xcodeproj/xcshareddata/xcschemes/Wikipedia-iOS.xcscheme 
b/Wikipedia.xcodeproj/xcshareddata/xcschemes/Wikipedia.xcscheme
similarity index 70%
rename from Wikipedia.xcodeproj/xcshareddata/xcschemes/Wikipedia-iOS.xcscheme
rename to Wikipedia.xcodeproj/xcshareddata/xcschemes/Wikipedia.xcscheme
index 3bbc795..9910729 100644
--- a/Wikipedia.xcodeproj/xcshareddata/xcschemes/Wikipedia-iOS.xcscheme
+++ b/Wikipedia.xcodeproj/xcshareddata/xcschemes/Wikipedia.xcscheme
@@ -14,7 +14,7 @@
             buildForAnalyzing = "YES">
             <BuildableReference
                BuildableIdentifier = "primary"
-               BlueprintIdentifier = "A0E9D3B0EB568914B646A37B"
+               BlueprintIdentifier = "C4FBC6125AA700D0D169471B"
                BuildableName = "libPods.a"
                BlueprintName = "Pods"
                ReferencedContainer = "container:Pods/Pods.xcodeproj">
@@ -48,21 +48,59 @@
                ReferencedContainer = 
"container:OldDataSchema/OldDataSchema.xcodeproj">
             </BuildableReference>
          </BuildActionEntry>
+         <BuildActionEntry
+            buildForTesting = "YES"
+            buildForRunning = "YES"
+            buildForProfiling = "NO"
+            buildForArchiving = "NO"
+            buildForAnalyzing = "NO">
+            <BuildableReference
+               BuildableIdentifier = "primary"
+               BlueprintIdentifier = "D48405AC19E473E7006F4139"
+               BuildableName = "MediaWikiKitTests.xctest"
+               BlueprintName = "MediaWikiKitTests"
+               ReferencedContainer = 
"container:MediaWikiKit/MediaWikiKit.xcodeproj">
+            </BuildableReference>
+         </BuildActionEntry>
+         <BuildActionEntry
+            buildForTesting = "YES"
+            buildForRunning = "YES"
+            buildForProfiling = "NO"
+            buildForArchiving = "NO"
+            buildForAnalyzing = "NO">
+            <BuildableReference
+               BuildableIdentifier = "primary"
+               BlueprintIdentifier = "BC8309AF1A7BFBE4003FC5C7"
+               BuildableName = "WikipediaUnitTests.xctest"
+               BlueprintName = "WikipediaUnitTests"
+               ReferencedContainer = "container:Wikipedia.xcodeproj">
+            </BuildableReference>
+         </BuildActionEntry>
       </BuildActionEntries>
    </BuildAction>
    <TestAction
       selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
       selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
       shouldUseLaunchSchemeArgsEnv = "YES"
-      buildConfiguration = "Test">
+      buildConfiguration = "Debug">
       <Testables>
          <TestableReference
             skipped = "NO">
             <BuildableReference
                BuildableIdentifier = "primary"
-               BlueprintIdentifier = "D4991458181D51DF00E6073C"
-               BuildableName = "Wikipedia-iOSTests.xctest"
-               BlueprintName = "Wikipedia-iOSTests"
+               BlueprintIdentifier = "D48405AC19E473E7006F4139"
+               BuildableName = "MediaWikiKitTests.xctest"
+               BlueprintName = "MediaWikiKitTests"
+               ReferencedContainer = 
"container:MediaWikiKit/MediaWikiKit.xcodeproj">
+            </BuildableReference>
+         </TestableReference>
+         <TestableReference
+            skipped = "NO">
+            <BuildableReference
+               BuildableIdentifier = "primary"
+               BlueprintIdentifier = "BC8309AF1A7BFBE4003FC5C7"
+               BuildableName = "WikipediaUnitTests.xctest"
+               BlueprintName = "WikipediaUnitTests"
                ReferencedContainer = "container:Wikipedia.xcodeproj">
             </BuildableReference>
          </TestableReference>
diff --git a/WikipediaUnitTests/Info.plist b/WikipediaUnitTests/Info.plist
new file mode 100644
index 0000000..24444e6
--- /dev/null
+++ b/WikipediaUnitTests/Info.plist
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" 
"http://www.apple.com/DTDs/PropertyList-1.0.dtd";>
+<plist version="1.0">
+<dict>
+       <key>CFBundleDevelopmentRegion</key>
+       <string>en</string>
+       <key>CFBundleExecutable</key>
+       <string>$(EXECUTABLE_NAME)</string>
+       <key>CFBundleIdentifier</key>
+       <string>wikimedia.$(PRODUCT_NAME:rfc1034identifier)</string>
+       <key>CFBundleInfoDictionaryVersion</key>
+       <string>6.0</string>
+       <key>CFBundleName</key>
+       <string>$(PRODUCT_NAME)</string>
+       <key>CFBundlePackageType</key>
+       <string>BNDL</string>
+       <key>CFBundleShortVersionString</key>
+       <string>1.0</string>
+       <key>CFBundleSignature</key>
+       <string>????</string>
+       <key>CFBundleVersion</key>
+       <string>1</string>
+</dict>
+</plist>
diff --git a/WikipediaUnitTests/Utilities/NSArray+PredicateTests.m 
b/WikipediaUnitTests/Utilities/NSArray+PredicateTests.m
new file mode 100644
index 0000000..9aa43d7
--- /dev/null
+++ b/WikipediaUnitTests/Utilities/NSArray+PredicateTests.m
@@ -0,0 +1,46 @@
+//
+//  NSArray+PredicateTests.m
+//  Wikipedia
+//
+//  Created by Brian Gerstle on 1/30/15.
+//  Copyright (c) 2015 Wikimedia Foundation. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import <XCTest/XCTest.h>
+
+#define HC_SHORTHAND 1
+#import <OCHamcrest/OCHamcrest.h>
+
+#import "NSArray+Predicate.h"
+
+@interface NSArray_PredicateTests : XCTestCase
+
+@end
+
+@implementation NSArray_PredicateTests
+
+- (void)testEmptyArray
+{
+    assertThat([@[] firstMatchForPredicate:[NSPredicate 
predicateWithValue:YES]], is(nilValue()));
+    assertThat([@[] firstMatchForPredicate:[NSPredicate 
predicateWithValue:NO]], is(nilValue()));
+}
+
+- (void)testFindsCorrectObject
+{
+    NSArray *testArray = @[@"foo", @"bar", @"baz"];
+    for (id element in testArray) {
+        NSPredicate *isElement = [NSPredicate predicateWithBlock:^BOOL(id obj, 
NSDictionary *bindings) {
+            return [obj isEqual:element];
+        }];
+        assertThat([testArray firstMatchForPredicate:isElement], is(element));
+    }
+}
+
+
+- (void)testFalsePredicate
+{
+    assertThat(([@[@1, @2, @3] firstMatchForPredicate:[NSPredicate 
predicateWithValue:NO]]), is(nilValue()));
+}
+
+@end
diff --git a/wikipedia/Categories/NSArray+Predicate.m 
b/wikipedia/Categories/NSArray+Predicate.m
index 0534a73..908b821 100644
--- a/wikipedia/Categories/NSArray+Predicate.m
+++ b/wikipedia/Categories/NSArray+Predicate.m
@@ -6,6 +6,7 @@
 @implementation NSArray (Predicate)
 
 -(id)firstMatchForPredicate:(NSPredicate *)predicate {
+    // FIXME: this is likely O(n), search/sort should be O(log(n))
     __block id matchingObject = nil;
     [self enumerateObjectsUsingBlock:
         ^(id obj, NSUInteger idx, BOOL *stop) {

-- 
To view, visit https://gerrit.wikimedia.org/r/187828
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ibe635c95d1a0cc37dd09ac17b5fa50ac643b75ab
Gerrit-PatchSet: 1
Gerrit-Project: apps/ios/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Bgerstle <bgers...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to