aboutsummaryrefslogtreecommitdiff
path: root/AppKit/GTMHotKeyTextFieldTest.m
diff options
context:
space:
mode:
authorGravatar thomasvl@gmail.com <thomasvl@gmail.com@7dc7ac4e-7543-0410-b95c-c1676fc8e2a3>2008-12-12 15:24:34 +0000
committerGravatar thomasvl@gmail.com <thomasvl@gmail.com@7dc7ac4e-7543-0410-b95c-c1676fc8e2a3>2008-12-12 15:24:34 +0000
commit2e8516354aacef064d01425808da06d2cdcb4791 (patch)
tree9da4758828930280d32f18d54ece7a249df742c7 /AppKit/GTMHotKeyTextFieldTest.m
parent9f64d056dd70f2f938ac6f5adb8e75b650dc2e1a (diff)
- GTMStackTrace works on 10.5+ (and iPhone) using NSThread to build the call stack.
- Added GTM_EXTERN that makes it easier to mix and match objc and objc++ code. - Added GTMHotKeysTextField for display and editing of hot key settings. - Added GTMCarbonEvent for dealing with Carbon Events and HotKeys in a ObjC like way. - Backported the Atomic Barrier Swap functions for Objective C back to Tiger. - Added a variety of new functions to GTMUnitTestingUtilities for checking if the screensaver is in the way, waiting on user events, and generating keystrokes. - If you are using any Carbon routines that log (DebugStr, AssertMacros.h) and use GTMUnitTestDevLog, the log routines now go through _GTMDevLog so that they can be caught in GTMUnitTestDevLog and verified like any _GTMDevLog calls you may make. For an example of this in action see GTMCarbonEventTest.m. - Added GTMFileSystemKQueue. It provides a simple wrapper for kqueuing something in the file system and tracking changes to it. - RunIPhoneUnitTest.sh now cleans up the user home directory and creates a documents directory within it, used when requesting a NSDocumentDirectory. - Added GTMNSFileManager+Carbon which contains routines for path <-> Alias conversion and path <-> FSRef conversion. - Added GTMNSArray+Merge for merging one array into another with or without a custom merging function, returning a new array with the merged contents.
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