<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>GHKitTests-Info.plist</filename>
    </added>
    <added>
      <filename>GHKitTests_Prefix.pch</filename>
    </added>
    <added>
      <filename>Tests/TestsMain.m</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -114,7 +114,7 @@
  @method gh_subStringSegmentsWithinStart
  @param start Start token
  @param end End token
- @result Array of GHStringSegment's
+ @result Array of GHNSStringSegment's
  
  Use a regex engine if you can. 
  Note: This exists because regex.h is posix only and does not support non-greedy expressions.
@@ -132,7 +132,7 @@
 /*!
  Class used by gh_substringSegmentsWithinStart:end:
  */
-@interface GHStringSegment : NSObject {
+@interface GHNSStringSegment : NSObject {
 	NSString *string_;
 	BOOL isMatch_;
 }
@@ -143,6 +143,6 @@
 
 - (id)initWithString:(NSString *)string isMatch:(BOOL)isMatch;
 
-+ (GHStringSegment *)string:(NSString *)string isMatch:(BOOL)isMatch;
++ (GHNSStringSegment *)string:(NSString *)string isMatch:(BOOL)isMatch;
 
 @end</diff>
      <filename>Classes/GHNSString+Utils.h</filename>
    </modified>
    <modified>
      <diff>@@ -288,7 +288,7 @@ static NSDictionary *gh_gTruncateMiddle = nil;
 	
 	while([scanner scanUpToString:(within ? end : start) intoString:&amp;scanned]) {
 		if (scanned &amp;&amp; [scanned length] &gt; 0)
-			[segments addObject:[GHStringSegment string:scanned isMatch:within]];
+			[segments addObject:[GHNSStringSegment string:scanned isMatch:within]];
 		
 		[scanner scanString:(within ? end : start) intoString:&amp;scanned]; // Eat start or end token
 		scanned = nil;
@@ -296,13 +296,13 @@ static NSDictionary *gh_gTruncateMiddle = nil;
 	}
 	NSUInteger length = [self length] - [scanner scanLocation];
 	if (length &gt; 0)
-		[segments addObject:[GHStringSegment string:[self substringWithRange:NSMakeRange([scanner scanLocation], length)] isMatch:NO]];
+		[segments addObject:[GHNSStringSegment string:[self substringWithRange:NSMakeRange([scanner scanLocation], length)] isMatch:NO]];
 	return segments;
 }
 
 @end
 
-@implementation GHStringSegment
+@implementation GHNSStringSegment
 
 @synthesize string=string_, match=isMatch_;
 
@@ -314,7 +314,7 @@ static NSDictionary *gh_gTruncateMiddle = nil;
 	return self;	
 }
 
-+ (GHStringSegment *)string:(NSString *)string isMatch:(BOOL)isMatch {
++ (GHNSStringSegment *)string:(NSString *)string isMatch:(BOOL)isMatch {
 	return [[[self alloc] initWithString:string isMatch:isMatch] autorelease];
 }
 </diff>
      <filename>Classes/GHNSString+Utils.m</filename>
    </modified>
    <modified>
      <diff>@@ -17,40 +17,6 @@
 		0058AAEF0EF8C4D900C44386 /* GHKeychainStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 0058AAED0EF8C4D900C44386 /* GHKeychainStore.m */; };
 		005B0A9F0F22B7A80004F351 /* GHNSInvocation+Utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 005B0A9D0F22B7A80004F351 /* GHNSInvocation+Utils.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		005B0AA00F22B7A80004F351 /* GHNSInvocation+Utils.m in Sources */ = {isa = PBXBuildFile; fileRef = 005B0A9E0F22B7A80004F351 /* GHNSInvocation+Utils.m */; };
-		0062B69A0F2C08AD00B0562A /* DebugiPhone.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 0062B6760F2C08AD00B0562A /* DebugiPhone.xcconfig */; };
-		0062B69B0F2C08AD00B0562A /* DebugiPhone20.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 0062B6770F2C08AD00B0562A /* DebugiPhone20.xcconfig */; };
-		0062B69C0F2C08AD00B0562A /* DebugiPhone21.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 0062B6780F2C08AD00B0562A /* DebugiPhone21.xcconfig */; };
-		0062B69D0F2C08AD00B0562A /* DebugLeopardOrLater.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 0062B6790F2C08AD00B0562A /* DebugLeopardOrLater.xcconfig */; };
-		0062B69E0F2C08AD00B0562A /* DebugSnowLeopardOrLater.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 0062B67A0F2C08AD00B0562A /* DebugSnowLeopardOrLater.xcconfig */; };
-		0062B69F0F2C08AD00B0562A /* DebugTigerOrLater.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 0062B67B0F2C08AD00B0562A /* DebugTigerOrLater.xcconfig */; };
-		0062B6A00F2C08AD00B0562A /* ReleaseiPhone.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 0062B67C0F2C08AD00B0562A /* ReleaseiPhone.xcconfig */; };
-		0062B6A10F2C08AD00B0562A /* ReleaseiPhone20.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 0062B67D0F2C08AD00B0562A /* ReleaseiPhone20.xcconfig */; };
-		0062B6A20F2C08AD00B0562A /* ReleaseiPhone21.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 0062B67E0F2C08AD00B0562A /* ReleaseiPhone21.xcconfig */; };
-		0062B6A30F2C08AD00B0562A /* ReleaseLeopardOrLater.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 0062B67F0F2C08AD00B0562A /* ReleaseLeopardOrLater.xcconfig */; };
-		0062B6A40F2C08AD00B0562A /* ReleaseSnowLeopardOrLater.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 0062B6800F2C08AD00B0562A /* ReleaseSnowLeopardOrLater.xcconfig */; };
-		0062B6A50F2C08AD00B0562A /* ReleaseTigerOrLater.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 0062B6810F2C08AD00B0562A /* ReleaseTigerOrLater.xcconfig */; };
-		0062B6A60F2C08AD00B0562A /* CodeCoverage.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 0062B6830F2C08AD00B0562A /* CodeCoverage.xcconfig */; };
-		0062B6A70F2C08AD00B0562A /* CodeCoverageStatic.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 0062B6840F2C08AD00B0562A /* CodeCoverageStatic.xcconfig */; };
-		0062B6A80F2C08AD00B0562A /* Debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 0062B6850F2C08AD00B0562A /* Debug.xcconfig */; };
-		0062B6A90F2C08AD00B0562A /* GCSupported.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 0062B6860F2C08AD00B0562A /* GCSupported.xcconfig */; };
-		0062B6AA0F2C08AD00B0562A /* General.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 0062B6870F2C08AD00B0562A /* General.xcconfig */; };
-		0062B6AB0F2C08AD00B0562A /* GTMMerge.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 0062B6880F2C08AD00B0562A /* GTMMerge.xcconfig */; };
-		0062B6AC0F2C08AD00B0562A /* iPhone20.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 0062B6890F2C08AD00B0562A /* iPhone20.xcconfig */; };
-		0062B6AD0F2C08AD00B0562A /* iPhone21.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 0062B68A0F2C08AD00B0562A /* iPhone21.xcconfig */; };
-		0062B6AE0F2C08AD00B0562A /* LeopardOrLater.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 0062B68B0F2C08AD00B0562A /* LeopardOrLater.xcconfig */; };
-		0062B6AF0F2C08AD00B0562A /* Release.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 0062B68C0F2C08AD00B0562A /* Release.xcconfig */; };
-		0062B6B00F2C08AD00B0562A /* SnowLeopardOrLater.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 0062B68D0F2C08AD00B0562A /* SnowLeopardOrLater.xcconfig */; };
-		0062B6B10F2C08AD00B0562A /* TigerOrLater.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 0062B68E0F2C08AD00B0562A /* TigerOrLater.xcconfig */; };
-		0062B6B20F2C08AD00B0562A /* Unittest.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 0062B68F0F2C08AD00B0562A /* Unittest.xcconfig */; };
-		0062B6B30F2C08AD00B0562A /* DebugUnittest.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 0062B6910F2C08AD00B0562A /* DebugUnittest.xcconfig */; };
-		0062B6B40F2C08AD00B0562A /* LoadableBundle.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 0062B6920F2C08AD00B0562A /* LoadableBundle.xcconfig */; };
-		0062B6B50F2C08AD00B0562A /* LoadableBundleGCSupported.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 0062B6930F2C08AD00B0562A /* LoadableBundleGCSupported.xcconfig */; };
-		0062B6B60F2C08AD00B0562A /* ReleaseUnittest.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 0062B6940F2C08AD00B0562A /* ReleaseUnittest.xcconfig */; };
-		0062B6B70F2C08AD00B0562A /* SharedLibrary.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 0062B6950F2C08AD00B0562A /* SharedLibrary.xcconfig */; };
-		0062B6B80F2C08AD00B0562A /* SharedLibraryGCSupported.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 0062B6960F2C08AD00B0562A /* SharedLibraryGCSupported.xcconfig */; };
-		0062B6B90F2C08AD00B0562A /* StaticLibrary.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 0062B6970F2C08AD00B0562A /* StaticLibrary.xcconfig */; };
-		0062B6BA0F2C08AD00B0562A /* StaticLibraryGCSupported.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 0062B6980F2C08AD00B0562A /* StaticLibraryGCSupported.xcconfig */; };
-		0062B6BB0F2C08AD00B0562A /* xcconfigs-readme.txt in Resources */ = {isa = PBXBuildFile; fileRef = 0062B6990F2C08AD00B0562A /* xcconfigs-readme.txt */; };
 		007F598E0EF2438900B3005D /* GHNSArray+Utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 007F59850EF2438900B3005D /* GHNSArray+Utils.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		007F598F0EF2438900B3005D /* GHNSArray+Utils.m in Sources */ = {isa = PBXBuildFile; fileRef = 007F59860EF2438900B3005D /* GHNSArray+Utils.m */; };
 		007F59900EF2438900B3005D /* GHNSDictionary+NSNull.h in Headers */ = {isa = PBXBuildFile; fileRef = 007F59870EF2438900B3005D /* GHNSDictionary+NSNull.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -70,6 +36,16 @@
 		00A97A880F0C467600B083F6 /* GTMRegex.m in Sources */ = {isa = PBXBuildFile; fileRef = 00A97A790F0C467600B083F6 /* GTMRegex.m */; };
 		00A97A890F0C467600B083F6 /* GTMStackTrace.h in Headers */ = {isa = PBXBuildFile; fileRef = 00A97A7A0F0C467600B083F6 /* GTMStackTrace.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		00A97A8A0F0C467600B083F6 /* GTMStackTrace.m in Sources */ = {isa = PBXBuildFile; fileRef = 00A97A7B0F0C467600B083F6 /* GTMStackTrace.m */; };
+		00AF10E70F2D5277009F0ABA /* TestsMain.m in Sources */ = {isa = PBXBuildFile; fileRef = 00AF10E60F2D5277009F0ABA /* TestsMain.m */; };
+		00AF116C0F2D7D22009F0ABA /* GHUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00AF11400F2D555F009F0ABA /* GHUnit.framework */; };
+		00AF116F0F2D7D43009F0ABA /* NSURL+UtilsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 00B599E30F1D259200359A10 /* NSURL+UtilsTest.m */; };
+		00AF118C0F2D7EE2009F0ABA /* NSString+UtilsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 52857D5C0E199B530011DA5C /* NSString+UtilsTest.m */; };
+		00AF118D0F2D7EE3009F0ABA /* NSString+TimeIntervalTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 52857D5A0E199B530011DA5C /* NSString+TimeIntervalTest.m */; };
+		00AF118E0F2D7EE4009F0ABA /* NSString+HMACTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 52D57E550E1C0E8200709FB4 /* NSString+HMACTest.m */; };
+		00AF118F0F2D7EE5009F0ABA /* NSInvocation+UtilsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 005B0AAC0F22C09F0004F351 /* NSInvocation+UtilsTest.m */; };
+		00AF11900F2D7EE6009F0ABA /* NSDate+ParsingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 005D0C3F0E19C03B003FAB86 /* NSDate+ParsingTest.m */; };
+		00AF11910F2D7EE6009F0ABA /* GHLoggerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 002E759E0F2C45DD00427636 /* GHLoggerTest.m */; };
+		00AF12580F2D8389009F0ABA /* GHKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00970A140F2836A100189A9D /* GHKit.framework */; };
 		00CBE5C60E24783400E94F7B /* GTMDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 00CBE5C50E24783400E94F7B /* GTMDefines.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		00CE8AAE0F24028900DD6464 /* GHNSObject+Invocation.h in Headers */ = {isa = PBXBuildFile; fileRef = 00CE8AAB0F24028900DD6464 /* GHNSObject+Invocation.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		00CE8AAF0F24028900DD6464 /* GHNSObject+Invocation.m in Sources */ = {isa = PBXBuildFile; fileRef = 00CE8AAC0F24028900DD6464 /* GHNSObject+Invocation.m */; };
@@ -105,6 +81,16 @@
 		8DC2EF570486A6940098B216 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */; };
 /* End PBXBuildFile section */
 
