blob: d96341cdd3c4c8e8fc8b0e476c41a3ac601bdde3 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2013, 2014 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
* Simon Scholz <simon.scholz@vogella.com> - Bug 436344
*******************************************************************************/
package org.eclipse.e4.ui.bindings.tests;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.core.commands.ParameterizedCommand;
import org.eclipse.e4.core.commands.CommandServiceAddon;
import org.eclipse.e4.core.commands.ECommandService;
import org.eclipse.e4.core.contexts.ContextInjectionFactory;
import org.eclipse.e4.core.contexts.IEclipseContext;
import org.eclipse.e4.ui.bindings.BindingServiceAddon;
import org.eclipse.e4.ui.bindings.EBindingService;
import org.eclipse.e4.ui.services.ContextServiceAddon;
import org.eclipse.jface.bindings.Binding;
import org.eclipse.jface.bindings.TriggerSequence;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class BindingCreateTest {
private static final String DEFAULT_SCHEME_ID = "org.eclipse.ui.defaultAcceleratorConfiguration";
private static final String ID_WINDOW = "org.eclipse.ui.contexts.window";
private static final String TEST_ID1 = "test.id1";
private IEclipseContext workbenchContext;
private EBindingService bs;
private ParameterizedCommand cmd;
private TriggerSequence seq, emptySeq;
private Map<String,String> emptyAttrs, schemeOnly, schemeAndTypeAttrs;
@Before
public void setUp() {
IEclipseContext globalContext = Activator.getDefault()
.getGlobalContext();
workbenchContext = globalContext.createChild("workbenchContext");
ContextInjectionFactory.make(CommandServiceAddon.class,
workbenchContext);
ContextInjectionFactory.make(ContextServiceAddon.class, workbenchContext);
ContextInjectionFactory.make(BindingServiceAddon.class, workbenchContext);
setupTestVars();
}
public void setupTestVars() {
ECommandService cs = workbenchContext.get(ECommandService.class);
bs = workbenchContext.get(EBindingService.class);
cmd = cs.createCommand(TEST_ID1, null);
emptySeq = bs.createSequence("");
seq = bs.createSequence("CTRL+5 T");
emptyAttrs = new HashMap<>();
schemeOnly = new HashMap<>();
schemeOnly.put(EBindingService.SCHEME_ID_ATTR_TAG, DEFAULT_SCHEME_ID);
schemeAndTypeAttrs = new HashMap<>();;
schemeAndTypeAttrs.put(EBindingService.SCHEME_ID_ATTR_TAG, DEFAULT_SCHEME_ID);
schemeAndTypeAttrs.put(EBindingService.TYPE_ATTR_TAG, "user");
}
@After
public void tearDown() {
workbenchContext.dispose();
workbenchContext = null;
}
// *** TESTS *** //
@Test
public void testNullSequence() {
Binding b = bs.createBinding(null, cmd, ID_WINDOW, schemeOnly);
assertNull(b);
}
@Test
public void testNullCommand() {
// should still work since the binding manager in the keys pref
// page will need some way to recognize unbound system bindings
Binding b = bs.createBinding(seq, null, ID_WINDOW, schemeOnly);
assertNotNull(b);
}
@Test
public void testNullContext() {
Binding b = bs.createBinding(seq, cmd, null, schemeOnly);
assertNull(b);
}
@Test
public void testNoAttrs() {
Binding b = bs.createBinding(seq, cmd, ID_WINDOW, null);
assertNotNull(b);
assertTrue(seq.equals(b.getTriggerSequence()));
assertTrue(cmd.equals(b.getParameterizedCommand()));
assertTrue(ID_WINDOW.equals(b.getContextId()));
assertNotNull(b.getSchemeId());
assertTrue(DEFAULT_SCHEME_ID.equals(b.getSchemeId()));
assertNull(b.getLocale());
assertNull(b.getPlatform());
assertTrue(b.getType() == Binding.SYSTEM);
}
@Test
public void testEmptySequence() {
Binding b = bs.createBinding(emptySeq, cmd, ID_WINDOW, null);
assertNull(b);
}
@Test
public void testBindingNoScheme() {
Binding b = bs.createBinding(seq, cmd, ID_WINDOW, emptyAttrs);
assertNotNull(b);
assertTrue(seq.equals(b.getTriggerSequence()));
assertTrue(cmd.equals(b.getParameterizedCommand()));
assertTrue(ID_WINDOW.equals(b.getContextId()));
assertNotNull(b.getSchemeId());
assertTrue(DEFAULT_SCHEME_ID.equals(b.getSchemeId()));
assertNull(b.getLocale());
assertNull(b.getPlatform());
assertTrue(b.getType() == Binding.SYSTEM);
}
@Test
public void testSchemeonly() {
Binding b = bs.createBinding(seq, cmd, ID_WINDOW, schemeOnly);
assertNotNull(b);
assertTrue(seq.equals(b.getTriggerSequence()));
assertTrue(cmd.equals(b.getParameterizedCommand()));
assertTrue(ID_WINDOW.equals(b.getContextId()));
assertNotNull(b.getSchemeId());
assertTrue(DEFAULT_SCHEME_ID.equals(b.getSchemeId()));
assertNull(b.getLocale());
assertNull(b.getPlatform());
assertTrue(b.getType() == Binding.SYSTEM);
}
@Test
public void testSchemeAndTypeAttrs() {
Binding b = bs.createBinding(seq, cmd, ID_WINDOW, schemeAndTypeAttrs);
assertNotNull(b);
assertTrue(seq.equals(b.getTriggerSequence()));
assertTrue(cmd.equals(b.getParameterizedCommand()));
assertTrue(ID_WINDOW.equals(b.getContextId()));
assertNotNull(b.getSchemeId());
assertTrue(DEFAULT_SCHEME_ID.equals(b.getSchemeId()));
assertNull(b.getLocale());
assertNull(b.getPlatform());
assertTrue(b.getType() == Binding.USER);
}
}