aboutsummaryrefslogtreecommitdiff
path: root/AppKit/GTMHotKeyTextFieldTest.m
diff options
context:
space:
mode:
Diffstat (limited to 'AppKit/GTMHotKeyTextFieldTest.m')
-rw-r--r--AppKit/GTMHotKeyTextFieldTest.m204
1 files changed, 204 insertions, 0 deletions
diff --git a/AppKit/GTMHotKeyTextFieldTest.m b/AppKit/GTMHotKeyTextFieldTest.m
new file mode 100644
index 0000000..ee1bfc2
--- /dev/null
+++ b/AppKit/GTMHotKeyTextFieldTest.m
@@ -0,0 +1,204 @@
+// GTMHotKeyTextFieldTest.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 "GTMHotKeyTextField.h"
+
+#import "GTMSenTestCase.h"
+
+@interface GTMHotKeyTextField (PrivateMethods)
+// Private methods which we want to access to test
++ (BOOL)isValidHotKey:(NSDictionary *)hotKey;
++ (NSString *)displayStringForHotKey:(NSDictionary *)hotKey;
+@end
+
+@interface GTMHotKeyTextFieldTest : GTMTestCase
+@end
+
+@implementation GTMHotKeyTextFieldTest
+
+- (void)testStringForModifierFlags {
+
+ // Make sure only the flags we expect generate things in their strings
+ STAssertEquals([[GTMHotKeyTextField stringForModifierFlags:NSAlphaShiftKeyMask] length],
+ (NSUInteger)0, nil);
+ STAssertEquals([[GTMHotKeyTextField stringForModifierFlags:NSShiftKeyMask] length],
+ (NSUInteger)1, nil);
+ STAssertEquals([[GTMHotKeyTextField stringForModifierFlags:NSControlKeyMask] length],
+ (NSUInteger)1, nil);
+ STAssertEquals([[GTMHotKeyTextField stringForModifierFlags:NSAlternateKeyMask] length],
+ (NSUInteger)1, nil);
+ STAssertEquals([[GTMHotKeyTextField stringForModifierFlags:NSCommandKeyMask] length],
+ (NSUInteger)1, nil);
+ STAssertEquals([[GTMHotKeyTextField stringForModifierFlags:NSNumericPadKeyMask] length],
+ (NSUInteger)0, nil);
+ STAssertEquals([[GTMHotKeyTextField stringForModifierFlags:NSHelpKeyMask] length],
+ (NSUInteger)0, nil);
+ STAssertEquals([[GTMHotKeyTextField 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],
+ (NSUInteger)2, nil);
+ STAssertEquals([[GTMHotKeyTextField stringForModifierFlags:(NSShiftKeyMask |
+ NSAlternateKeyMask |
+ NSCommandKeyMask)] length],
+ (NSUInteger)3, nil);
+ STAssertEquals([[GTMHotKeyTextField 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[] = {
+ 123, 124, 125, 126, 122, 120, 99, 118, 96, 97, 98, 100, 101, 109, 103, 111,
+ 105, 107, 113, 106, 117, 36, 76, 48, 49, 51, 71, 53, 115, 116, 119, 121,
+ 114, 65, 67, 69, 75, 78, 81, 82, 83, 84, 85, 86, 87, 88, 89, 91, 92,
+ };
+ 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];
+ STAssertNotNil(str,
+ @"failed to get a string for keycode %u (useGlyph:%@)",
+ keycode, (useGlyph ? @"YES" : @"NO"));
+ STAssertGreaterThan([str length], (NSUInteger)0,
+ @"got an empty string for keycode %u (useGlyph:%@)",
+ keycode, (useGlyph ? @"YES" : @"NO"));
+ }
+ }
+}
+
+- (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);
+ STAssertNotNil([GTMHotKeyTextField displayStringForHotKey:hkDict], nil);
+
+ hkDict = [NSDictionary dictionaryWithObjectsAndKeys:
+ [NSNumber numberWithBool:NO],
+ kGTMHotKeyDoubledModifierKey,
+ [NSNumber numberWithUnsignedInt:114],
+ 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);
+
+}
+
+- (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);
+}
+
+@end