+/* Begin PBXContainerItemProxy section */
+		00AF11640F2D7CD2009F0ABA /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 8DC2EF4F0486A6940098B216 /* GHKit */;
+			remoteInfo = GHKit;
+		};
+/* End PBXContainerItemProxy section */
+
 /* Begin PBXFileReference section */
 		002E757E0F2C424C00427636 /* GHLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GHLogger.h; sourceTree = &quot;&lt;group&gt;&quot;; };
 		002E757F0F2C424C00427636 /* GHLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GHLogger.m; sourceTree = &quot;&lt;group&gt;&quot;; };
@@ -174,6 +160,11 @@
 		00A97A790F0C467600B083F6 /* GTMRegex.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMRegex.m; sourceTree = &quot;&lt;group&gt;&quot;; };
 		00A97A7A0F0C467600B083F6 /* GTMStackTrace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMStackTrace.h; sourceTree = &quot;&lt;group&gt;&quot;; };
 		00A97A7B0F0C467600B083F6 /* GTMStackTrace.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMStackTrace.m; sourceTree = &quot;&lt;group&gt;&quot;; };
+		00AF10D00F2D5179009F0ABA /* GHKitTests.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = GHKitTests.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		00AF10D20F2D5179009F0ABA /* GHKitTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = &quot;GHKitTests-Info.plist&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
+		00AF10E60F2D5277009F0ABA /* TestsMain.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TestsMain.m; sourceTree = &quot;&lt;group&gt;&quot;; };
+		00AF11400F2D555F009F0ABA /* GHUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GHUnit.framework; path = Library/Frameworks/GHUnit.framework; sourceTree = SDKROOT; };
+		00AF11760F2D7DF8009F0ABA /* GHKitTests_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GHKitTests_Prefix.pch; sourceTree = &quot;&lt;group&gt;&quot;; };
 		00B599E30F1D259200359A10 /* NSURL+UtilsTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = &quot;NSURL+UtilsTest.m&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
 		00CBE5C50E24783400E94F7B /* GTMDefines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMDefines.h; sourceTree = &quot;&lt;group&gt;&quot;; };
 		00CE8AAB0F24028900DD6464 /* GHNSObject+Invocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = &quot;GHNSObject+Invocation.h&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
@@ -220,6 +211,15 @@
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
+		00AF10CE0F2D5179009F0ABA /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				00AF116C0F2D7D22009F0ABA /* GHUnit.framework in Frameworks */,
+				00AF12580F2D8389009F0ABA /* GHKit.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		8DC2EF560486A6940098B216 /* Frameworks */ = {
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
@@ -348,6 +348,7 @@
 			isa = PBXGroup;
 			children = (
 				00970A140F2836A100189A9D /* GHKit.framework */,
+				00AF10D00F2D5179009F0ABA /* GHKitTests.app */,
 			);
 			name = Products;
 			sourceTree = &quot;&lt;group&gt;&quot;;
@@ -364,6 +365,8 @@
 				034768DFFF38A50411DB9C8B /* Products */,
 				52857D700E199B940011DA5C /* Tests-Info.plist */,
 				004D508D0F21D91D00C916F1 /* TestApp-Info.plist */,
+				00AF10D20F2D5179009F0ABA /* GHKitTests-Info.plist */,
+				00AF11400F2D555F009F0ABA /* GHUnit.framework */,
 			);
 			name = GHKit;
 			sourceTree = &quot;&lt;group&gt;&quot;;
@@ -458,6 +461,7 @@
 			isa = PBXGroup;
 			children = (
 				32DBCF5E0370ADEE00C91783 /* GHKit_Prefix.pch */,
+				00AF11760F2D7DF8009F0ABA /* GHKitTests_Prefix.pch */,
 			);
 			name = &quot;Other Sources&quot;;
 			sourceTree = &quot;&lt;group&gt;&quot;;
@@ -472,6 +476,7 @@
 				00B599E30F1D259200359A10 /* NSURL+UtilsTest.m */,
 				005B0AAC0F22C09F0004F351 /* NSInvocation+UtilsTest.m */,
 				002E759E0F2C45DD00427636 /* GHLoggerTest.m */,
+				00AF10E60F2D5277009F0ABA /* TestsMain.m */,
 			);
 			path = Tests;
 			sourceTree = &quot;&lt;group&gt;&quot;;
@@ -530,6 +535,24 @@
 /* End PBXHeadersBuildPhase section */
 
 /* Begin PBXNativeTarget section */
