/core/externals/update-engine/externals/google-toolbox-for-mac/AppKit/GTMGetURLHandlerTest.m
http://macfuse.googlecode.com/ · Objective C · 83 lines · 53 code · 13 blank · 17 comment · 1 complexity · 6e8aa980fa89c86276f28dbf9be886f3 MD5 · raw file
- // GTMGetURLHandlerTest.m
- //
- // Copyright 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 "GTMUnitTestDevLog.h"
- static BOOL sURLHandlerWasHit;
- @interface GTMGetURLHandlerBadClassWarning : NSObject
- @end
- @implementation GTMGetURLHandlerBadClassWarning : NSObject
- @end
- @interface GTMGetURLHandlerTest : GTMTestCase
- @end
- @implementation GTMGetURLHandlerTest
- - (BOOL)openURLString:(NSString *)url {
- ProcessSerialNumber psn = { 0, kCurrentProcess };
- NSAppleEventDescriptor *currentProcess
- = [NSAppleEventDescriptor descriptorWithDescriptorType:typeProcessSerialNumber
- bytes:&psn
- length:sizeof(ProcessSerialNumber)];
- NSAppleEventDescriptor *event
- = [NSAppleEventDescriptor appleEventWithEventClass:kInternetEventClass
- eventID:kAEGetURL
- targetDescriptor:currentProcess
- returnID:kAutoGenerateReturnID
- transactionID:kAnyTransactionID];
- NSAppleEventDescriptor *keyDesc
- = [NSAppleEventDescriptor descriptorWithString:url];
- [event setParamDescriptor:keyDesc forKeyword:keyDirectObject];
- OSStatus err = AESendMessage([event aeDesc], NULL, kAEWaitReply, 60);
- return err == noErr ? YES : NO;
- }
- + (BOOL)gtm_openURL:(NSURL*)url {
- sURLHandlerWasHit = !sURLHandlerWasHit;
- return YES;
- }
- - (void)testURLCall {
- sURLHandlerWasHit = NO;
-
- [GTMUnitTestDevLogDebug expectPattern:@"Class GTMGetURLHandlerBadClassWarning "
- @"for URL handler GTMGetURLHandlerBadClassURL .*"];
- [GTMUnitTestDevLogDebug expectPattern:@"Unable to get class "
- @"GTMGetURLHandlerMissingClassWarning for URL handler "
- @"GTMGetURLHandlerMissingClassURL .*"];
- [GTMUnitTestDevLogDebug expectPattern:@"Missing GTMBundleURLClass for URL handler "
- @"GTMGetURLHandlerMissingHandlerURL .*"];
- STAssertTrue([self openURLString:@"gtmgeturlhandlertest://test.foo"], nil);
- STAssertTrue(sURLHandlerWasHit, @"URL handler not called");
-
- STAssertTrue([self openURLString:@"gtmgeturlhandlertest://test.foo"], nil);
- STAssertFalse(sURLHandlerWasHit, @"URL handler not called 2");
-
- // test the two URL schemes with bad entries
- STAssertTrue([self openURLString:@"gtmgeturlhandlerbadclasstest://test.foo"],
- nil);
-
- STAssertTrue([self openURLString:@"gtmgeturlhandlermissingclasstest://test.foo"],
- nil);
- STAssertTrue([self openURLString:@"gtmgeturlhandlermissinghandlerurl://test.foo"],
- nil);
- }
- @end