blob: f290d8b98ee5efa02527bd04fd212e70f994ec9d [file] [edit]
//
// GTMAppKitUnitTestingUtilities.h
//
// 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
// License for the specific language governing permissions and limitations under
// the License.
//
#import <AppKit/AppKit.h>
NS_ASSUME_NONNULL_BEGIN
// Collection of utilities for unit testing
@interface GTMAppKitUnitTestingUtilities : NSObject
// Allows for posting either a keydown or a keyup with all the modifiers being
// applied. Passing a 'g' with NSKeyDown and NSShiftKeyMask
// generates two events (a shift key key down and a 'g' key keydown). Make sure
// to balance this with a keyup, or things could get confused. Events get posted
// using the CGRemoteOperation events which means that it gets posted in the
// system event queue. Thus you can affect other applications if your app isn't
// the active app (or in some cases, such as hotkeys, even if it is).
// Arguments:
// type - Event type. Currently accepts NSKeyDown and NSKeyUp
// keyChar - character on the keyboard to type. Make sure it is lower case.
// If you need upper case, pass in the NSShiftKeyMask in the
// modifiers. i.e. to generate "G" pass in 'g' and NSShiftKeyMask.
// to generate "+" pass in '=' and NSShiftKeyMask.
// cocoaModifiers - an int made up of bit masks. Handles NSAlphaShiftKeyMask,
// NSShiftKeyMask, NSControlKeyMask, NSAlternateKeyMask, and
// NSCommandKeyMask
+ (void)postKeyEvent:(NSEventType)type
character:(CGCharCode)keyChar
modifiers:(UInt32)cocoaModifiers;
// Syntactic sugar for posting a keydown immediately followed by a key up event
// which is often what you really want.
// Arguments:
// keyChar - character on the keyboard to type. Make sure it is lower case.
// If you need upper case, pass in the NSShiftKeyMask in the
// modifiers. i.e. to generate "G" pass in 'g' and NSShiftKeyMask.
// to generate "+" pass in '=' and NSShiftKeyMask.
// cocoaModifiers - an int made up of bit masks. Handles NSAlphaShiftKeyMask,
// NSShiftKeyMask, NSControlKeyMask, NSAlternateKeyMask, and
// NSCommandKeyMask
+ (void)postTypeCharacterEvent:(CGCharCode)keyChar
modifiers:(UInt32)cocoaModifiers;
@end
NS_ASSUME_NONNULL_END