+		00AF10CF0F2D5179009F0ABA /* GHKitTests */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 00AF10D50F2D517A009F0ABA /* Build configuration list for PBXNativeTarget &quot;GHKitTests&quot; */;
+			buildPhases = (
+				00AF10CC0F2D5179009F0ABA /* Resources */,
+				00AF10CD0F2D5179009F0ABA /* Sources */,
+				00AF10CE0F2D5179009F0ABA /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				00AF11650F2D7CD2009F0ABA /* PBXTargetDependency */,
+			);
+			name = GHKitTests;
+			productName = GHKitTests;
+			productReference = 00AF10D00F2D5179009F0ABA /* GHKitTests.app */;
+			productType = &quot;com.apple.product-type.application&quot;;
+		};
 		8DC2EF4F0486A6940098B216 /* GHKit */ = {
 			isa = PBXNativeTarget;
 			buildConfigurationList = 1DEB91AD08733DA50010E9CD /* Build configuration list for PBXNativeTarget &quot;GHKit&quot; */;
@@ -563,56 +586,45 @@
 			projectRoot = &quot;&quot;;
 			targets = (
 				8DC2EF4F0486A6940098B216 /* GHKit */,
+				00AF10CF0F2D5179009F0ABA /* GHKitTests */,
 			);
 		};
 /* End PBXProject section */
 
 /* Begin PBXResourcesBuildPhase section */
+		00AF10CC0F2D5179009F0ABA /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		8DC2EF520486A6940098B216 /* Resources */ = {
 			isa = PBXResourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
 				8DC2EF530486A6940098B216 /* InfoPlist.strings in Resources */,
-				0062B69A0F2C08AD00B0562A /* DebugiPhone.xcconfig in Resources */,
-				0062B69B0F2C08AD00B0562A /* DebugiPhone20.xcconfig in Resources */,
-				0062B69C0F2C08AD00B0562A /* DebugiPhone21.xcconfig in Resources */,
-				0062B69D0F2C08AD00B0562A /* DebugLeopardOrLater.xcconfig in Resources */,
-				0062B69E0F2C08AD00B0562A /* DebugSnowLeopardOrLater.xcconfig in Resources */,
-				0062B69F0F2C08AD00B0562A /* DebugTigerOrLater.xcconfig in Resources */,
-				0062B6A00F2C08AD00B0562A /* ReleaseiPhone.xcconfig in Resources */,
-				0062B6A10F2C08AD00B0562A /* ReleaseiPhone20.xcconfig in Resources */,
-				0062B6A20F2C08AD00B0562A /* ReleaseiPhone21.xcconfig in Resources */,
-				0062B6A30F2C08AD00B0562A /* ReleaseLeopardOrLater.xcconfig in Resources */,
-				0062B6A40F2C08AD00B0562A /* ReleaseSnowLeopardOrLater.xcconfig in Resources */,
-				0062B6A50F2C08AD00B0562A /* ReleaseTigerOrLater.xcconfig in Resources */,
-				0062B6A60F2C08AD00B0562A /* CodeCoverage.xcconfig in Resources */,
-				0062B6A70F2C08AD00B0562A /* CodeCoverageStatic.xcconfig in Resources */,
-				0062B6A80F2C08AD00B0562A /* Debug.xcconfig in Resources */,
-				0062B6A90F2C08AD00B0562A /* GCSupported.xcconfig in Resources */,
-				0062B6AA0F2C08AD00B0562A /* General.xcconfig in Resources */,
-				0062B6AB0F2C08AD00B0562A /* GTMMerge.xcconfig in Resources */,
-				0062B6AC0F2C08AD00B0562A /* iPhone20.xcconfig in Resources */,
-				0062B6AD0F2C08AD00B0562A /* iPhone21.xcconfig in Resources */,
-				0062B6AE0F2C08AD00B0562A /* LeopardOrLater.xcconfig in Resources */,
-				0062B6AF0F2C08AD00B0562A /* Release.xcconfig in Resources */,
-				0062B6B00F2C08AD00B0562A /* SnowLeopardOrLater.xcconfig in Resources */,
-				0062B6B10F2C08AD00B0562A /* TigerOrLater.xcconfig in Resources */,
-				0062B6B20F2C08AD00B0562A /* Unittest.xcconfig in Resources */,
-				0062B6B30F2C08AD00B0562A /* DebugUnittest.xcconfig in Resources */,
-				0062B6B40F2C08AD00B0562A /* LoadableBundle.xcconfig in Resources */,
-				0062B6B50F2C08AD00B0562A /* LoadableBundleGCSupported.xcconfig in Resources */,
-				0062B6B60F2C08AD00B0562A /* ReleaseUnittest.xcconfig in Resources */,
-				0062B6B70F2C08AD00B0562A /* SharedLibrary.xcconfig in Resources */,
-				0062B6B80F2C08AD00B0562A /* SharedLibraryGCSupported.xcconfig in Resources */,
-				0062B6B90F2C08AD00B0562A /* StaticLibrary.xcconfig in Resources */,
-				0062B6BA0F2C08AD00B0562A /* StaticLibraryGCSupported.xcconfig in Resources */,
-				0062B6BB0F2C08AD00B0562A /* xcconfigs-readme.txt in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 /* End PBXResourcesBuildPhase section */
 
 /* Begin PBXSourcesBuildPhase section */
+		00AF10CD0F2D5179009F0ABA /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				00AF10E70F2D5277009F0ABA /* TestsMain.m in Sources */,
+				00AF116F0F2D7D43009F0ABA /* NSURL+UtilsTest.m in Sources */,
+				00AF118C0F2D7EE2009F0ABA /* NSString+UtilsTest.m in Sources */,
+				00AF118D0F2D7EE3009F0ABA /* NSString+TimeIntervalTest.m in Sources */,
+				00AF118E0F2D7EE4009F0ABA /* NSString+HMACTest.m in Sources */,
+				00AF118F0F2D7EE5009F0ABA /* NSInvocation+UtilsTest.m in Sources */,
+				00AF11900F2D7EE6009F0ABA /* NSDate+ParsingTest.m in Sources */,
+				00AF11910F2D7EE6009F0ABA /* GHLoggerTest.m in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		8DC2EF540486A6940098B216 /* Sources */ = {
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
@@ -650,6 +662,14 @@
 		};
 /* End PBXSourcesBuildPhase section */
 
+/* Begin PBXTargetDependency section */
+		00AF11650F2D7CD2009F0ABA /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 8DC2EF4F0486A6940098B216 /* GHKit */;
+			targetProxy = 00AF11640F2D7CD2009F0ABA /* PBXContainerItemProxy */;
+		};
+/* End PBXTargetDependency section */
+
 /* Begin PBXVariantGroup section */
 		089C1666FE841158C02AAC07 /* InfoPlist.strings */ = {
 			isa = PBXVariantGroup;
@@ -662,6 +682,64 @@
 /* End PBXVariantGroup section */
 
 /* Begin XCBuildConfiguration section */
+		00AF10D30F2D517A009F0ABA /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				COPY_PHASE_STRIP = NO;
+				FRAMEWORK_SEARCH_PATHS = (
+					&quot;$(inherited)&quot;,
+					&quot;\&quot;$(SRCROOT)/../gh-unit/Frameworks\&quot;&quot;,
+					&quot;\&quot;$(SRCROOT)/Frameworks\&quot;&quot;,
+				);
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_ENABLE_FIX_AND_CONTINUE = YES;
+				GCC_MODEL_TUNING = G5;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = GHKitTests_Prefix.pch;
+				INFOPLIST_FILE = &quot;GHKitTests-Info.plist&quot;;
+				INSTALL_PATH = &quot;$(HOME)/Applications&quot;;
+				OTHER_LDFLAGS = (
+					&quot;-framework&quot;,
+					Foundation,
+					&quot;-framework&quot;,
+					AppKit,
+				);
+				PREBINDING = NO;
+				PRODUCT_NAME = GHKitTests;
+			};
+			name = Debug;
+		};
+		00AF10D40F2D517A009F0ABA /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				COPY_PHASE_STRIP = YES;
+				DEBUG_INFORMATION_FORMAT = &quot;dwarf-with-dsym&quot;;
+				FRAMEWORK_SEARCH_PATHS = (
+					&quot;$(inherited)&quot;,
+					&quot;\&quot;$(SRCROOT)/../gh-unit/Frameworks\&quot;&quot;,
+					&quot;\&quot;$(SRCROOT)/Frameworks\&quot;&quot;,
+				);
+				GCC_ENABLE_FIX_AND_CONTINUE = NO;
+				GCC_MODEL_TUNING = G5;
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = GHKitTests_Prefix.pch;
+				INFOPLIST_FILE = &quot;GHKitTests-Info.plist&quot;;
+				INSTALL_PATH = &quot;$(HOME)/Applications&quot;;
+				OTHER_LDFLAGS = (
+					&quot;-framework&quot;,
+					Foundation,
+					&quot;-framework&quot;,
+					AppKit,
+				);
+				PREBINDING = NO;
+				PRODUCT_NAME = GHKitTests;
+				ZERO_LINK = NO;
+			};
+			name = Release;
+		};
 		1DEB91AE08733DA50010E9CD /* Debug */ = {
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 0062B6790F2C08AD00B0562A /* DebugLeopardOrLater.xcconfig */;
@@ -744,6 +822,15 @@
 /* End XCBuildConfiguration section */
 
 /* Begin XCConfigurationList section */
+		00AF10D50F2D517A009F0ABA /* Build configuration list for PBXNativeTarget &quot;GHKitTests&quot; */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				00AF10D30F2D517A009F0ABA /* Debug */,
+				00AF10D40F2D517A009F0ABA /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
 		1DEB91AD08733DA50010E9CD /* Build configuration list for PBXNativeTarget &quot;GHKit&quot; */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (</diff>
      <filename>GHKit.xcodeproj/project.pbxproj</filename>
    </modified>
    <modified>
      <diff>@@ -25,12 +25,6 @@
 		00970D4F0F29234900189A9D /* GHNSStringUIKitUtilsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 00970D4E0F29234900189A9D /* GHNSStringUIKitUtilsTest.m */; };
 		00970D590F29240E00189A9D /* GTMStackTrace.m in Sources */ = {isa = PBXBuildFile; fileRef = 00970D550F29240E00189A9D /* GTMStackTrace.m */; };
 		00970D5A0F29240E00189A9D /* GTMObjC2Runtime.m in Sources */ = {isa = PBXBuildFile; fileRef = 00970D570F29240E00189A9D /* GTMObjC2Runtime.m */; };
-		009A95720F2930C300C5B773 /* NSInvocation+UtilsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 009A95660F2930C300C5B773 /* NSInvocation+UtilsTest.m */; };
-		009A95730F2930C300C5B773 /* NSURL+UtilsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 009A95670F2930C300C5B773 /* NSURL+UtilsTest.m */; };
-		009A95740F2930C300C5B773 /* NSString+UtilsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 009A95690F2930C300C5B773 /* NSString+UtilsTest.m */; };
-		009A95750F2930C300C5B773 /* NSString+TimeIntervalTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 009A956B0F2930C300C5B773 /* NSString+TimeIntervalTest.m */; };
-		009A95760F2930C300C5B773 /* NSString+HMACTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 009A956D0F2930C300C5B773 /* NSString+HMACTest.m */; };
-		009A95770F2930C300C5B773 /* NSDate+ParsingTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 009A956F0F2930C300C5B773 /* NSDate+ParsingTest.m */; };
 		009A95820F29320D00C5B773 /* GHNSInvocation+Utils.m in Sources */ = {isa = PBXBuildFile; fileRef = 009A957E0F29320D00C5B773 /* GHNSInvocation+Utils.m */; };
 		009A95830F29320D00C5B773 /* GHNSObject+Invocation.m in Sources */ = {isa = PBXBuildFile; fileRef = 009A957F0F29320D00C5B773 /* GHNSObject+Invocation.m */; };
 		00A97A140F0C424400B083F6 /* GHUIButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 00A97A100F0C424400B083F6 /* GHUIButton.m */; };
