aboutsummaryrefslogtreecommitdiff
path: root/Foundation/GTMNSDictionary+URLArgumentsTest.m
diff options
context:
space:
mode:
authorGravatar thomasvl <thomasvl@7dc7ac4e-7543-0410-b95c-c1676fc8e2a3>2008-05-16 20:47:42 +0000
committerGravatar thomasvl <thomasvl@7dc7ac4e-7543-0410-b95c-c1676fc8e2a3>2008-05-16 20:47:42 +0000
commit80d493da05c8d461d74bfaa919ffc487be03ffe6 (patch)
treed150f6879fa82bb253643be95a414844fc3b3829 /Foundation/GTMNSDictionary+URLArgumentsTest.m
parent9eee9a7b5b369a90178b837786e42c909e4207dd (diff)
Standardize the reverse dns names for errors, notifications, etc.
iPhone unit test framework didn't run tearDown on failures. Add String and Dictionary URLArgument support and tests.
Diffstat (limited to 'Foundation/GTMNSDictionary+URLArgumentsTest.m')
-rw-r--r--Foundation/GTMNSDictionary+URLArgumentsTest.m54
1 files changed, 54 insertions, 0 deletions
diff --git a/Foundation/GTMNSDictionary+URLArgumentsTest.m b/Foundation/GTMNSDictionary+URLArgumentsTest.m
new file mode 100644
index 0000000..94d06b9
--- /dev/null
+++ b/Foundation/GTMNSDictionary+URLArgumentsTest.m
@@ -0,0 +1,54 @@
+//
+// GTMNSDictionary+URLArgumentsTest.m
+//
+// Copyright 2006-2008 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not
+// use this file except in compliance with the License. You may obtain a copy
+// of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+// License for the specific language governing permissions and limitations under
+// the License.
+//
+
+#import "GTMSenTestCase.h"
+#import "GTMNSDictionary+URLArguments.h"
+#import "GTMDefines.h"
+
+@interface GTMNSDictionary_URLArgumentsTest : SenTestCase
+@end
+
+@implementation GTMNSDictionary_URLArgumentsTest
+
+- (void)testArgumentsString {
+ STAssertEqualObjects([[NSDictionary dictionary] gtm_httpArgumentsString], @"",
+ @"- empty dictionary should give an empty string");
+ STAssertEqualObjects([[NSDictionary dictionaryWithObject:@"123" forKey:@"abc"] gtm_httpArgumentsString],
+ @"abc=123",
+ @"- simple one-pair dictionary should work");
+ NSDictionary* arguments = [NSDictionary dictionaryWithObjectsAndKeys:
+ @"1+1!=3 & 2*6/3=4", @"complex",
+ @"specialkey", @"a+b",
+ nil];
+ NSString* argumentString = [arguments gtm_httpArgumentsString];
+ // check for individual pieces since order is not guaranteed
+ NSString* component1 = @"a%2Bb=specialkey";
+ NSString* component2 = @"complex=1%2B1%21%3D3%20%26%202%2A6%2F3%3D4";
+ STAssertNotEquals([argumentString rangeOfString:component1].location, (NSUInteger)NSNotFound,
+ @"- '%@' not found in '%@'", component1, argumentString);
+ STAssertNotEquals([argumentString rangeOfString:component2].location, (NSUInteger)NSNotFound,
+ @"- '%@' not found in '%@'", component2, argumentString);
+ STAssertNotEquals([argumentString rangeOfString:@"&"].location, (NSUInteger)NSNotFound,
+ @"- special characters should be escaped");
+ STAssertNotEquals([argumentString characterAtIndex:0], (unichar)'&',
+ @"- there should be no & at the beginning of the string");
+ STAssertNotEquals([argumentString characterAtIndex:([argumentString length] - 1)], (unichar)'&',
+ @"- there should be no & at the end of the string");
+}
+
+@end