blob: a3b8e37304d0fb5ccbc9a9dba9d3eff5adfbd488 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.ui.tests.keys;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Event;
import org.eclipse.ui.keys.KeyStroke;
import org.eclipse.ui.keys.ParseException;
import org.eclipse.ui.keys.SWTKeySupport;
import org.eclipse.ui.tests.harness.util.UITestCase;
/**
* Test for Bug 42035.
*
* @since 3.0
*/
public class Bug42035Test extends UITestCase {
/**
* Tests the given key event to see if generates the three key strokes
* represented by the strings.
*
* @param keyEvent
* The key event to generate key strokes from; must not be
* <code>null</code>
* @param firstMatch
* The text format of the first match; must not be <code>null</code>.
* @param secondMatch
* The text format of the second match; must not be <code>null</code>.
* @param thirdMatch
* The text format of the third match; must not be <code>null</code>.
* @throws ParseException
* If anyone of the text formats provided cannot be parsed.
*/
private static void testKeyEvent(Event keyEvent, String firstMatch,
String secondMatch, String thirdMatch) throws ParseException {
KeyStroke desiredKeyStroke = null;
KeyStroke actualKeyStroke = null;
// Test the first-level match.
desiredKeyStroke = KeyStroke.getInstance(firstMatch); //$NON-NLS-1$
actualKeyStroke = SWTKeySupport
.convertAcceleratorToKeyStroke(SWTKeySupport
.convertEventToUnmodifiedAccelerator(keyEvent));
assertEquals(
"Unmodified character with all modifiers doesn't match.", desiredKeyStroke, actualKeyStroke); //$NON-NLS-1$
// Test the second-level match.
desiredKeyStroke = KeyStroke.getInstance(secondMatch); //$NON-NLS-1$
actualKeyStroke = SWTKeySupport
.convertAcceleratorToKeyStroke(SWTKeySupport
.convertEventToUnshiftedModifiedAccelerator(keyEvent));
assertEquals(
"Modified character with no shift doesn't match.", desiredKeyStroke, actualKeyStroke); //$NON-NLS-1$
// Test the third-level match.
desiredKeyStroke = KeyStroke.getInstance(thirdMatch); //$NON-NLS-1$
actualKeyStroke = SWTKeySupport
.convertAcceleratorToKeyStroke(SWTKeySupport
.convertEventToModifiedAccelerator(keyEvent));
assertEquals(
"Modified character with all modifiers doesn't match.", desiredKeyStroke, actualKeyStroke); //$NON-NLS-1$
}
/**
* Constructs a new instance of this test case.
*
* @param testName
* The name of the test
*/
public Bug42035Test(String testName) {
super(testName);
}
/**
* Tests that "Ctrl+" generates "Ctrl+", "Ctrl+" and "Ctrl+".
*
* @throws ParseException
* If "CTRL+" cannot be processed.
*/
public void testCtrl() throws ParseException {
Event keyEvent = new Event();
keyEvent.keyCode = 0x40000;
keyEvent.character = 0x00;
keyEvent.stateMask = SWT.NONE;
KeyStroke desiredKeyStroke = KeyStroke.getInstance("CTRL+"); //$NON-NLS-1$
KeyStroke actualKeyStroke = SWTKeySupport
.convertAcceleratorToKeyStroke(SWTKeySupport
.convertEventToUnmodifiedAccelerator(keyEvent));
assertEquals(
"Unmodified character with all modifiers doesn't match", desiredKeyStroke, actualKeyStroke); //$NON-NLS-1$
}
/**
* Tests that "Ctrl+Enter" generates "Ctrl+Enter", "Ctrl+Enter" and
* "Ctrl+Enter".
*
* @throws ParseException
* If "CTRL+ENTER" cannot be processed.
*/
public void testCtrlEnter() throws ParseException {
Event keyEvent = new Event();
keyEvent.keyCode = 0x0D;
keyEvent.character = 0x0D;
keyEvent.stateMask = SWT.CTRL;
testKeyEvent(keyEvent, "CTRL+CR", "CTRL+CR", "CTRL+CR"); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
}
/**
* Tests that "Ctrl+J" generates "Ctrl+M", "Ctrl+M" and "Ctrl+M".
*
* @throws ParseException
* If "CTRL+M" cannot be processed.
*/
public void testCtrlM() throws ParseException {
Event keyEvent = new Event();
keyEvent.keyCode = 0x6D;
keyEvent.character = 0x0D;
keyEvent.stateMask = SWT.CTRL;
testKeyEvent(keyEvent, "CTRL+M", "CTRL+M", "CTRL+M"); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
}
/**
* Tests that "Ctrl+Shift+2" generates "Ctrl+Shift+2", "Ctrl+@" and
* "Ctrl+Shift+@". This simulates a U.S. keyboard layout.
*
* @throws ParseException
* If "CTRL+SHIFT+2", "CTRL+@" or "CTRL+SHIFT+@" cannot be
* processed.
*/
public void testCtrlShift2() throws ParseException {
Event keyEvent = new Event();
keyEvent.keyCode = '2';
keyEvent.character = 0x00;
keyEvent.stateMask = SWT.CTRL | SWT.SHIFT;
testKeyEvent(keyEvent, "CTRL+SHIFT+2", "CTRL+@", "CTRL+SHIFT+@"); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
}
/**
* Tests that "Ctrl+Shift+7" generates "Ctrl+Shift+7", "Ctrl+/" and
* "Ctrl+Shift+/". This simulates a Swiss-German keyboard layout.
*
* @throws ParseException
* If "CTRL+SHIFT+7", "CTRL+/" or "CTRL+SHIFT+/" cannot be
* processed.
*/
public void testCtrlShift7_SwissGerman() throws ParseException {
Event keyEvent = new Event();
keyEvent.keyCode = '7';
keyEvent.character = '/';
keyEvent.stateMask = SWT.CTRL | SWT.SHIFT;
testKeyEvent(keyEvent, "CTRL+SHIFT+7", "CTRL+/", "CTRL+SHIFT+/"); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
}
/**
* Tests that "Ctrl+Shift+7" generates "Ctrl+Shift+7", "Ctrl+&" and
* "Ctrl+Shift+&". This simulates a US keyboard layout.
*
* @throws ParseException
* If "CTRL+SHIFT+7", "CTRL+&" or "CTRL+SHIFT+&" cannot be
* processed.
*/
public void testCtrlShift7_US() throws ParseException {
Event keyEvent = new Event();
keyEvent.keyCode = '7';
keyEvent.character = '&';
keyEvent.stateMask = SWT.CTRL | SWT.SHIFT;
testKeyEvent(keyEvent, "CTRL+SHIFT+7", "CTRL+&", "CTRL+SHIFT+&"); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
}
}