@@ -99,12 +93,6 @@
 		00970D560F29240E00189A9D /* GTMStackTrace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMStackTrace.h; sourceTree = &quot;&lt;group&gt;&quot;; };
 		00970D570F29240E00189A9D /* GTMObjC2Runtime.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMObjC2Runtime.m; sourceTree = &quot;&lt;group&gt;&quot;; };
 		00970D580F29240E00189A9D /* GTMObjC2Runtime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMObjC2Runtime.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-		009A95660F2930C300C5B773 /* NSInvocation+UtilsTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = &quot;NSInvocation+UtilsTest.m&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
-		009A95670F2930C300C5B773 /* NSURL+UtilsTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = &quot;NSURL+UtilsTest.m&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
-		009A95690F2930C300C5B773 /* NSString+UtilsTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = &quot;NSString+UtilsTest.m&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
-		009A956B0F2930C300C5B773 /* NSString+TimeIntervalTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = &quot;NSString+TimeIntervalTest.m&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
-		009A956D0F2930C300C5B773 /* NSString+HMACTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = &quot;NSString+HMACTest.m&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
-		009A956F0F2930C300C5B773 /* NSDate+ParsingTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = &quot;NSDate+ParsingTest.m&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
 		009A957E0F29320D00C5B773 /* GHNSInvocation+Utils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = &quot;GHNSInvocation+Utils.m&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
 		009A957F0F29320D00C5B773 /* GHNSObject+Invocation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = &quot;GHNSObject+Invocation.m&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
 		009A95800F29320D00C5B773 /* GHNSObject+Invocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = &quot;GHNSObject+Invocation.h&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
@@ -329,12 +317,6 @@
 		00DB2AE10EECA3BA00383FB6 /* Tests */ = {
 			isa = PBXGroup;
 			children = (
-				009A95660F2930C300C5B773 /* NSInvocation+UtilsTest.m */,
-				009A95670F2930C300C5B773 /* NSURL+UtilsTest.m */,
-				009A95690F2930C300C5B773 /* NSString+UtilsTest.m */,
-				009A956B0F2930C300C5B773 /* NSString+TimeIntervalTest.m */,
-				009A956D0F2930C300C5B773 /* NSString+HMACTest.m */,
-				009A956F0F2930C300C5B773 /* NSDate+ParsingTest.m */,
 				00DB2AE20EECA3BA00383FB6 /* IPhone */,
 			);
 			path = Tests;
@@ -492,12 +474,6 @@
 				00970D4F0F29234900189A9D /* GHNSStringUIKitUtilsTest.m in Sources */,
 				00970D590F29240E00189A9D /* GTMStackTrace.m in Sources */,
 				00970D5A0F29240E00189A9D /* GTMObjC2Runtime.m in Sources */,
-				009A95720F2930C300C5B773 /* NSInvocation+UtilsTest.m in Sources */,
-				009A95730F2930C300C5B773 /* NSURL+UtilsTest.m in Sources */,
-				009A95740F2930C300C5B773 /* NSString+UtilsTest.m in Sources */,
-				009A95750F2930C300C5B773 /* NSString+TimeIntervalTest.m in Sources */,
-				009A95760F2930C300C5B773 /* NSString+HMACTest.m in Sources */,
-				009A95770F2930C300C5B773 /* NSDate+ParsingTest.m in Sources */,
 				009A95820F29320D00C5B773 /* GHNSInvocation+Utils.m in Sources */,
 				009A95830F29320D00C5B773 /* GHNSObject+Invocation.m in Sources */,
 			);</diff>
      <filename>GHKitIPhone.xcodeproj/project.pbxproj</filename>
    </modified>
    <modified>
      <diff>@@ -6,7 +6,7 @@
 //  Copyright 2009. All rights reserved.
 //
 
-@interface GHLoggerTest : SenTestCase { }
+@interface GHLoggerTest : GHTestCase { }
 @end
 
 @implementation GHLoggerTest</diff>
      <filename>Tests/GHLoggerTest.m</filename>
    </modified>
    <modified>
      <diff>@@ -8,7 +8,7 @@
 
 #import &quot;GHNSDate+Parsing.h&quot;
 
-@interface NSDateParsingTest : SenTestCase { }
+@interface NSDateParsingTest : GHTestCase { }
 @end
 
 @implementation NSDateParsingTest
@@ -17,7 +17,7 @@
   NSString *rfc822 = @&quot;Sun, 06 Nov 1994 08:49:37 +0000&quot;;
   NSDate *date = [[NSDate alloc] initWithString:@&quot;1994-11-06 08:49:37 +0000&quot;];
   NSString *formatted = [date gh_formatRFC822];
-  STAssertEqualObjects(formatted, rfc822, @&quot;Should conform to RFC822 date&quot;);  
+  GHAssertEqualObjects(formatted, rfc822, @&quot;Should conform to RFC822 date&quot;);  
 }
 
 - (void)testParseHTTPDate {
@@ -30,13 +30,13 @@
   NSDate *parsed = nil;
   
   parsed = [NSDate gh_parseHTTP:rfc1123];
-  STAssertEqualObjects(parsed, date, @&quot;Should conform to RFC1123 date&quot;);
+  GHAssertEqualObjects(parsed, date, @&quot;Should conform to RFC1123 date&quot;);
   
   parsed = [NSDate gh_parseHTTP:rfc850];
-  STAssertEqualObjects(parsed, date, @&quot;Should conform to RFC850/1036 date&quot;);
+  GHAssertEqualObjects(parsed, date, @&quot;Should conform to RFC850/1036 date&quot;);
   
   parsed = [NSDate gh_parseHTTP:ascTime];
-  STAssertEqualObjects(parsed, date, @&quot;Should conform to ASCTime date&quot;);
+  GHAssertEqualObjects(parsed, date, @&quot;Should conform to ASCTime date&quot;);
 }
 
 @end</diff>
      <filename>Tests/NSDate+ParsingTest.m</filename>
    </modified>
    <modified>
      <diff>@@ -8,7 +8,7 @@
 
 #import &quot;GHNSInvocation+Utils.h&quot;
 
