From 6fdb9dfef2c10696fc38a3ad860e014782b7d698 Mon Sep 17 00:00:00 2001 From: "thomasvl@gmail.com" Date: Mon, 17 Nov 2008 21:30:25 +0000 Subject: - Added GTMLightweightProxy - Added installer for the spotlight importers. --- Foundation/GTMLightweightProxyTest.m | 77 ++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 Foundation/GTMLightweightProxyTest.m (limited to 'Foundation/GTMLightweightProxyTest.m') diff --git a/Foundation/GTMLightweightProxyTest.m b/Foundation/GTMLightweightProxyTest.m new file mode 100644 index 0000000..ad0961e --- /dev/null +++ b/Foundation/GTMLightweightProxyTest.m @@ -0,0 +1,77 @@ +// +// GTMLightweightProxyTest.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 "GTMLightweightProxy.h" + +@interface GTMLightweightProxyTest : GTMTestCase +- (BOOL)returnYes; +@end + +// Declare a non-existent method that we can call without compiler warnings. +@interface GTMLightweightProxyTest (GTMLightweightProxyTestMadeUpMethodDeclaration) +- (void)someMadeUpMethod; +@end + +@implementation GTMLightweightProxyTest + +- (void)testProxy { + id proxy = [[GTMLightweightProxy alloc] initWithRepresentedObject:self]; + STAssertEqualObjects(self, [proxy representedObject], @"Represented object setup failed"); + + // Check that it identifies itself as a proxy. + STAssertTrue([proxy isProxy], @"Should identify as a proxy"); + // Check that it passes class requests on + STAssertTrue([proxy isMemberOfClass:[self class]], @"Should pass class requests through"); + + // Check that it claims to respond to its selectors. + STAssertTrue([proxy respondsToSelector:@selector(initWithRepresentedObject:)], + @"Claims not to respond to initWithRepresentedObject:"); + STAssertTrue([proxy respondsToSelector:@selector(representedObject)], + @"Claims not to respond to representedObject:"); + STAssertTrue([proxy respondsToSelector:@selector(setRepresentedObject:)], + @"Claims not to respond to setRepresentedObject:"); + // Check that it responds to its represented object's selectors + STAssertTrue([proxy respondsToSelector:@selector(returnYes)], + @"Claims not to respond to returnYes"); + // ... but not to made up selectors. + STAssertThrows([proxy someMadeUpMethod], @"Calling a bogus method should throw"); + + // Check that callthrough works. + STAssertTrue([proxy returnYes], + @"Calling through to the represented object failed"); + + // Check that nilling out the represented object works. + [proxy setRepresentedObject:nil]; + STAssertTrue([proxy respondsToSelector:@selector(setRepresentedObject:)], + @"Claims not to respond to setRepresentedObject: after nilling out represented object"); + STAssertFalse([proxy respondsToSelector:@selector(returnYes)], + @"Claims to respond to returnYes after nilling out represented object"); + // Calling through once the represented object is nil should fail silently + STAssertNoThrow([proxy returnYes], + @"Calling through without a represented object should fail silently"); + // ... even when they are made up. + STAssertNoThrow([proxy someMadeUpMethod], @"Calling a bogus method on a nilled proxy should not throw"); +} + +// Simple method to test calling through the proxy. +- (BOOL)returnYes { + return YES; +} + +@end -- cgit v1.2.3