aboutsummaryrefslogtreecommitdiff
path: root/Foundation/GTMLightweightProxyTest.m
diff options
context:
space:
mode:
authorGravatar thomasvl@gmail.com <thomasvl@gmail.com@7dc7ac4e-7543-0410-b95c-c1676fc8e2a3>2008-11-17 21:30:25 +0000
committerGravatar thomasvl@gmail.com <thomasvl@gmail.com@7dc7ac4e-7543-0410-b95c-c1676fc8e2a3>2008-11-17 21:30:25 +0000
commit6fdb9dfef2c10696fc38a3ad860e014782b7d698 (patch)
tree0869bd773375520a3238a6885f9a6662b860d26b /Foundation/GTMLightweightProxyTest.m
parent8ddb49cefd01b220ad5e1d2f0060b2a0ad54efdb (diff)
- Added GTMLightweightProxy
- Added installer for the spotlight importers.
Diffstat (limited to 'Foundation/GTMLightweightProxyTest.m')
-rw-r--r--Foundation/GTMLightweightProxyTest.m77
1 files changed, 77 insertions, 0 deletions
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