-@interface NSInvocationUtilsTest : SenTestCase {
+@interface NSInvocationUtilsTest : GHTestCase {
 	BOOL invokeTesting1Called_;
 	BOOL invokeTesting2Called_;
 }
@@ -22,13 +22,13 @@
 	[NSInvocation gh_invokeWithTarget:self selector:@selector(_invokeTesting1:withObject:withObject:) 
 												withObjects:[NSNumber numberWithInteger:1], [NSNumber numberWithInteger:2], [NSNumber numberWithInteger:3], nil];
 	
-	STAssertTrue(invokeTesting1Called_, @&quot;Method was not called&quot;);
+	GHAssertTrue(invokeTesting1Called_, @&quot;Method was not called&quot;);
 }
 	 
 - (void)_invokeTesting1:(NSNumber *)number1 withObject:number2 withObject:number3 {
-	STAssertEqualObjects([NSNumber numberWithInteger:1], number1, nil);
-	STAssertEqualObjects([NSNumber numberWithInteger:2], number2, nil);
-	STAssertEqualObjects([NSNumber numberWithInteger:3], number3, nil);
+	GHAssertEqualObjects([NSNumber numberWithInteger:1], number1, nil);
+	GHAssertEqualObjects([NSNumber numberWithInteger:2], number2, nil);
+	GHAssertEqualObjects([NSNumber numberWithInteger:3], number3, nil);
 	invokeTesting1Called_ = YES;
 }
 
@@ -36,13 +36,13 @@
 	NSArray *arguments = [NSArray arrayWithObjects:[NSNumber numberWithInteger:1], [NSNull null], [NSNumber numberWithInteger:3], nil];
 	[NSInvocation gh_invokeWithTarget:self selector:@selector(_invokeTesting2:withObject:withObject:) arguments:arguments];
 	
-	STAssertTrue(invokeTesting2Called_, @&quot;Method was not called&quot;);
+	GHAssertTrue(invokeTesting2Called_, @&quot;Method was not called&quot;);
 }
 
 - (void)_invokeTesting2:(NSNumber *)number1 withObject:nilValue withObject:number3 {
-	STAssertEqualObjects([NSNumber numberWithInteger:1], number1, nil);
-	STAssertNULL(nilValue, @&quot;Should be nil&quot;);
-	STAssertEqualObjects([NSNumber numberWithInteger:3], number3, nil);
+	GHAssertEqualObjects([NSNumber numberWithInteger:1], number1, nil);
+	GHAssertNULL(nilValue, @&quot;Should be nil&quot;);
+	GHAssertEqualObjects([NSNumber numberWithInteger:3], number3, nil);
 	invokeTesting2Called_ = YES;
 }
 </diff>
      <filename>Tests/NSInvocation+UtilsTest.m</filename>
    </modified>
    <modified>
      <diff>@@ -8,7 +8,7 @@
 
 #import &quot;GHNSString+HMAC.h&quot;
 
-@interface NSStringHMACTest : SenTestCase { }
+@interface NSStringHMACTest : GHTestCase { }
 @end
 
 @implementation NSStringHMACTest
@@ -18,11 +18,11 @@
   // http://docs.amazonwebservices.com/AmazonS3/2006-03-01/RESTAuthentication.html
   
   NSString *stringToSign = @&quot;GET\n\n\nTue, 27 Mar 2007 19:36:42 +0000\n/johnsmith/photos/puppy.jpg&quot;;  
-  NSLog(@&quot;String to sign: %@&quot;, stringToSign);
+  GHDebug(@&quot;String to sign: %@&quot;, stringToSign);
   NSString *secretKey = @&quot;uV3F3YluFJax1cknvbcGwgjvx4QpvB+leU8dUj2o&quot;;
   
   NSString *signature = [stringToSign gh_hmacSha1:secretKey];
-  STAssertEqualObjects(@&quot;xXjDGYUmKxnwqr5KXNPGldn5LbA=&quot;, signature, @&quot;HMAC SHA1 signature is not correct&quot;);
+  GHAssertEqualObjects(@&quot;xXjDGYUmKxnwqr5KXNPGldn5LbA=&quot;, signature, @&quot;HMAC SHA1 signature is not correct&quot;);
 }
 
 @end</diff>
      <filename>Tests/NSString+HMACTest.m</filename>
    </modified>
    <modified>
      <diff>@@ -7,39 +7,39 @@
 
 #import &quot;GHNSString+TimeInterval.h&quot;
 
