/core/externals/update-engine/externals/google-toolbox-for-mac/Foundation/GTMNSDictionary+CaseInsensitiveTest.m
http://macfuse.googlecode.com/ · Objective C · 119 lines · 74 code · 28 blank · 17 comment · 2 complexity · 1bbf32c1d921c293476936f150eb86b0 MD5 · raw file
- //
- // GTMNSDictionary+CaseInsensitiveTest.m
- //
- // Copyright 2009 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+CaseInsensitive.h"
- @interface GTMNSDictionary_CaseInsensitiveTest : GTMTestCase
- @end
- @implementation GTMNSDictionary_CaseInsensitiveTest
- - (void)testNSDictionaryCaseInsensitiveAdditions {
- NSURL *objKey = [NSURL URLWithString:@"http://WWW.Google.COM/"];
- NSURL *lcObjKey = [NSURL URLWithString:[[objKey absoluteString]
- lowercaseString]];
- NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
- @"value", @"key",
- @"value", @"KEY",
- @"bar", @"FOO",
- @"yes", objKey,
- nil];
- NSDictionary *ciDict =
- [NSDictionary gtm_dictionaryWithDictionaryCaseInsensitive:dict];
- STAssertNotNil(ciDict, @"gtm_dictionaryWithDictionaryCaseInsensitive failed");
- STAssertTrue([ciDict count] == 3,
- @"wrong count, multiple 'key' entries should be folded.");
- STAssertEqualStrings([ciDict objectForKey:@"foo"], @"bar",
- @"case insensitive key lookup failed");
- STAssertEqualStrings([ciDict objectForKey:@"kEy"], @"value",
- @"case insensitive key lookup failed");
- STAssertNotNil([ciDict objectForKey:objKey],
- @"exact matches on non-NSString objects should still work.");
- STAssertNil([ciDict objectForKey:lcObjKey],
- @"only NSString and subclasses are case-insensitive.");
- STAssertNotNil([NSDictionary gtm_dictionaryWithDictionaryCaseInsensitive:
- [NSDictionary dictionary]],
- @"empty dictionary should not return nil");
- STAssertNotNil([NSDictionary gtm_dictionaryWithDictionaryCaseInsensitive:
- nil],
- @"nil dictionary should return empty dictionary");
- STAssertNotNil([[[NSDictionary alloc] gtm_initWithDictionaryCaseInsensitive:
- nil] autorelease],
- @"nil dictionary should return empty dictionary");
- }
- - (void)testNSMutableDictionaryCaseInsensitiveAdditions {
- NSURL *objKey = [NSURL URLWithString:@"http://WWW.Google.COM/"];
- NSURL *lcObjKey = [NSURL URLWithString:[[objKey absoluteString]
- lowercaseString]];
- NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
- @"value", @"key",
- @"value", @"KEY",
- @"bar", @"FOO",
- @"yes", objKey,
- nil];
- NSMutableDictionary *ciDict =
- [NSMutableDictionary gtm_dictionaryWithDictionaryCaseInsensitive:dict];
- STAssertNotNil(ciDict, @"gtm_dictionaryWithDictionaryCaseInsensitive failed");
- STAssertTrue([ciDict count] == 3,
- @"wrong count, multiple 'key' entries should be folded.");
- STAssertEqualStrings([ciDict objectForKey:@"foo"], @"bar",
- @"case insensitive key lookup failed");
- STAssertEqualStrings([ciDict objectForKey:@"kEy"], @"value",
- @"case insensitive key lookup failed");
- STAssertNotNil([ciDict objectForKey:objKey],
- @"exact matches on non-NSString objects should still work.");
- STAssertNil([ciDict objectForKey:lcObjKey],
- @"only NSString and subclasses are case-insensitive.");
- NSObject *obj = [[[NSObject alloc] init] autorelease];
- [ciDict setObject:obj forKey:@"kEy"];
- STAssertEquals([ciDict objectForKey:@"key"], obj,
- @"mutable dictionary value not overwritten");
- STAssertNotNil(
- [NSMutableDictionary gtm_dictionaryWithDictionaryCaseInsensitive:
- [NSDictionary dictionary]],
- @"empty dictionary should not return nil");
- STAssertNotNil(
- [NSMutableDictionary gtm_dictionaryWithDictionaryCaseInsensitive:nil],
- @"nil dictionary should return empty dictionary");
- }
- @end