/******************************************************************************* * 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); } }