-@interface NSStringTimeIntervalTest : SenTestCase { }
+@interface NSStringTimeIntervalTest : GHTestCase { }
 @end
 
 @implementation NSStringTimeIntervalTest
 
 - (void)testStringForTimeInterval {
-  STAssertEqualObjects(@&quot;less than a minute&quot;, [NSString gh_stringForTimeInterval:29.0 includeSeconds:NO], @&quot;Invalid string for time interval&quot;);
-  STAssertEqualObjects(@&quot;1 minute&quot;, [NSString gh_stringForTimeInterval:30.0 includeSeconds:NO], @&quot;Invalid string for time interval&quot;);
+  GHAssertEqualObjects(@&quot;less than a minute&quot;, [NSString gh_stringForTimeInterval:29.0 includeSeconds:NO], @&quot;Invalid string for time interval&quot;);
+  GHAssertEqualObjects(@&quot;1 minute&quot;, [NSString gh_stringForTimeInterval:30.0 includeSeconds:NO], @&quot;Invalid string for time interval&quot;);
   
-  STAssertEqualObjects(@&quot;less than 5 seconds&quot;, [NSString gh_stringForTimeInterval:4.0 includeSeconds:YES], @&quot;Invalid string for time interval&quot;);
-  STAssertEqualObjects(@&quot;less than 10 seconds&quot;, [NSString gh_stringForTimeInterval:5.0 includeSeconds:YES], @&quot;Invalid string for time interval&quot;);
-  STAssertEqualObjects(@&quot;less than 20 seconds&quot;, [NSString gh_stringForTimeInterval:19.0 includeSeconds:YES], @&quot;Invalid string for time interval&quot;);
-  STAssertEqualObjects(@&quot;half a minute&quot;, [NSString gh_stringForTimeInterval:29.0 includeSeconds:YES], @&quot;Invalid string for time interval&quot;);
-  STAssertEqualObjects(@&quot;less than a minute&quot;, [NSString gh_stringForTimeInterval:59.0 includeSeconds:YES], @&quot;Invalid string for time interval&quot;);
-  STAssertEqualObjects(@&quot;1 minute&quot;, [NSString gh_stringForTimeInterval:60.0 includeSeconds:YES], @&quot;Invalid string for time interval&quot;);
+  GHAssertEqualObjects(@&quot;less than 5 seconds&quot;, [NSString gh_stringForTimeInterval:4.0 includeSeconds:YES], @&quot;Invalid string for time interval&quot;);
+  GHAssertEqualObjects(@&quot;less than 10 seconds&quot;, [NSString gh_stringForTimeInterval:5.0 includeSeconds:YES], @&quot;Invalid string for time interval&quot;);
+  GHAssertEqualObjects(@&quot;less than 20 seconds&quot;, [NSString gh_stringForTimeInterval:19.0 includeSeconds:YES], @&quot;Invalid string for time interval&quot;);
+  GHAssertEqualObjects(@&quot;half a minute&quot;, [NSString gh_stringForTimeInterval:29.0 includeSeconds:YES], @&quot;Invalid string for time interval&quot;);
+  GHAssertEqualObjects(@&quot;less than a minute&quot;, [NSString gh_stringForTimeInterval:59.0 includeSeconds:YES], @&quot;Invalid string for time interval&quot;);
+  GHAssertEqualObjects(@&quot;1 minute&quot;, [NSString gh_stringForTimeInterval:60.0 includeSeconds:YES], @&quot;Invalid string for time interval&quot;);
   
-  STAssertEqualObjects(@&quot;1 minute&quot;, [NSString gh_stringForTimeInterval:89.0 includeSeconds:YES], @&quot;Invalid string for time interval&quot;);
-  STAssertEqualObjects(@&quot;2 minutes&quot;, [NSString gh_stringForTimeInterval:90.0 includeSeconds:YES], @&quot;Invalid string for time interval&quot;);
+  GHAssertEqualObjects(@&quot;1 minute&quot;, [NSString gh_stringForTimeInterval:89.0 includeSeconds:YES], @&quot;Invalid string for time interval&quot;);
+  GHAssertEqualObjects(@&quot;2 minutes&quot;, [NSString gh_stringForTimeInterval:90.0 includeSeconds:YES], @&quot;Invalid string for time interval&quot;);
   
-  STAssertEqualObjects(@&quot;44 minutes&quot;, [NSString gh_stringForTimeInterval:(44.0 * 60.0) includeSeconds:YES], @&quot;Invalid string for time interval&quot;);
-  STAssertEqualObjects(@&quot;about 1 hour&quot;, [NSString gh_stringForTimeInterval:(45.0 * 60.0) includeSeconds:YES], @&quot;Invalid string for time interval&quot;);
-  STAssertEqualObjects(@&quot;about 1 hour&quot;, [NSString gh_stringForTimeInterval:(89.0 * 60.0) includeSeconds:YES], @&quot;Invalid string for time interval&quot;);
-  STAssertEqualObjects(@&quot;about 2 hours&quot;, [NSString gh_stringForTimeInterval:(90.0 * 60.0) includeSeconds:YES], @&quot;Invalid string for time interval&quot;);
-  STAssertEqualObjects(@&quot;1 day&quot;, [NSString gh_stringForTimeInterval:(47.0 * 60.0 * 60.0) includeSeconds:YES], @&quot;Invalid string for time interval&quot;);
-  STAssertEqualObjects(@&quot;2 days&quot;, [NSString gh_stringForTimeInterval:(48.0 * 60.0 * 60.0) includeSeconds:YES], @&quot;Invalid string for time interval&quot;);
-  STAssertEqualObjects(@&quot;3 days&quot;, [NSString gh_stringForTimeInterval:(60.0 * 60.0 * 60.0) includeSeconds:YES], @&quot;Invalid string for time interval&quot;);
-  STAssertEqualObjects(@&quot;3 days&quot;, [NSString gh_stringForTimeInterval:(72.0 * 60.0 * 60.0) includeSeconds:YES], @&quot;Invalid string for time interval&quot;);
-  STAssertEqualObjects(@&quot;15 days&quot;, [NSString gh_stringForTimeInterval:(15.0 * 24.0 * 60.0 * 60.0) includeSeconds:YES], @&quot;Invalid string for time interval&quot;);
-  STAssertEqualObjects(@&quot;about 1 month&quot;, [NSString gh_stringForTimeInterval:(30.0 * 24.0 * 60.0 * 60.0) includeSeconds:YES], @&quot;Invalid string for time interval&quot;);
-  STAssertEqualObjects(@&quot;2 months&quot;, [NSString gh_stringForTimeInterval:(60.0 * 24.0 * 60.0 * 60.0) includeSeconds:YES], @&quot;Invalid string for time interval&quot;);
+  GHAssertEqualObjects(@&quot;44 minutes&quot;, [NSString gh_stringForTimeInterval:(44.0 * 60.0) includeSeconds:YES], @&quot;Invalid string for time interval&quot;);
+  GHAssertEqualObjects(@&quot;about 1 hour&quot;, [NSString gh_stringForTimeInterval:(45.0 * 60.0) includeSeconds:YES], @&quot;Invalid string for time interval&quot;);
+  GHAssertEqualObjects(@&quot;about 1 hour&quot;, [NSString gh_stringForTimeInterval:(89.0 * 60.0) includeSeconds:YES], @&quot;Invalid string for time interval&quot;);
+  GHAssertEqualObjects(@&quot;about 2 hours&quot;, [NSString gh_stringForTimeInterval:(90.0 * 60.0) includeSeconds:YES], @&quot;Invalid string for time interval&quot;);
+  GHAssertEqualObjects(@&quot;1 day&quot;, [NSString gh_stringForTimeInterval:(47.0 * 60.0 * 60.0) includeSeconds:YES], @&quot;Invalid string for time interval&quot;);
+  GHAssertEqualObjects(@&quot;2 days&quot;, [NSString gh_stringForTimeInterval:(48.0 * 60.0 * 60.0) includeSeconds:YES], @&quot;Invalid string for time interval&quot;);
+  GHAssertEqualObjects(@&quot;3 days&quot;, [NSString gh_stringForTimeInterval:(60.0 * 60.0 * 60.0) includeSeconds:YES], @&quot;Invalid string for time interval&quot;);
+  GHAssertEqualObjects(@&quot;3 days&quot;, [NSString gh_stringForTimeInterval:(72.0 * 60.0 * 60.0) includeSeconds:YES], @&quot;Invalid string for time interval&quot;);
+  GHAssertEqualObjects(@&quot;15 days&quot;, [NSString gh_stringForTimeInterval:(15.0 * 24.0 * 60.0 * 60.0) includeSeconds:YES], @&quot;Invalid string for time interval&quot;);
+  GHAssertEqualObjects(@&quot;about 1 month&quot;, [NSString gh_stringForTimeInterval:(30.0 * 24.0 * 60.0 * 60.0) includeSeconds:YES], @&quot;Invalid string for time interval&quot;);
+  GHAssertEqualObjects(@&quot;2 months&quot;, [NSString gh_stringForTimeInterval:(60.0 * 24.0 * 60.0 * 60.0) includeSeconds:YES], @&quot;Invalid string for time interval&quot;);
   
-  STAssertEqualObjects(@&quot;about 1 year&quot;, [NSString gh_stringForTimeInterval:(365.0 * 24.0 * 60.0 * 60.0) includeSeconds:YES], @&quot;Invalid string for time interval&quot;);
-  STAssertEqualObjects(@&quot;over 2 years&quot;, [NSString gh_stringForTimeInterval:(2.0 * 365.0 * 24.0 * 60.0 * 60.0) includeSeconds:YES], @&quot;Invalid string for time interval&quot;);
+  GHAssertEqualObjects(@&quot;about 1 year&quot;, [NSString gh_stringForTimeInterval:(365.0 * 24.0 * 60.0 * 60.0) includeSeconds:YES], @&quot;Invalid string for time interval&quot;);
+  GHAssertEqualObjects(@&quot;over 2 years&quot;, [NSString gh_stringForTimeInterval:(2.0 * 365.0 * 24.0 * 60.0 * 60.0) includeSeconds:YES], @&quot;Invalid string for time interval&quot;);
 }
 
 @end</diff>
      <filename>Tests/NSString+TimeIntervalTest.m</filename>
    </modified>
    <modified>
      <diff>@@ -9,70 +9,70 @@
 #import &quot;GHNSString+Utils.h&quot;
 #import &quot;GHNSString+Validation.h&quot;
 
