mirror of
https://github.com/cappuccino/cappuccino.git
synced 2026-08-25 13:07:02 +00:00
79 lines
2.7 KiB
Plaintext
79 lines
2.7 KiB
Plaintext
@import <AppKit/CPView.j>
|
|
@import <AppKit/CPApplication.j>
|
|
@import <AppKit/CPText.j>
|
|
|
|
@import <AppKit/CPPlatformWindow+DOMKeys.j>
|
|
|
|
@implementation CPResponderTest : OJTestCase
|
|
{
|
|
CPWindow theWindow;
|
|
CPResponder responder;
|
|
}
|
|
|
|
- (void)setUp
|
|
{
|
|
// This will init the global var CPApp which are used internally in the AppKit
|
|
[[CPApplication alloc] init];
|
|
|
|
responder = [TestResponder new];
|
|
responder.doCommandCalls = [];
|
|
}
|
|
|
|
- (void)testInterpretKeyEvents
|
|
{
|
|
var tests = [
|
|
CPKeyCodes.PAGE_UP, CPPageUpFunctionKey, @selector(scrollPageUp:),
|
|
CPKeyCodes.PAGE_DOWN, CPPageDownFunctionKey, @selector(scrollPageDown:),
|
|
CPKeyCodes.LEFT, CPLeftArrowFunctionKey, @selector(moveLeft:),
|
|
CPKeyCodes.RIGHT, CPRightArrowFunctionKey, @selector(moveRight:),
|
|
CPKeyCodes.UP, CPUpArrowFunctionKey, @selector(moveUp:),
|
|
CPKeyCodes.DOWN, CPDownArrowFunctionKey, @selector(moveDown:),
|
|
CPKeyCodes.BACKSPACE, CPDeleteCharacter, @selector(deleteBackward:),
|
|
CPKeyCodes.ENTER, CPCarriageReturnCharacter, @selector(insertNewline:),
|
|
0, CPNewlineCharacter, @selector(insertNewline:),
|
|
CPKeyCodes.ESC, CPEscapeFunctionKey, @selector(cancelOperation:),
|
|
CPKeyCodes.TAB, CPTabCharacter, @selector(insertTab:)
|
|
];
|
|
|
|
for (var i = 0; i < tests.length; i += 3)
|
|
{
|
|
var keyCode = tests[i],
|
|
character = tests[i + 1],
|
|
selector = tests[i + 2];
|
|
|
|
responder.doCommandCalls = [];
|
|
|
|
var keyEvent = [CPEvent keyEventWithType:CPKeyDown location:CGPointMakeZero() modifierFlags:0
|
|
timestamp:0 windowNumber:0 context:nil
|
|
characters:character charactersIgnoringModifiers:character isARepeat:NO keyCode:keyCode];
|
|
[responder interpretKeyEvents:[keyEvent]];
|
|
[self assert:[selector] equals:responder.doCommandCalls];
|
|
}
|
|
}
|
|
|
|
- (void)testInterpretKeyEventsWithModifierFlags
|
|
{
|
|
responder.doCommandCalls = [];
|
|
|
|
var keyEvent = [CPEvent keyEventWithType:CPKeyDown location:CGPointMakeZero() modifierFlags:CPShiftKeyMask
|
|
timestamp:0 windowNumber:0 context:nil
|
|
characters:CPLeftArrowFunctionKey charactersIgnoringModifiers:CPLeftArrowFunctionKey isARepeat:NO keyCode:CPKeyCodes.LEFT];
|
|
[responder interpretKeyEvents:[keyEvent]];
|
|
[self assert:[@selector(moveLeftAndModifySelection:)] equals:responder.doCommandCalls];
|
|
}
|
|
|
|
@end
|
|
|
|
@implementation TestResponder : CPResponder
|
|
{
|
|
CPArray doCommandCalls;
|
|
}
|
|
|
|
- (void)doCommandBySelector:(SEL)aSelector
|
|
{
|
|
doCommandCalls.push(aSelector);
|
|
[super doCommandBySelector:aSelector];
|
|
}
|
|
|
|
@end
|