diff options
Diffstat (limited to 'AppKit/GTMHotKeyTextFieldTest.m')
-rw-r--r-- | AppKit/GTMHotKeyTextFieldTest.m | 382 |
1 files changed, 158 insertions, 224 deletions
diff --git a/AppKit/GTMHotKeyTextFieldTest.m b/AppKit/GTMHotKeyTextFieldTest.m index e48ee94..59c46f8 100644 --- a/AppKit/GTMHotKeyTextFieldTest.m +++ b/AppKit/GTMHotKeyTextFieldTest.m @@ -1,13 +1,13 @@ // GTMHotKeyTextFieldTest.m // -// Copyright 2006-2008 Google Inc. +// Copyright 2006-2010 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 @@ -21,32 +21,28 @@ #import "GTMUnitTestDevLog.h" #import <Carbon/Carbon.h> -@interface GTMHotKeyTextField (PrivateMethods) +@interface GTMHotKeyTextFieldCell (PrivateMethods) // Private methods which we want to access to test -+ (BOOL)isValidHotKey:(NSDictionary *)hotKey; -+ (NSString *)displayStringForHotKey:(NSDictionary *)hotKey; ++ (NSString *)displayStringForHotKey:(GTMHotKey *)hotKey; @end @interface GTMHotKeyTextFieldTest : GTMTestCase { @private GTMHotKeyTextFieldTestController *controller_; - NSMutableDictionary *hotkeyValues_; + GTMHotKey *hotKey_; } -- (NSDictionary *)hotkeyValues; -- (void)setHotkeyValues:(NSDictionary*)values; +- (GTMHotKey *)hotKey; +- (void)setHotKey:(GTMHotKey*)hotkey; @end @implementation GTMHotKeyTextFieldTest - (void)setUp { controller_ = [[GTMHotKeyTextFieldTestController alloc] init]; - hotkeyValues_ - = [[NSMutableDictionary alloc] initWithObjectsAndKeys: - [NSNumber numberWithInt:NSCommandKeyMask], kGTMHotKeyModifierFlagsKey, - [NSNumber numberWithInt:42], kGTMHotKeyKeyCodeKey, - [NSNumber numberWithBool:NO], kGTMHotKeyDoubledModifierKey, - nil]; - STAssertNotNil(hotkeyValues_, nil); + hotKey_ = [[GTMHotKey alloc] initWithKeyCode:42 + modifiers:NSCommandKeyMask + useDoubledModifier:NO]; + STAssertNotNil(hotKey_, nil); STAssertNotNil(controller_, nil); STAssertNotNil([controller_ window], nil); } @@ -54,62 +50,62 @@ - (void)tearDown { [controller_ close]; [controller_ release]; - [hotkeyValues_ release]; + [hotKey_ release]; } -- (NSDictionary *)hotkeyValues { - return hotkeyValues_; +- (GTMHotKey *)hotKey { + return hotKey_; } -- (void)setHotkeyValues:(NSDictionary*)values { - [hotkeyValues_ autorelease]; - hotkeyValues_ = [values mutableCopy]; +- (void)setHotKey:(GTMHotKey*)hotKey { + [hotKey_ autorelease]; + hotKey_ = [hotKey retain]; } - (void)testStringForModifierFlags { - + // Make sure only the flags we expect generate things in their strings - STAssertEquals([[GTMHotKeyTextField stringForModifierFlags:NSAlphaShiftKeyMask] length], + STAssertEquals([[GTMHotKeyTextFieldCell stringForModifierFlags:NSAlphaShiftKeyMask] length], (NSUInteger)0, nil); - STAssertEquals([[GTMHotKeyTextField stringForModifierFlags:NSShiftKeyMask] length], + STAssertEquals([[GTMHotKeyTextFieldCell stringForModifierFlags:NSShiftKeyMask] length], (NSUInteger)1, nil); - STAssertEquals([[GTMHotKeyTextField stringForModifierFlags:NSControlKeyMask] length], + STAssertEquals([[GTMHotKeyTextFieldCell stringForModifierFlags:NSControlKeyMask] length], (NSUInteger)1, nil); - STAssertEquals([[GTMHotKeyTextField stringForModifierFlags:NSAlternateKeyMask] length], + STAssertEquals([[GTMHotKeyTextFieldCell stringForModifierFlags:NSAlternateKeyMask] length], (NSUInteger)1, nil); - STAssertEquals([[GTMHotKeyTextField stringForModifierFlags:NSCommandKeyMask] length], + STAssertEquals([[GTMHotKeyTextFieldCell stringForModifierFlags:NSCommandKeyMask] length], (NSUInteger)1, nil); - STAssertEquals([[GTMHotKeyTextField stringForModifierFlags:NSNumericPadKeyMask] length], + STAssertEquals([[GTMHotKeyTextFieldCell stringForModifierFlags:NSNumericPadKeyMask] length], (NSUInteger)0, nil); - STAssertEquals([[GTMHotKeyTextField stringForModifierFlags:NSHelpKeyMask] length], + STAssertEquals([[GTMHotKeyTextFieldCell stringForModifierFlags:NSHelpKeyMask] length], (NSUInteger)0, nil); - STAssertEquals([[GTMHotKeyTextField stringForModifierFlags:NSFunctionKeyMask] length], + STAssertEquals([[GTMHotKeyTextFieldCell stringForModifierFlags:NSFunctionKeyMask] length], (NSUInteger)0, nil); - + // And some quick checks combining flags to make sure the string gets longer - STAssertEquals([[GTMHotKeyTextField stringForModifierFlags:(NSShiftKeyMask | - NSAlternateKeyMask)] length], + STAssertEquals([[GTMHotKeyTextFieldCell stringForModifierFlags:(NSShiftKeyMask | + NSAlternateKeyMask)] length], (NSUInteger)2, nil); - STAssertEquals([[GTMHotKeyTextField stringForModifierFlags:(NSShiftKeyMask | - NSAlternateKeyMask | - NSCommandKeyMask)] length], + STAssertEquals([[GTMHotKeyTextFieldCell stringForModifierFlags:(NSShiftKeyMask | + NSAlternateKeyMask | + NSCommandKeyMask)] length], (NSUInteger)3, nil); - STAssertEquals([[GTMHotKeyTextField stringForModifierFlags:(NSShiftKeyMask | - NSAlternateKeyMask | - NSCommandKeyMask | - NSControlKeyMask)] length], + STAssertEquals([[GTMHotKeyTextFieldCell stringForModifierFlags:(NSShiftKeyMask | + NSAlternateKeyMask | + NSCommandKeyMask | + NSControlKeyMask)] length], (NSUInteger)4, nil); - + } - (void)testStringForKeycode_useGlyph_resourceBundle { NSBundle *bundle = [NSBundle bundleForClass:[self class]]; STAssertNotNil(bundle, @"failed to get our bundle?"); NSString *str; - + // We need a better test, but for now, we'll just loop through things we know // we handle. - + // TODO: we need to force the pre leopard code path during tests. UInt16 testData[] = { @@ -120,10 +116,10 @@ for (int useGlyph = 0 ; useGlyph < 2 ; ++useGlyph) { for (size_t i = 0; i < (sizeof(testData) / sizeof(UInt16)); ++i) { UInt16 keycode = testData[i]; - - str = [GTMHotKeyTextField stringForKeycode:keycode - useGlyph:useGlyph - resourceBundle:bundle]; + + str = [GTMHotKeyTextFieldCell stringForKeycode:keycode + useGlyph:useGlyph + resourceBundle:bundle]; STAssertNotNil(str, @"failed to get a string for keycode %u (useGlyph:%@)", keycode, (useGlyph ? @"YES" : @"NO")); @@ -135,117 +131,29 @@ } - (void)testGTMHotKeyPrettyString { - NSDictionary *hkDict; - - hkDict = [NSDictionary dictionaryWithObjectsAndKeys: - [NSNumber numberWithBool:NO], - kGTMHotKeyDoubledModifierKey, - [NSNumber numberWithUnsignedInt:114], - kGTMHotKeyKeyCodeKey, - [NSNumber numberWithUnsignedInt:NSCommandKeyMask], - kGTMHotKeyModifierFlagsKey, - nil]; - STAssertNotNil(hkDict, nil); - STAssertNotNil([GTMHotKeyTextField displayStringForHotKey:hkDict], nil); - - hkDict = [NSDictionary dictionaryWithObjectsAndKeys: - [NSNumber numberWithUnsignedInt:114], - kGTMHotKeyKeyCodeKey, - [NSNumber numberWithUnsignedInt:NSCommandKeyMask], - kGTMHotKeyModifierFlagsKey, - nil]; - STAssertNotNil(hkDict, nil); - STAssertNotNil([GTMHotKeyTextField displayStringForHotKey:hkDict], nil); - - hkDict = [NSDictionary dictionaryWithObjectsAndKeys: - [NSNumber numberWithBool:NO], - kGTMHotKeyDoubledModifierKey, - [NSNumber numberWithUnsignedInt:NSCommandKeyMask], - kGTMHotKeyModifierFlagsKey, - nil]; - STAssertNotNil(hkDict, nil); - STAssertNil([GTMHotKeyTextField displayStringForHotKey:hkDict], nil); - - hkDict = [NSDictionary dictionaryWithObjectsAndKeys: - [NSNumber numberWithBool:NO], - kGTMHotKeyDoubledModifierKey, - [NSNumber numberWithUnsignedInt:'A'], - kGTMHotKeyKeyCodeKey, - nil]; - STAssertNotNil(hkDict, nil); - STAssertNil([GTMHotKeyTextField displayStringForHotKey:hkDict], nil); - - hkDict = [NSDictionary dictionary]; - STAssertNotNil(hkDict, nil); - STAssertNil([GTMHotKeyTextField displayStringForHotKey:hkDict], nil); - - STAssertNil([GTMHotKeyTextField displayStringForHotKey:nil], nil); - -} + GTMHotKey *hotKey = [GTMHotKey hotKeyWithKeyCode:114 + modifiers:NSCommandKeyMask + useDoubledModifier:NO]; + STAssertNotNil(hotKey, nil); + STAssertNotNil([GTMHotKeyTextFieldCell displayStringForHotKey:hotKey], nil); + + hotKey = [GTMHotKey hotKeyWithKeyCode:1 + modifiers:0 + useDoubledModifier:NO]; -- (void)testGTMHotKeyDictionaryAppearsValid { - NSDictionary *hkDict; - - hkDict = [NSDictionary dictionaryWithObjectsAndKeys: - [NSNumber numberWithBool:NO], - kGTMHotKeyDoubledModifierKey, - [NSNumber numberWithUnsignedInt:114], - kGTMHotKeyKeyCodeKey, - [NSNumber numberWithUnsignedInt:NSCommandKeyMask], - kGTMHotKeyModifierFlagsKey, - nil]; - STAssertNotNil(hkDict, nil); - STAssertTrue([GTMHotKeyTextField isValidHotKey:hkDict], nil); - - hkDict = [NSDictionary dictionaryWithObjectsAndKeys: - [NSNumber numberWithUnsignedInt:114], - kGTMHotKeyKeyCodeKey, - [NSNumber numberWithUnsignedInt:NSCommandKeyMask], - kGTMHotKeyModifierFlagsKey, - nil]; - STAssertNotNil(hkDict, nil); - STAssertFalse([GTMHotKeyTextField isValidHotKey:hkDict], nil); - - hkDict = [NSDictionary dictionaryWithObjectsAndKeys: - [NSNumber numberWithBool:NO], - kGTMHotKeyDoubledModifierKey, - [NSNumber numberWithUnsignedInt:NSCommandKeyMask], - kGTMHotKeyModifierFlagsKey, - nil]; - STAssertNotNil(hkDict, nil); - STAssertFalse([GTMHotKeyTextField isValidHotKey:hkDict], nil); - - hkDict = [NSDictionary dictionaryWithObjectsAndKeys: - [NSNumber numberWithBool:NO], - kGTMHotKeyDoubledModifierKey, - [NSNumber numberWithUnsignedInt:114], - kGTMHotKeyKeyCodeKey, - nil]; - STAssertNotNil(hkDict, nil); - STAssertFalse([GTMHotKeyTextField isValidHotKey:hkDict], nil); - - hkDict = [NSDictionary dictionary]; - STAssertNotNil(hkDict, nil); - STAssertFalse([GTMHotKeyTextField isValidHotKey:hkDict], nil); - - STAssertFalse([GTMHotKeyTextField isValidHotKey:nil], nil); - - // Make sure it doesn't choke w/ an object of the wrong time (since the dicts - // have to be saved/reloaded. - hkDict = (id)[NSString string]; - STAssertNotNil(hkDict, nil); - STAssertFalse([GTMHotKeyTextField isValidHotKey:hkDict], nil); + STAssertNotNil(hotKey, nil); + STAssertNil([GTMHotKeyTextFieldCell displayStringForHotKey:hotKey], nil); } - (void)testFieldEditorSettersAndGetters { NSWindow *window = [controller_ window]; GTMHotKeyTextField *field = [controller_ view]; STAssertNotNil(field, nil); - GTMHotKeyFieldEditor *editor + GTMHotKeyFieldEditor *editor = (GTMHotKeyFieldEditor *)[window fieldEditor:YES forObject:field]; STAssertTrue([editor isMemberOfClass:[GTMHotKeyFieldEditor class]], nil); - STAssertEqualObjects(editor, - [GTMHotKeyFieldEditor sharedHotKeyFieldEditor], + STAssertEqualObjects(editor, + [GTMHotKeyFieldEditor sharedHotKeyFieldEditor], nil); SEL selectors[] = { @@ -256,7 +164,7 @@ for (size_t i = 0; i < sizeof(selectors) / sizeof(selectors[0]); ++i) { NSArray *array = [editor performSelector:selectors[i]]; STAssertNotNil(array, nil); - STAssertEquals([array count], (NSUInteger)0, + STAssertEquals([array count], (NSUInteger)0, @"Failed Selector: %@", NSStringFromSelector(selectors[i])); } } @@ -264,8 +172,9 @@ - (void)testTextFieldSettersAndGetters { GTMHotKeyTextField *field = [controller_ view]; STAssertNotNil(field, nil); - NSString *expectedNumberString = @"Hot key fields don't take numbers."; - [GTMUnitTestDevLog expect:6 casesOfString:@"%@", expectedNumberString]; + NSString *expectedString + = @"Hot key fields want hot key dictionaries as object values."; + [GTMUnitTestDevLog expect:3 casesOfString:@"%@", expectedString]; [field setDoubleValue:2]; [field setIntValue:-1]; [field setFloatValue:0]; @@ -273,7 +182,7 @@ STAssertEquals([field intValue], 0, nil); STAssertEquals([field floatValue], 0.0f, nil); #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 - [GTMUnitTestDevLog expect:2 casesOfString:@"%@", expectedNumberString]; + [GTMUnitTestDevLog expectString:expectedString]; [field setIntegerValue:5]; STAssertEquals([field integerValue], (NSInteger)0, nil); #endif @@ -283,61 +192,62 @@ @selector(takeFloatValueFrom:), @selector(takeIntValueFrom:) }; - for (size_t i = 0; + for (size_t i = 0; i < sizeof(takeNumberSels) / sizeof(takeNumberSels[0]); ++i) { - [GTMUnitTestDevLog expect:2 casesOfString:@"%@", expectedNumberString]; + [GTMUnitTestDevLog expect:2 casesOfString:@"%@", expectedString]; [field performSelector:takeNumberSels[i] withObject:self]; [field performSelector:takeNumberSels[i] withObject:nil]; } - NSString *expectedStringString - = @"Hot key fields want dictionaries, not strings."; - [GTMUnitTestDevLog expect:6 casesOfString:@"%@", expectedStringString]; + [GTMUnitTestDevLog expect:6 casesOfString:@"%@", expectedString]; [field takeStringValueFrom:self]; [field takeStringValueFrom:nil]; [field setStringValue:nil]; [field setStringValue:@"foo"]; - - NSAttributedString *attrString + + NSAttributedString *attrString = [[[NSAttributedString alloc] initWithString:@"foo"] autorelease]; [field setAttributedStringValue:nil]; [field setAttributedStringValue:attrString]; - + STAssertNil([field formatter], nil); - [GTMUnitTestDevLog expectString:@"Hot key fields don't accept formatters."]; [field setFormatter:nil]; - - [GTMUnitTestDevLog expect:2 casesOfString: - @"Hot key fields want dictionaries via bindings, not from controls."]; + NSFormatter *testFormatter = [[[NSFormatter alloc] init] autorelease]; + [GTMUnitTestDevLog expectString:@"Hot key fields don't accept formatters."]; + [field setFormatter:testFormatter]; + + [GTMUnitTestDevLog expectString:expectedString]; [field takeObjectValueFrom:self]; + + // Setting to nil is valid. [field takeObjectValueFrom:nil]; } -- (void)pressKey:(NSString *)key code:(NSInteger)code +- (void)pressKey:(NSString *)key code:(NSInteger)code modifierFlags:(NSInteger)flags window:(NSWindow *)window { NSInteger windNum = [window windowNumber]; NSGraphicsContext *context = [NSGraphicsContext currentContext]; EventTime evtTime = GetCurrentEventTime(); NSPoint loc = [NSEvent mouseLocation]; - NSEvent *keyDownEvt = [NSEvent keyEventWithType:NSKeyDown - location:loc - modifierFlags:flags + NSEvent *keyDownEvt = [NSEvent keyEventWithType:NSKeyDown + location:loc + modifierFlags:flags timestamp:evtTime - windowNumber:windNum - context:context - characters:key - charactersIgnoringModifiers:key - isARepeat:NO + windowNumber:windNum + context:context + characters:key + charactersIgnoringModifiers:key + isARepeat:NO keyCode:code]; - NSEvent *keyUpEvt = [NSEvent keyEventWithType:NSKeyUp - location:loc + NSEvent *keyUpEvt = [NSEvent keyEventWithType:NSKeyUp + location:loc modifierFlags:flags timestamp:evtTime - windowNumber:windNum - context:context - characters:key - charactersIgnoringModifiers:key - isARepeat:NO + windowNumber:windNum + context:context + characters:key + charactersIgnoringModifiers:key + isARepeat:NO keyCode:code]; STAssertNotNil(keyDownEvt, nil); STAssertNotNil(keyUpEvt, nil); @@ -346,107 +256,131 @@ } - (void)testTextFieldBindings { - NSObjectController *controller + NSObjectController *controller = [[[NSObjectController alloc] init] autorelease]; - [controller bind:NSContentBinding - toObject:self - withKeyPath:@"self" + [controller setObjectClass:[self class]]; + [controller bind:NSContentBinding + toObject:self + withKeyPath:@"self" options:nil]; STAssertNotNil(controller, nil); GTMHotKeyTextField *field = [controller_ view]; STAssertNotNil(field, nil); - [field bind:NSValueBinding - toObject:controller - withKeyPath:@"selection.hotkeyValues" + [field bind:NSValueBinding + toObject:controller + withKeyPath:@"selection.hotKey" options:nil]; id value = [field objectValue]; - STAssertEqualObjects(value, hotkeyValues_, nil); + STAssertEqualObjects(value, hotKey_, nil); NSString *stringValue = [field stringValue]; STAssertEqualObjects(stringValue, @"⌘\\", nil); NSAttributedString *attrStringValue = [field attributedStringValue]; STAssertEqualObjects([attrStringValue string], stringValue, nil); - // Try changing some values - [self willChangeValueForKey:@"hotkeyValues"]; - [hotkeyValues_ setObject:[NSNumber numberWithInt:43] - forKey:kGTMHotKeyKeyCodeKey]; - [self didChangeValueForKey:@"hotkeyValues"]; + GTMHotKey *newHotKey = [GTMHotKey hotKeyWithKeyCode:43 + modifiers:NSCommandKeyMask + useDoubledModifier:NO]; + [self setHotKey:newHotKey]; stringValue = [field stringValue]; STAssertEqualObjects(stringValue, @"⌘,", nil); - + // Now try some typing NSWindow *window = [controller_ window]; STAssertTrue([window makeFirstResponder:field], nil); [self pressKey:@"A" code:0 modifierFlags:NSShiftKeyMask window:window]; stringValue = [field stringValue]; STAssertEqualObjects(stringValue, @"⇧A", nil); - + // field is supposed to give up first responder when editing is done. STAssertNotEqualObjects([window firstResponder], field, nil); - + // Do NOT attempt to set the key via pressKey to the same cmd-key combo // as a menu item. This works fine on Leopard, but fails on Tiger (and fails // on Leopard if you have linked to the Tiger libs). I hope control-shift-opt // J won't be used in our simple test app. STAssertTrue([window makeFirstResponder:field], nil); - [self pressKey:@"J" - code:38 - modifierFlags:NSAlternateKeyMask | NSShiftKeyMask | NSControlKeyMask + int modifiers = NSAlternateKeyMask | NSShiftKeyMask | NSControlKeyMask; + [self pressKey:@"J" + code:38 + modifierFlags:modifiers window:window]; stringValue = [field stringValue]; STAssertEqualObjects(stringValue, @"⌃⌥⇧J", nil); - + GTMHotKey *cmdJHotKey = [GTMHotKey hotKeyWithKeyCode:38 + modifiers:modifiers + useDoubledModifier:NO]; + STAssertEqualObjects(cmdJHotKey, hotKey_, nil); + // Try without a modifier. This should fail. STAssertTrue([window makeFirstResponder:field], nil); [self pressKey:@"j" code:38 modifierFlags:0 window:window]; stringValue = [field stringValue]; STAssertEqualObjects(stringValue, @"⌃⌥⇧J", nil); - + // Try cmd-q this should fail STAssertTrue([window makeFirstResponder:field], nil); [self pressKey:@"Q" code:12 modifierFlags:NSCommandKeyMask window:window]; stringValue = [field stringValue]; STAssertEqualObjects(stringValue, @"⌃⌥⇧J", nil); - + // Try cmd-w this should fail STAssertTrue([window makeFirstResponder:field], nil); [self pressKey:@"W" code:13 modifierFlags:NSCommandKeyMask window:window]; stringValue = [field stringValue]; STAssertEqualObjects(stringValue, @"⌃⌥⇧J", nil); - + // Try cmd-tab this should fail STAssertTrue([window makeFirstResponder:field], nil); [self pressKey:@"\t" code:48 modifierFlags:NSCommandKeyMask window:window]; stringValue = [field stringValue]; STAssertEqualObjects(stringValue, @"⌃⌥⇧J", nil); - - // Do it by dictionary - NSDictionary *cmdSHotKey - = [NSDictionary dictionaryWithObjectsAndKeys: - [NSNumber numberWithInt:NSCommandKeyMask], kGTMHotKeyModifierFlagsKey, - [NSNumber numberWithInt:1], kGTMHotKeyKeyCodeKey, - [NSNumber numberWithBool:NO], kGTMHotKeyDoubledModifierKey, - nil]; - [field setObjectValue:cmdSHotKey]; + + // Do it by hotkey + GTMHotKey *cmdSHotKey = [GTMHotKey hotKeyWithKeyCode:1 + modifiers:NSCommandKeyMask + useDoubledModifier:NO]; + [controller setValue:cmdSHotKey forKeyPath:@"selection.hotKey"]; stringValue = [field stringValue]; STAssertEqualObjects(stringValue, @"⌘S", nil); - + // Check to make sure the binding stuck - STAssertEqualObjects(cmdSHotKey, hotkeyValues_, nil); - + STAssertEqualObjects(cmdSHotKey, hotKey_, nil); + + // Check to make sure that programatic edits don't modify our model + [field setObjectValue:cmdJHotKey]; + STAssertEqualObjects(cmdSHotKey, hotKey_, nil); + [field unbind:NSValueBinding]; [controller unbind:NSContentBinding]; - - NSDictionary *cmdDHotKey - = [NSDictionary dictionaryWithObjectsAndKeys: - [NSNumber numberWithInt:NSCommandKeyMask], kGTMHotKeyModifierFlagsKey, - [NSNumber numberWithInt:2], kGTMHotKeyKeyCodeKey, - [NSNumber numberWithBool:NO], kGTMHotKeyDoubledModifierKey, - nil]; + + GTMHotKey *cmdDHotKey = [GTMHotKey hotKeyWithKeyCode:2 + modifiers:NSCommandKeyMask + useDoubledModifier:NO]; [field setObjectValue:cmdDHotKey]; stringValue = [field stringValue]; STAssertEqualObjects(stringValue, @"⌘D", nil); } + +- (int)intValue { + return 2; +} + +- (float)floatValue { + return [self intValue]; +} + +- (double)doubleValue { + return [self floatValue]; +} + +- (NSString *)stringValue { + return @"GTMHotKeyTextFieldTestStringValue"; +} + +- (id)objectValue { + return self; +} + @end @implementation GTMHotKeyTextFieldTestController |