-@interface NSStringUtilsTest : SenTestCase { }
+@interface NSStringUtilsTest : GHTestCase { }
 @end
 
 @implementation NSStringUtilsTest
 
 - (void)testMimeTypes {
   NSString *mimeType = [@&quot;pdf&quot; gh_mimeTypeForExtension];
-  STAssertEqualObjects(@&quot;application/pdf&quot;, mimeType, @&quot;Should be pdf mime type&quot;);
+  GHAssertEqualObjects(@&quot;application/pdf&quot;, mimeType, @&quot;Should be pdf mime type&quot;);
 }
 
 - (void)testValidateEmail {
   NSString *valid = @&quot;gabrielh@gmail.com&quot;;  
-  STAssertTrue([valid gh_isEmailAddress], @&quot;Should be valid email&quot;);
+  GHAssertTrue([valid gh_isEmailAddress], @&quot;Should be valid email&quot;);
   
   NSString *invalid = @&quot;foo&quot;;
-  STAssertFalse([invalid gh_isEmailAddress], @&quot;Should be invalid email&quot;);
+  GHAssertFalse([invalid gh_isEmailAddress], @&quot;Should be invalid email&quot;);
   
   NSString *invalid2 = @&quot;~gabrielh@gmail.com&quot;;  
-  STAssertFalse([invalid2 gh_isEmailAddress], @&quot;Should be invalid email&quot;);
+  GHAssertFalse([invalid2 gh_isEmailAddress], @&quot;Should be invalid email&quot;);
   
   NSString *valid3 = @&quot;gabrielh@gmail.commmmmmm&quot;;  
-  STAssertTrue([valid3 gh_isEmailAddress], @&quot;Should be valid email&quot;);
+  GHAssertTrue([valid3 gh_isEmailAddress], @&quot;Should be valid email&quot;);
 }
 
 - (void)testLastSplitWithString {
-	STAssertEqualObjects(@&quot;bar&quot;, [@&quot;foo:bar&quot; gh_lastSplitWithString:@&quot;:&quot; options:NSCaseInsensitiveSearch], @&quot;Split is invalid&quot;);	
-	STAssertEqualObjects(@&quot;foobar&quot;, [@&quot;foobar&quot; gh_lastSplitWithString:@&quot;:&quot; options:NSCaseInsensitiveSearch], @&quot;Split is invalid&quot;);
+	GHAssertEqualObjects(@&quot;bar&quot;, [@&quot;foo:bar&quot; gh_lastSplitWithString:@&quot;:&quot; options:NSCaseInsensitiveSearch], @&quot;Split is invalid&quot;);	
+	GHAssertEqualObjects(@&quot;foobar&quot;, [@&quot;foobar&quot; gh_lastSplitWithString:@&quot;:&quot; options:NSCaseInsensitiveSearch], @&quot;Split is invalid&quot;);
 	
-	STAssertEqualObjects(@&quot;foobar&quot;, [@&quot;foobar&quot; gh_lastSplitWithString:@&quot;&quot; options:NSCaseInsensitiveSearch], @&quot;Split is invalid&quot;);
-	STAssertEqualObjects(@&quot;ar&quot;, [@&quot;foobar&quot; gh_lastSplitWithString:@&quot;oob&quot; options:NSCaseInsensitiveSearch], @&quot;Split is invalid&quot;);
+	GHAssertEqualObjects(@&quot;foobar&quot;, [@&quot;foobar&quot; gh_lastSplitWithString:@&quot;&quot; options:NSCaseInsensitiveSearch], @&quot;Split is invalid&quot;);
+	GHAssertEqualObjects(@&quot;ar&quot;, [@&quot;foobar&quot; gh_lastSplitWithString:@&quot;oob&quot; options:NSCaseInsensitiveSearch], @&quot;Split is invalid&quot;);
 }
 
 - (void)testCutWithString {
 	NSArray *expected = [NSArray arrayWithObjects:@&quot;foo:&quot;, @&quot;bar&quot;, nil];
 	NSArray *cuts = [@&quot;foo:bar&quot; gh_cutWithString:@&quot;:&quot; options:0];
-	STAssertEqualObjects(expected, cuts, @&quot;Cut is invalid&quot;);	
+	GHAssertEqualObjects(expected, cuts, @&quot;Cut is invalid&quot;);	
 
 	NSArray *expected2 = [NSArray arrayWithObjects:@&quot;foobar&quot;, nil];
 	NSArray *cuts2 = [@&quot;foobar&quot; gh_cutWithString:@&quot;:&quot; options:0];
-	STAssertEqualObjects(expected2, cuts2, @&quot;Cut is invalid&quot;);	
+	GHAssertEqualObjects(expected2, cuts2, @&quot;Cut is invalid&quot;);	
 	
 	NSArray *expected3 = [NSArray arrayWithObjects:@&quot;foo:&quot;, nil];
 	NSArray *cuts3 = [@&quot;foo:&quot; gh_cutWithString:@&quot;:&quot; options:0];
-	STAssertEqualObjects(expected3, cuts3, @&quot;Cut is invalid&quot;);	
+	GHAssertEqualObjects(expected3, cuts3, @&quot;Cut is invalid&quot;);	
 
 	NSArray *expected4 = [NSArray arrayWithObjects:@&quot;&quot;, nil];
 	NSArray *cuts4 = [@&quot;&quot; gh_cutWithString:@&quot;:&quot; options:0];
-	STAssertEqualObjects(expected4, cuts4, @&quot;Cut is invalid&quot;);	
+	GHAssertEqualObjects(expected4, cuts4, @&quot;Cut is invalid&quot;);	
 	
 	NSArray *expected5 = [NSArray arrayWithObjects:@&quot;:&quot;, nil];
 	NSArray *cuts5 = [@&quot;:&quot; gh_cutWithString:@&quot;:&quot; options:0];
-	STAssertEqualObjects(expected5, cuts5, @&quot;Cut is invalid&quot;);	
+	GHAssertEqualObjects(expected5, cuts5, @&quot;Cut is invalid&quot;);	
 	
 	NSArray *expected6 = [NSArray arrayWithObjects:@&quot;:&quot;, @&quot;:&quot;, nil];
 	NSArray *cuts6 = [@&quot;::&quot; gh_cutWithString:@&quot;:&quot; options:0];
-	STAssertEqualObjects(expected6, cuts6, @&quot;Cut is invalid&quot;);	
+	GHAssertEqualObjects(expected6, cuts6, @&quot;Cut is invalid&quot;);	
 	
 	NSArray *expected7 = [NSArray arrayWithObjects:@&quot;:&quot;, @&quot;foo:&quot;, nil];
 	NSArray *cuts7 = [@&quot;:foo:&quot; gh_cutWithString:@&quot;:&quot; options:0];
-	STAssertEqualObjects(expected7, cuts7, @&quot;Cut is invalid&quot;);	
+	GHAssertEqualObjects(expected7, cuts7, @&quot;Cut is invalid&quot;);	
 	
 	NSArray *expected8 = [NSArray arrayWithObjects:@&quot;foo---&quot;, @&quot;bar&quot;, nil];
 	NSArray *cuts8 = [@&quot;foo---bar&quot; gh_cutWithString:@&quot;---&quot; options:0];
-	STAssertEqualObjects(expected8, cuts8, @&quot;Cut is invalid&quot;);	
+	GHAssertEqualObjects(expected8, cuts8, @&quot;Cut is invalid&quot;);	
 }
 
 - (void)testCut {
@@ -80,69 +80,76 @@
 	NSString *text = @&quot;Lorem ipsum dolor sit amet&quot;;
 	NSArray *cuts = [text gh_cutWithString:@&quot; &quot; options:0 cutAfter:YES];
 	NSArray *expected = [NSArray arrayWithObjects:@&quot;Lorem &quot;, @&quot;ipsum &quot;, @&quot;dolor &quot;, @&quot;sit &quot;, @&quot;amet&quot;, nil];
-	STAssertEqualObjects(cuts, expected, nil);
+	GHAssertEqualObjects(cuts, expected, nil);
 }
 
 - (void)testCutBefore {
 	
-	NSString *text = @&quot;Lorem ipsum dolor sit amet&quot;;
-	NSArray *cuts = [text gh_cutWithString:@&quot; &quot; options:0 cutAfter:NO];
-	NSArray *expected = [NSArray arrayWithObjects:@&quot;Lorem&quot;, @&quot; ipsum&quot;, @&quot; dolor&quot;, @&quot; sit&quot;, @&quot; amet&quot;, nil];
-	
-	//STAssertEqualObjects(cuts, expected, nil);
+//	NSString *text = @&quot;Lorem ipsum dolor sit amet&quot;;
+//	NSArray *cuts = [text gh_cutWithString:@&quot; &quot; options:0 cutAfter:NO];
+//	NSArray *expected = [NSArray arrayWithObjects:@&quot;Lorem&quot;, @&quot; ipsum&quot;, @&quot; dolor&quot;, @&quot; sit&quot;, @&quot; amet&quot;, nil];	
+	//GHAssertEqualObjects(cuts, expected, nil);
 }
 
 - (void)testSubStringSegmentsWithin {
 	
 	NSString *test1 = @&quot;This &lt;START&gt;is a&lt;END&gt; test.&quot;;
 	NSArray *segments1 = [test1 gh_substringSegmentsWithinStart:@&quot;&lt;START&gt;&quot; end:@&quot;&lt;END&gt;&quot;];
-	NSArray *expected1 = [NSArray arrayWithObjects:[GHStringSegment string:@&quot;This &quot; isMatch:NO], [GHStringSegment string:@&quot;is a&quot; isMatch:YES], [GHStringSegment string:@&quot; test.&quot; isMatch:NO], nil];
-	STAssertEqualObjects(segments1, expected1, @&quot;Segments is invalid&quot;);		
+	NSArray *expected1 = [NSArray arrayWithObjects:
+												[GHNSStringSegment string:@&quot;This &quot; isMatch:NO], 
+												[GHNSStringSegment string:@&quot;is a&quot; isMatch:YES], 
+												[GHNSStringSegment string:@&quot; test.&quot; isMatch:NO], nil];
+	GHAssertEqualObjects(segments1, expected1, @&quot;Segments is invalid&quot;);		
 	
 	NSString *test2 = @&quot;This is a test.&quot;;
 	NSArray *segments2 = [test2 gh_substringSegmentsWithinStart:@&quot;&lt;START&gt;&quot; end:@&quot;&lt;END&gt;&quot;];
-	NSArray *expected2 = [NSArray arrayWithObjects:[GHStringSegment string:@&quot;This is a test.&quot; isMatch:NO], nil];
-	STAssertEqualObjects(segments2, expected2, @&quot;Segments is invalid&quot;);	
+	NSArray *expected2 = [NSArray arrayWithObjects:[GHNSStringSegment string:@&quot;This is a test.&quot; isMatch:NO], nil];
+	GHAssertEqualObjects(segments2, expected2, @&quot;Segments is invalid&quot;);	
 	
 	NSString *test3 = @&quot;&lt;START&gt;This is a test.&lt;END&gt;&quot;;
 	NSArray *segments3 = [test3 gh_substringSegmentsWithinStart:@&quot;&lt;START&gt;&quot; end:@&quot;&lt;END&gt;&quot;];
-	NSArray *expected3 = [NSArray arrayWithObjects:[GHStringSegment string:@&quot;This is a test.&quot; isMatch:YES], nil];
-	STAssertEqualObjects(segments3, expected3, @&quot;Segments is invalid&quot;);	
+	NSArray *expected3 = [NSArray arrayWithObjects:[GHNSStringSegment string:@&quot;This is a test.&quot; isMatch:YES], nil];
+	GHAssertEqualObjects(segments3, expected3, @&quot;Segments is invalid&quot;);	
 
 	NSString *test4 = @&quot;&lt;START&gt;This is a test.&lt;END&gt; &quot;;
 	NSArray *segments4 = [test4 gh_substringSegmentsWithinStart:@&quot;&lt;START&gt;&quot; end:@&quot;&lt;END&gt;&quot;];
-	NSArray *expected4 = [NSArray arrayWithObjects:[GHStringSegment string:@&quot;This is a test.&quot; isMatch:YES], [GHStringSegment string:@&quot; &quot; isMatch:NO], nil];
-	STAssertEqualObjects(segments4, expected4, @&quot;Segments is invalid&quot;);	
+	NSArray *expected4 = [NSArray arrayWithObjects:
+												[GHNSStringSegment string:@&quot;This is a test.&quot; isMatch:YES], 
+												[GHNSStringSegment string:@&quot; &quot; isMatch:NO], nil];
+	GHAssertEqualObjects(segments4, expected4, @&quot;Segments is invalid&quot;);	
 	
 	NSString *test5 = @&quot; &lt;START&gt;This is a test.&lt;END&gt; &lt;END&gt;&quot;;
 	NSArray *segments5 = [test5 gh_substringSegmentsWithinStart:@&quot;&lt;START&gt;&quot; end:@&quot;&lt;END&gt;&quot;];
-	NSArray *expected5 = [NSArray arrayWithObjects:[GHStringSegment string:@&quot; &quot; isMatch:NO], [GHStringSegment string:@&quot;This is a test.&quot; isMatch:YES], [GHStringSegment string:@&quot; &lt;END&gt;&quot; isMatch:NO], nil];
-	STAssertEqualObjects(segments5, expected5, @&quot;Segments is invalid&quot;);	
+	NSArray *expected5 = [NSArray arrayWithObjects:
+												[GHNSStringSegment string:@&quot; &quot; isMatch:NO], 
+												[GHNSStringSegment string:@&quot;This is a test.&quot; isMatch:YES], 
+												[GHNSStringSegment string:@&quot; &lt;END&gt;&quot; isMatch:NO], nil];
+	GHAssertEqualObjects(segments5, expected5, @&quot;Segments is invalid&quot;);	
 	
 	// TODO: Ok to kill the start token?
 	NSString *test6 = @&quot;&lt;START&gt;This is a test.&quot;;
 	NSArray *segments6 = [test6 gh_substringSegmentsWithinStart:@&quot;&lt;START&gt;&quot; end:@&quot;&lt;END&gt;&quot;];
-	NSArray *expected6 = [NSArray arrayWithObjects:[GHStringSegment string:@&quot;This is a test.&quot; isMatch:YES], nil];
-	STAssertEqualObjects(segments6, expected6, @&quot;Segments is invalid&quot;);	
+	NSArray *expected6 = [NSArray arrayWithObjects:[GHNSStringSegment string:@&quot;This is a test.&quot; isMatch:YES], nil];
+	GHAssertEqualObjects(segments6, expected6, @&quot;Segments is invalid&quot;);	
 	
 	// TODO: Return nil on empty string input?
 	NSString *test7 = @&quot;&quot;;
 	NSArray *segments7 = [test7 gh_substringSegmentsWithinStart:@&quot;&lt;START&gt;&quot; end:@&quot;&lt;END&gt;&quot;];
 	NSArray *expected7 = [NSArray arrayWithObjects:nil];
-	STAssertEqualObjects(segments7, expected7, @&quot;Segments is invalid&quot;);	
+	GHAssertEqualObjects(segments7, expected7, @&quot;Segments is invalid&quot;);	
 	
 }
 
 - (void)testRightStrip {
 	NSString *text = @&quot;this is a string to right strip   &quot;;
 	NSString *expected = @&quot;this is a string to right strip&quot;;
-	STAssertEqualStrings([text gh_rightStrip], expected, nil);
+	GHAssertEqualStrings([text gh_rightStrip], expected, nil);
 }
 
 - (void)testLeftStrip {
 	NSString *text = @&quot;   this is a string to left strip&quot;;
 	NSString *expected = @&quot;this is a string to left strip&quot;;
-	STAssertEqualStrings([text gh_leftStrip], expected, nil);
+	GHAssertEqualStrings([text gh_leftStrip], expected, nil);
 	
 }
 	</diff>
      <filename>Tests/NSString+UtilsTest.m</filename>
    </modified>
    <modified>
      <diff>@@ -7,7 +7,7 @@
 
 #import &quot;GHNSURL+Utils.h&quot;
 
