From 32654998f055c85d9a70b6f415abf79dd81c601e Mon Sep 17 00:00:00 2001 From: "gtm.daemon" Date: Thu, 1 Mar 2012 17:00:20 +0000 Subject: [Author: msenesi] Flexible builder for URLs. R=altse,dmaclach,thomasvl APPROVED=dmaclach --- Foundation/GTMURLBuilderTest.m | 108 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 Foundation/GTMURLBuilderTest.m (limited to 'Foundation/GTMURLBuilderTest.m') diff --git a/Foundation/GTMURLBuilderTest.m b/Foundation/GTMURLBuilderTest.m new file mode 100644 index 0000000..096c09b --- /dev/null +++ b/Foundation/GTMURLBuilderTest.m @@ -0,0 +1,108 @@ +// +// GTMURLBuilderTest.m +// +// Copyright 2012 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 "GTMURLBuilder.h" + +#import "GTMSenTestCase.h" + +@interface GTMURLBuilderTest : GTMTestCase +@end + +@implementation GTMURLBuilderTest + +- (void)testParseURL { + GTMURLBuilder *URLBuilder = [[[GTMURLBuilder alloc] + initWithString:@"http://google.com:8080/pathA/pathB?param=val"] + autorelease]; + STAssertEqualStrings(@"http://google.com:8080/pathA/pathB?param=val", + [URLBuilder URLString], nil); + STAssertEqualStrings(@"val", [URLBuilder valueForParameter:@"param"], nil); + URLBuilder = [GTMURLBuilder builderWithString: + @"http://google.com:8080/pathA/pathB?param=val"]; + STAssertEqualStrings(@"http://google.com:8080/pathA/pathB?param=val", + [URLBuilder URLString], nil); + STAssertEqualStrings(@"val", [URLBuilder valueForParameter:@"param"], nil); +} + +- (void)testMailToHandling { + GTMURLBuilder *URLBuilder = + [GTMURLBuilder builderWithString:@"mailto:ytmapp-ios@google.com"]; + [URLBuilder setValue:@"blah" forParameter:@"subject"]; + STAssertEqualStrings(@"mailto:ytmapp-ios@google.com?subject=blah", + [URLBuilder URLString], nil); +} + +- (void)testIsEqualTo { + GTMURLBuilder *URLBuilderA = [GTMURLBuilder + builderWithString:@"http://google.com/pathA/pathB?a=b&c=d"]; + GTMURLBuilder *URLBuilderB = + [GTMURLBuilder builderWithString:@"http://google.com/pathA/pathB"]; + [URLBuilderB setValue:@"d" forParameter:@"c"]; + [URLBuilderB setValue:@"b" forParameter:@"a"]; + STAssertTrue([URLBuilderA isEqual:URLBuilderB], nil); + [URLBuilderB setValue:@"c" forParameter:@"a"]; + STAssertFalse([URLBuilderA isEqual:URLBuilderB], nil); + [URLBuilderB setValue:@"b" forParameter:@"a"]; + [URLBuilderB setValue:@"f" forParameter:@"e"]; + STAssertFalse([URLBuilderA isEqual:URLBuilderB], nil); +} + +- (void)testURLWithString { + STAssertEqualStrings(@";/?:@&=+$,", + [[GTMURLBuilder URLWithString:@";/?:@&=+$,"] + absoluteString], + nil); + STAssertEqualStrings(@"a%20b%20&%20c%20-%20URL=http://test.com/", + [[GTMURLBuilder URLWithString: + @"a b & c - URL=http://test.com/"] absoluteString], + nil); +} + +- (void)testSetParameters { + GTMURLBuilder *URLBuilderA = + [GTMURLBuilder builderWithString:@"http://google.com/"]; + GTMURLBuilder *URLBuilderB = + [GTMURLBuilder builderWithString:@"http://google.com/?p1=x&p2=b"]; + NSDictionary *params = + [NSDictionary dictionaryWithObjectsAndKeys:@"a", @"p1", @"b", @"p2", nil]; + [URLBuilderA setParameters:params]; + [URLBuilderA setValue:@"x" forParameter:@"p1"]; + STAssertTrue([URLBuilderA isEqual:URLBuilderB], nil); +} + +- (void)testReplaceParameters { + GTMURLBuilder *URLBuilderA = + [GTMURLBuilder builderWithString:@"http://google.com/?p1=y"]; + GTMURLBuilder *URLBuilderB = + [GTMURLBuilder builderWithString:@"http://google.com/?p1=x&p2=b"]; + NSDictionary *params = + [NSDictionary dictionaryWithObjectsAndKeys:@"a", @"p1", @"b", @"p2", nil]; + [URLBuilderA setParameters:params]; + [URLBuilderA setValue:@"x" forParameter:@"p1"]; + STAssertTrue([URLBuilderA isEqual:URLBuilderB], nil); +} + +- (void)testURLPathParsing { + GTMURLBuilder *URLBuilder = + [GTMURLBuilder builderWithString:@"http://google.com/"]; + STAssertEqualStrings(@"http://google.com/", [URLBuilder URLString], nil); + URLBuilder = [GTMURLBuilder builderWithString:@"http://google.com/pA/pB"]; + STAssertEqualStrings(@"http://google.com/pA/pB", [URLBuilder URLString], nil); +} + +@end -- cgit v1.2.3