-@interface NSURLUtilsTest : SenTestCase { }
+@interface NSURLUtilsTest : GHTestCase { }
 @end
 
 @implementation NSURLUtilsTest
@@ -16,35 +16,35 @@
 	NSString *test1 = @&quot;~!@#$%^&amp;*(){}[]=:/,;?+'\&quot;\\&quot;;
 	NSString *escaped1 = [NSURL gh_encode:test1];
 	NSArray *expected1 = @&quot;~!@#$%25%5E&amp;*()%7B%7D%5B%5D=:/,;?+'%22%5C&quot;;
-	STAssertEqualObjects(escaped1, expected1, nil);			
+	GHAssertEqualObjects(escaped1, expected1, nil);			
 }
 
 - (void)testEncodeAll {	
 	NSString *test1 = @&quot;~!@#$%^&amp;*(){}[]=:/,;?+'\&quot;\\&quot;;
 	NSString *escaped1 = [NSURL gh_encodeAll:test1];
 	NSArray *expected1 = @&quot;~!%40%23%24%25%5E%26*()%7B%7D%5B%5D%3D%3A%2F%2C%3B%3F%2B'%22%5C&quot;;
-	STAssertEqualObjects(escaped1, expected1, nil);		
+	GHAssertEqualObjects(escaped1, expected1, nil);		
 }
 
 - (void)testParamsToString {
 	NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@&quot;value1&quot;, @&quot;key1&quot;, @&quot;value2&quot;, @&quot;key2&quot;, nil];
 	NSString *s = [NSURL gh_paramsToString:dict];
-	STAssertEqualObjects(s, @&quot;key1=value1&amp;key2=value2&quot;, nil);
+	GHAssertEqualObjects(s, @&quot;key1=value1&amp;key2=value2&quot;, nil);
 	
 	NSDictionary *dict2 = [NSDictionary dictionaryWithObjectsAndKeys:@&quot;value1&quot;, @&quot;AAA&quot;, @&quot;value2&quot;, @&quot;BBB&quot;, @&quot;value3&quot;, @&quot;CCC&quot;, nil];
 	NSString *s2 = [NSURL gh_paramsToString:dict2 sort:YES];
-	STAssertEqualObjects(s2, @&quot;AAA=value1&amp;BBB=value2&amp;CCC=value3&quot;, nil);	
+	GHAssertEqualObjects(s2, @&quot;AAA=value1&amp;BBB=value2&amp;CCC=value3&quot;, nil);	
 }
 
 - (void)testStringToParams {
 	NSDictionary *dict = [NSURL gh_stringToParams:@&quot;key1=value1&amp;key2=value2&quot;];
-	STAssertEqualObjects(@&quot;value1&quot;, [dict objectForKey:@&quot;key1&quot;], nil);
-	STAssertEqualObjects(@&quot;value2&quot;, [dict objectForKey:@&quot;key2&quot;], nil);
+	GHAssertEqualObjects(@&quot;value1&quot;, [dict objectForKey:@&quot;key1&quot;], nil);
+	GHAssertEqualObjects(@&quot;value2&quot;, [dict objectForKey:@&quot;key2&quot;], nil);
 	
 	NSDictionary *dict2 = [NSURL gh_stringToParams:@&quot;key1==value1&amp;&amp;key2=value2&amp;key3=value3=more&quot;];
-	STAssertEqualObjects(@&quot;=value1&quot;, [dict2 objectForKey:@&quot;key1&quot;], nil);
-	STAssertEqualObjects(@&quot;value2&quot;, [dict2 objectForKey:@&quot;key2&quot;], nil);
-	STAssertEqualObjects(@&quot;value3=more&quot;, [dict2 objectForKey:@&quot;key3&quot;], nil);
+	GHAssertEqualObjects(@&quot;=value1&quot;, [dict2 objectForKey:@&quot;key1&quot;], nil);
+	GHAssertEqualObjects(@&quot;value2&quot;, [dict2 objectForKey:@&quot;key2&quot;], nil);
+	GHAssertEqualObjects(@&quot;value3=more&quot;, [dict2 objectForKey:@&quot;key3&quot;], nil);
 }
 
 </diff>
      <filename>Tests/NSURL+UtilsTest.m</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>b2797f7fa8cae1edb7b7cf7ee4badb1e6b602e45</id>
    </parent>
  </parents>
  <author>
    <name>Gabriel Handford</name>
    <email>gabrielh@gmail.com</email>
  </author>
  <url>http://github.com/gabriel/gh-kit/commit/6815762cb8a738aaa82e5b7ce241b24de620efe1</url>
  <id>6815762cb8a738aaa82e5b7ce241b24de620efe1</id>
  <committed-date>2009-01-25T23:13:51-08:00</committed-date>
  <authored-date>2009-01-25T23:13:51-08:00</authored-date>
  <message>Integrating with GHUnit</message>
  <tree>7c532f07ce286ce24d56c7ee2b4b6b86c4420032</tree>
  <committer>
    <name>Gabriel Handford</name>
    <email>gabrielh@gmail.com</email>
  </committer>
</commit>
