blob: 395e73b2e13073f32c58848576ce2211ec69d9b5 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2019 Remain Software and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Wim Jongman - initial API and implementation
*******************************************************************************/
package org.eclipse.ui.tests.api;
import java.util.function.Predicate;
import org.eclipse.core.runtime.IAdapterFactory;
import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.ITreeSelection;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.ui.INullSelectionListener;
import org.eclipse.ui.ISelectionListener;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.SelectionListenerFactory;
import org.eclipse.ui.SelectionListenerFactory.ISelectionModel;
import org.eclipse.ui.SelectionListenerFactory.Predicates;
import org.eclipse.ui.tests.SelectionProviderView;
import org.eclipse.ui.tests.harness.util.UITestCase;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
/**
* Tests the ISelectionService class.
*/
@RunWith(JUnit4.class)
public class SelectionListenerFactoryTest extends UITestCase implements ISelectionListener {
/**
*
*/
private static final String KNOCK_KNOCK = "KnockKnock";
private IWorkbenchWindow fWindow;
private IWorkbenchPage fPage;
private boolean fEventReceived;
private int fCounter;
public SelectionListenerFactoryTest() {
super(SelectionListenerFactoryTest.class.getSimpleName());
}
@Override
protected void doSetUp() throws Exception {
super.doSetUp();
fWindow = openTestWindow();
fPage = fWindow.getActivePage();
}
/**
* Purges the UI queue. Use this to let the UI render e.g. after showview.
*/
private void purgeQueue() {
while (fPage.getWorkbenchWindow().getShell().getDisplay().readAndDispatch()) {
}
}
/**
* Tests the emptySelection Predicate block
*/
@Test
public void testEmptySelectionListener() throws Throwable {
SelectionProviderView view = (SelectionProviderView) fPage.showView(SelectionProviderView.ID);
ISelectionListener listener = SelectionListenerFactory.createListener(view, this, Predicates.emptySelection);
fPage.addSelectionListener(listener);
clearEventState();
view.setSelection(new StructuredSelection());
assertFalse("Empty selection not ignored", fEventReceived);
}
/**
* Tests the emptySelection Predicate allow
*/
@Test
public void testEmptySelectionListener2() throws Throwable {
SelectionProviderView view = (SelectionProviderView) fPage.showView(SelectionProviderView.ID);
ISelectionListener listener = SelectionListenerFactory.createListener(view, this, Predicates.emptySelection);
fPage.addSelectionListener(listener);
clearEventState();
view.setSelection(new StructuredSelection(KNOCK_KNOCK));
assertTrue("Filled selection not delivered", fEventReceived);
}
/**
* Tests the prevention of offering the same selection twice from the same part.
*/
@Test
public void testAlreadyDeliveredPart1() throws Throwable {
SelectionProviderView view = (SelectionProviderView) fPage.showView(SelectionProviderView.ID);
ISelectionListener listener = SelectionListenerFactory.createListener(view, this, Predicates.alreadyDelivered);
fPage.addSelectionListener(listener);
view.setSelection(new StructuredSelection(KNOCK_KNOCK));
clearEventState();
view.setSelection(new StructuredSelection(KNOCK_KNOCK));
assertFalse("Same selection was offered twice, same part.", fEventReceived);
}
/**
* Tests the prevention of offering the same selection twice from the same part
* but allow from another part.
*/
@Test
public void testAlreadyDeliveredPart2() throws Throwable {
SelectionProviderView view = (SelectionProviderView) fPage.showView(SelectionProviderView.ID);
SelectionProviderView view2 = (SelectionProviderView) fPage.showView(SelectionProviderView.ID_2);
ISelectionListener listener = SelectionListenerFactory.createListener(view, this, Predicates.alreadyDelivered);
fPage.addSelectionListener(listener);
view.setSelection(new StructuredSelection(KNOCK_KNOCK));
clearEventState();
view2.setSelection(new StructuredSelection(KNOCK_KNOCK));
assertTrue("Same selection but different part was not offered.", fEventReceived);
}
/**
* Tests the prevention of offering the same selection twice from any part 1.
*/
@Test
public void testAlreadyDeliveredAnyPartPart1() throws Throwable {
SelectionProviderView view = (SelectionProviderView) fPage.showView(SelectionProviderView.ID);
ISelectionListener listener = SelectionListenerFactory.createListener(view, this,
Predicates.alreadyDeliveredAnyPart);
fPage.addSelectionListener(listener);
view.setSelection(new StructuredSelection(KNOCK_KNOCK));
SelectionProviderView view2 = (SelectionProviderView) fPage.showView(SelectionProviderView.ID_2);
view2.setSelection(new StructuredSelection(KNOCK_KNOCK));
purgeQueue();
clearEventState();
view2.setSelection(new StructuredSelection(KNOCK_KNOCK));
assertFalse("Same selection was offered twice from other part", fEventReceived);
}
/**
* Tests the prevention of offering the same selection twice from any part 2.
*/
@Test
public void testAlreadyDeliveredAnyPartPart2() throws Throwable {
SelectionProviderView view = (SelectionProviderView) fPage.showView(SelectionProviderView.ID);
ISelectionListener listener = SelectionListenerFactory.createListener(view, this,
Predicates.alreadyDeliveredAnyPart);
fPage.addSelectionListener(listener);
view.setSelection(new StructuredSelection(KNOCK_KNOCK));
clearEventState();
view.setSelection(new StructuredSelection(KNOCK_KNOCK));
assertFalse("Same selection was offered twice", fEventReceived);
}
/**
* Tests if the selection is received when the selection part is visible.
*/
@Test
public void testSelectionPartVisibleT1() throws Throwable {
SelectionProviderView view = (SelectionProviderView) fPage.showView(SelectionProviderView.ID);
ISelectionListener listener = SelectionListenerFactory.createListener(view, this,
Predicates.selectionPartVisible);
fPage.addSelectionListener(listener);
clearEventState();
view.setSelection(new StructuredSelection(KNOCK_KNOCK));
assertTrue("Selection not received from visible part", fEventReceived);
}
/**
* Tests that the selection is not received when the selection part is
* invisible.
*/
@Test
public void testSelectionPartVisibleT2() throws Throwable {
SelectionProviderView view = (SelectionProviderView) fPage.showView(SelectionProviderView.ID, null,
IWorkbenchPage.VIEW_CREATE);
ISelectionListener listener = SelectionListenerFactory.createListener(view, this,
Predicates.selectionPartVisible);
fPage.addSelectionListener(listener);
clearEventState();
view.setSelection(new StructuredSelection(KNOCK_KNOCK));
assertFalse("Selection offered from hidden part", fEventReceived);
}
/**
* Tests that the selection is not received when the selection part is
* invisible.
*/
@Test
public void testSelectionPartVisibleT3() throws Throwable {
SelectionProviderView view = (SelectionProviderView) fPage.showView(SelectionProviderView.ID, null,
IWorkbenchPage.VIEW_CREATE);
ISelectionListener listener = SelectionListenerFactory.createVisibleListener(view, this, m -> true);
fPage.addSelectionListener(listener);
clearEventState();
view.setSelection(new StructuredSelection(KNOCK_KNOCK));
assertFalse("Selection offered from hidden part", fEventReceived);
}
/**
* Tests if the selection is received when the selection part is visible.
*/
@Test
public void testSelectionPartVisibleT4() throws Throwable {
SelectionProviderView view = (SelectionProviderView) fPage.showView(SelectionProviderView.ID);
ISelectionListener listener = SelectionListenerFactory.createVisibleListener(view, this, m -> true);
fPage.addSelectionListener(listener);
clearEventState();
view.setSelection(new StructuredSelection(KNOCK_KNOCK));
assertTrue("Selection not received from visible part", fEventReceived);
}
/**
* Tests that the selection is not received from my own part 1.
*/
@Test
public void testSelfMuteT1() throws Throwable {
SelectionProviderView view = (SelectionProviderView) fPage.showView(SelectionProviderView.ID);
ISelectionListener listener = SelectionListenerFactory.createListener(view, this, Predicates.selfMute);
fPage.addSelectionListener(listener);
clearEventState();
view.setSelection(new StructuredSelection(KNOCK_KNOCK));
assertFalse("Selection offered from own part", fEventReceived);
}
/**
* Tests that the selection is not received from my own part 2.
*/
@Test
public void testSelfMuteT2() throws Throwable {
SelectionProviderView view = (SelectionProviderView) fPage.showView(SelectionProviderView.ID);
SelectionProviderView view2 = (SelectionProviderView) fPage.showView(SelectionProviderView.ID_2);
ISelectionListener listener = SelectionListenerFactory.createListener(view, this, Predicates.selfMute);
fPage.addSelectionListener(listener);
clearEventState();
view2.setSelection(new StructuredSelection(KNOCK_KNOCK));
assertTrue("Selection offered from other part but not received", fEventReceived);
}
/**
* Tests that the selection is received when the target part is visible.
*/
@Test
public void testTargetPartVisibleT1() throws Throwable {
SelectionProviderView view = (SelectionProviderView) fPage.showView(SelectionProviderView.ID);
ISelectionListener listener = SelectionListenerFactory.createListener(view, this, Predicates.targetPartVisible);
fPage.addSelectionListener(listener);
clearEventState();
purgeQueue();
view.setSelection(new StructuredSelection(KNOCK_KNOCK));
assertTrue("Selection not offered", fEventReceived);
}
/**
* Tests that the selection is not received when the target part is invisible.
*/
@Test
public void testTargetPartVisibleT2() throws Throwable {
SelectionProviderView view = (SelectionProviderView) fPage.showView(SelectionProviderView.ID);
ISelectionListener listener = SelectionListenerFactory.createListener(view, this, Predicates.targetPartVisible);
fPage.addSelectionListener(listener);
// hides the first view
SelectionProviderView view2 = (SelectionProviderView) fPage.showView(SelectionProviderView.ID_2);
purgeQueue();
clearEventState();
view2.setSelection(new StructuredSelection(KNOCK_KNOCK));
assertFalse("Selection offered but should not", fEventReceived);
}
/**
* Tests that the target part receives the current selection when it pops up.
*/
@Test
public void testDeliverDelayed() throws Throwable {
SelectionProviderView view = (SelectionProviderView) fPage.showView(SelectionProviderView.ID);
ISelectionListener listener = SelectionListenerFactory.createListener(view, this, Predicates.targetPartVisible);
fPage.addSelectionListener(listener);
// hides the first view
SelectionProviderView view2 = (SelectionProviderView) fPage.showView(SelectionProviderView.ID_2);
purgeQueue();
view2.setSelection(new StructuredSelection(KNOCK_KNOCK));
clearEventState();
fPage.showView(SelectionProviderView.ID);
assertTrue("Selection not offered but should", fEventReceived);
}
/**
* Tests that the selection is not received when the selection part is
* invisible.
*/
@Test
public void testSelfMuteT3() throws Throwable {
SelectionProviderView view = (SelectionProviderView) fPage.showView(SelectionProviderView.ID);
SelectionProviderView view2 = (SelectionProviderView) fPage.showView(SelectionProviderView.ID);
ISelectionListener listener = SelectionListenerFactory.createVisibleSelfMutedListener(view, this);
fPage.addSelectionListener(listener);
fPage.setPartState(fPage.getReference(view), IWorkbenchPage.STATE_MINIMIZED);
clearEventState();
view2.setSelection(new StructuredSelection(KNOCK_KNOCK));
assertFalse("Selection offered even when we were not visible", fEventReceived);
}
/**
* Tests that the selection is not received when the selection part is
* invisible.
*/
@Test
public void testSelfMuteT4() throws Throwable {
SelectionProviderView view = (SelectionProviderView) fPage.showView(SelectionProviderView.ID);
ISelectionListener listener = SelectionListenerFactory.createVisibleSelfMutedListener(view, this,
Predicates.selfMute);
fPage.addSelectionListener(listener);
clearEventState();
view.setSelection(new StructuredSelection(KNOCK_KNOCK));
assertFalse("Selection offered from the same part", fEventReceived);
}
/**
* Tests that the selection is not received when the selection part is
* invisible.
*/
@Test
public void testSelfMuteT5() throws Throwable {
SelectionProviderView view = (SelectionProviderView) fPage.showView(SelectionProviderView.ID);
SelectionProviderView view2 = (SelectionProviderView) fPage.showView(SelectionProviderView.ID);
ISelectionListener listener = SelectionListenerFactory.createVisibleSelfMutedListener(view, this);
fPage.addSelectionListener(listener);
view2.setSelection(new StructuredSelection(KNOCK_KNOCK));
clearEventState();
view2.setSelection(new StructuredSelection(KNOCK_KNOCK));
assertFalse("Selection offered twice", fEventReceived);
}
/**
* Tests minimum selection block.
*/
@Test
public void testMinimumSelectionSizeT1() throws Throwable {
SelectionProviderView view = (SelectionProviderView) fPage.showView(SelectionProviderView.ID);
ISelectionListener listener = SelectionListenerFactory.createListener(view, this,
Predicates.minimalSelectionSize(2));
fPage.addSelectionListener(listener);
clearEventState();
view.setSelection(new StructuredSelection(new Object[] { view }));
assertFalse("Selection offered", fEventReceived);
}
/**
* Tests minimum selection positive.
*/
@Test
public void testMinimumSelectionSizeT2() throws Throwable {
SelectionProviderView view = (SelectionProviderView) fPage.showView(SelectionProviderView.ID);
ISelectionListener listener = SelectionListenerFactory.createListener(view, this,
Predicates.minimalSelectionSize(2));
fPage.addSelectionListener(listener);
clearEventState();
view.setSelection(new StructuredSelection(new Object[] { view, view }));
assertTrue("Selection not offered", fEventReceived);
}
/**
* Tests that the selection is not received when the selection part is
* invisible.
*/
@Test
public void testMinimumSelectionSizeT3() throws Throwable {
SelectionProviderView view = (SelectionProviderView) fPage.showView(SelectionProviderView.ID);
ISelectionListener listener = SelectionListenerFactory.createListener(view, this,
Predicates.minimalSelectionSize(2));
fPage.addSelectionListener(listener);
clearEventState();
view.setSelection(new StructuredSelection(new Object[] { view, view, view }));
assertTrue("Selection not offered", fEventReceived);
}
/**
* Tests minimum selection negative on the selection type.
*/
@Test
public void testMinimumSelectionSizeT4() throws Throwable {
SelectionProviderView view = (SelectionProviderView) fPage.showView(SelectionProviderView.ID);
ISelectionListener listener = SelectionListenerFactory.createListener(view, this,
Predicates.minimalSelectionSize(2));
fPage.addSelectionListener(listener);
clearEventState();
view.setSelection(() -> true);
assertFalse("Selection offered but should not", fEventReceived);
}
/**
* Tests that the selection is not received when the selection part is
* invisible.
*/
@Test
public void testSelectionSizeT1() throws Throwable {
SelectionProviderView view = (SelectionProviderView) fPage.showView(SelectionProviderView.ID);
ISelectionListener listener = SelectionListenerFactory.createListener(view, this, Predicates.selectionSize(4));
fPage.addSelectionListener(listener);
clearEventState();
view.setSelection(new StructuredSelection(new Object[] { view, view, view }));
assertFalse("Selection offered but wrong selection size", fEventReceived);
}
/**
* Tests that the selection is not received when the selection part is
* invisible.
*/
@Test
public void testSelectionSizeT2() throws Throwable {
SelectionProviderView view = (SelectionProviderView) fPage.showView(SelectionProviderView.ID);
ISelectionListener listener = SelectionListenerFactory.createListener(view, this, Predicates.selectionSize(3));
fPage.addSelectionListener(listener);
clearEventState();
view.setSelection(new StructuredSelection(new Object[] { view, view, view }));
assertTrue("Selection not offered", fEventReceived);
}
/**
* Test 1 for the {@link Predicates#adaptsTo(Class)} predicate.
*/
@Test
public void testAdaptsToT1() throws Throwable {
IAdapterFactory f = new IAdapterFactory() {
@Override
public Class<?>[] getAdapterList() {
return new Class<?>[] { Bird.class, Sparrow.class };
}
@SuppressWarnings("unchecked")
@Override
public <T> T getAdapter(Object pAdaptableObject, Class<T> pAdapterType) {
if (pAdaptableObject instanceof Sparrow && pAdapterType.equals(Bird.class)) {
return (T) new Bird();
}
return null;
}
};
Platform.getAdapterManager().registerAdapters(f, Sparrow.class);
SelectionProviderView view = (SelectionProviderView) fPage.showView(SelectionProviderView.ID);
ISelectionListener listener = SelectionListenerFactory.createListener(view, this,
Predicates.adaptsTo(Bird.class));
fPage.addSelectionListener(listener);
clearEventState();
view.setSelection(new StructuredSelection(new Sparrow()));
assertTrue("Selection not offered", fEventReceived);
}
/**
* Test 2 for the {@link Predicates#adaptsTo(Class)} predicate.
*/
@Test
public void testAdaptsToT2() throws Throwable {
SelectionProviderView view = (SelectionProviderView) fPage.showView(SelectionProviderView.ID);
ISelectionListener listener = SelectionListenerFactory.createListener(view, this,
Predicates.adaptsTo(SelectionProviderView.class));
fPage.addSelectionListener(listener);
clearEventState();
view.setSelection(new StructuredSelection(KNOCK_KNOCK));
assertFalse("Selection offered but should not", fEventReceived);
}
/**
* Test 3 for the {@link Predicates#adaptsTo(Class)} predicate.
*/
@Test
public void testAdaptsToT3() throws Throwable {
SelectionProviderView view = (SelectionProviderView) fPage.showView(SelectionProviderView.ID);
ISelectionListener listener = SelectionListenerFactory.createListener(view, this,
Predicates.adaptsTo(SelectionProviderView.class));
fPage.addSelectionListener(listener);
clearEventState();
view.setSelection(new StructuredSelection(view));
assertTrue("Selection offered but should not", fEventReceived);
}
/**
* Test 4 for the {@link Predicates#adaptsTo(Class)} predicate.
*/
@Test
public void testAdaptsToT4() throws Throwable {
IAdapterFactory f = new IAdapterFactory() {
@Override
public Class<?>[] getAdapterList() {
return new Class<?>[] { Bird.class, Sparrow.class };
}
@SuppressWarnings("unchecked")
@Override
public <T> T getAdapter(Object pAdaptableObject, Class<T> pAdapterType) {
if (pAdaptableObject instanceof Sparrow && pAdapterType.equals(Bird.class)) {
return (T) new Bird();
}
return null;
}
};
Platform.getAdapterManager().registerAdapters(f, Sparrow.class);
SelectionProviderView view = (SelectionProviderView) fPage.showView(SelectionProviderView.ID);
ISelectionListener listener = SelectionListenerFactory.createListener(view, this,
Predicates.adaptsTo(Sparrow.class));
fPage.addSelectionListener(listener);
clearEventState();
view.setSelection(new StructuredSelection(new Bird()));
assertFalse("Selection offered", fEventReceived);
}
/**
* Test 5 for the {@link Predicates#adaptsTo(Class)} predicate.
*/
@Test
public void testAdaptsToT5() throws Throwable {
SelectionProviderView view = (SelectionProviderView) fPage.showView(SelectionProviderView.ID);
ISelectionListener listener = SelectionListenerFactory.createListener(view, this,
Predicates.adaptsTo(SelectionProviderView.class));
fPage.addSelectionListener(listener);
clearEventState();
view.setSelection(() -> true);
assertFalse("Selection offered but should not", fEventReceived);
}
/**
* Tests user defined predicate 1.
*/
@Test
public void testUserPredicate() throws Throwable {
SelectionProviderView view = (SelectionProviderView) fPage.showView(SelectionProviderView.ID);
ISelectionListener listener = SelectionListenerFactory.createListener(view, this, m -> false);
fPage.addSelectionListener(listener);
clearEventState();
view.setSelection(new StructuredSelection(KNOCK_KNOCK));
assertFalse("Selection offered but should not", fEventReceived);
}
/**
* Tests user defined predicate 2.
*/
@Test
public void testUserPredicateT2() throws Throwable {
SelectionProviderView view = (SelectionProviderView) fPage.showView(SelectionProviderView.ID);
ISelectionListener listener = SelectionListenerFactory.createListener(view, this,
m -> m.getTargetPart().equals(view));
fPage.addSelectionListener(listener);
clearEventState();
view.setSelection(new StructuredSelection(KNOCK_KNOCK));
assertTrue("Selection should be offered", fEventReceived);
}
/**
* Tests user defined predicate 3.
*/
@Test
public void testUserPredicateT3() throws Throwable {
SelectionProviderView view = (SelectionProviderView) fPage.showView(SelectionProviderView.ID);
ISelectionListener listener = SelectionListenerFactory.createListener(view, this,
m -> m.getTargetPart().equals(view));
SelectionListenerFactory.decorate(listener, m -> true);
fPage.addSelectionListener(listener);
clearEventState();
view.setSelection(new StructuredSelection(KNOCK_KNOCK));
assertTrue("Selection should be offered", fEventReceived);
}
/**
* Tests user defined predicate 4.
*/
@Test
public void testUserPredicateT4() throws Throwable {
SelectionProviderView view = (SelectionProviderView) fPage.showView(SelectionProviderView.ID);
ISelectionListener listener = SelectionListenerFactory.createListener(view, this,
m -> m.getTargetPart().equals(view));
fPage.addSelectionListener(listener);
clearEventState();
view.setSelection(new StructuredSelection(KNOCK_KNOCK));
assertTrue("Selection should not be offered", fEventReceived);
}
/**
* Create listener factory method test.
*/
@Test
public void testCreateListenerTest() throws Throwable {
SelectionProviderView view = (SelectionProviderView) fPage.showView(SelectionProviderView.ID);
try {
SelectionListenerFactory.createListener(view, m -> true);
assertTrue("ClassCastException expected", false);
} catch (ClassCastException e) {
return;
}
}
/**
* Null Listener test. Selection should be offered when the view is made
* visible.
*/
@Test
@Ignore
public void testNullListener() throws Throwable {
INullSelectionListener nullSelectionListener = (pPart, pSelection) -> fEventReceived = true;
SelectionProviderView view = (SelectionProviderView) fPage.showView(SelectionProviderView.ID);
ISelectionListener listener = SelectionListenerFactory.createVisibleListener(view, nullSelectionListener,
m -> true);
fPage.addSelectionListener(listener);
view.setSelection(new StructuredSelection(KNOCK_KNOCK));
// SelectionProviderView view2 = (SelectionProviderView) fPage.showView(SelectionProviderView.ID_2);
// view2.setNullSelection();
clearEventState();
fPage.showView(SelectionProviderView.ID);
assertTrue("Selection not offered", fEventReceived);
}
/**
* Test the decorate method 1.
*/
@Test
public void testDecorateT1() throws Throwable {
SelectionProviderView view = (SelectionProviderView) fPage.showView(SelectionProviderView.ID);
ISelectionListener listener = SelectionListenerFactory.createVisibleListener(view, this);
Predicate<ISelectionModel> pp = model -> {
System.out.println("Return true");
return true;
};
SelectionListenerFactory.decorate(listener, pp);
fPage.addSelectionListener(listener);
purgeQueue();
view.setSelection(new StructuredSelection());
clearEventState();
view.setSelection(new StructuredSelection(KNOCK_KNOCK));
assertTrue("Selection should be offered", fEventReceived);
}
/**
* Test the decorate method 2.
*/
@Test
public void testDecorateT2() throws Throwable {
SelectionProviderView view = (SelectionProviderView) fPage.showView(SelectionProviderView.ID);
ISelectionListener listener = SelectionListenerFactory.createVisibleListener(view, this);
Predicate<ISelectionModel> predicate = getCountingPredicate(true)
.and(getCountingPredicate(false).and(getCountingPredicate(true)));
SelectionListenerFactory.decorate(listener, predicate);
fPage.addSelectionListener(listener);
clearEventState();
view.setSelection(new StructuredSelection(KNOCK_KNOCK));
assertFalse("Selection should not be offered", fEventReceived);
}
private Predicate<ISelectionModel> getCountingPredicate(boolean bool) {
return pT -> {
fCounter++;
System.out.println("Return " + bool);
return bool;
};
}
/**
* Test the decorate method 3.
*/
@Test
public void testDecorateT3() throws Throwable {
SelectionProviderView view = (SelectionProviderView) fPage.showView(SelectionProviderView.ID);
ISelectionListener listener = SelectionListenerFactory.createVisibleListener(view, this);
Predicate<ISelectionModel> predicate = getCountingPredicate(true)
.and(getCountingPredicate(true).and(getCountingPredicate(true)));
SelectionListenerFactory.decorate(listener, predicate);
fPage.addSelectionListener(listener);
clearEventState();
view.setSelection(new StructuredSelection(KNOCK_KNOCK));
assertTrue("Selection should not be offered", fEventReceived);
}
/**
* Test the decorate method 4.
*/
@Test
public void testDecorateT4() throws Throwable {
SelectionProviderView view = (SelectionProviderView) fPage.showView(SelectionProviderView.ID);
ISelectionListener listener = SelectionListenerFactory.createVisibleListener(view, this);
Predicate<ISelectionModel> predicate = getCountingPredicate(true)
.and(getCountingPredicate(true).and(getCountingPredicate(true)));
SelectionListenerFactory.decorate(listener, predicate);
fPage.addSelectionListener(listener);
clearEventState();
view.setSelection(new StructuredSelection(KNOCK_KNOCK));
assertTrue("Counter must be three but is " + fCounter, fCounter == 3);
}
/**
* Test the decorate method 5.
*/
@Test
public void testDecorateT5() throws Throwable {
SelectionProviderView view = (SelectionProviderView) fPage.showView(SelectionProviderView.ID);
ISelectionListener listener = SelectionListenerFactory.createVisibleListener(view, this);
Predicate<ISelectionModel> predicate = getCountingPredicate(true)
.and(getCountingPredicate(false).and(getCountingPredicate(true)));
SelectionListenerFactory.decorate(listener, predicate);
fPage.addSelectionListener(listener);
clearEventState();
view.setSelection(new StructuredSelection(KNOCK_KNOCK));
assertTrue("Counter must be two but is " + fCounter, fCounter == 2);
}
/**
* Tests selection type
*/
@Test
public void testSelectionTypeT1() throws Throwable {
SelectionProviderView view = (SelectionProviderView) fPage.showView(SelectionProviderView.ID);
ISelectionListener listener = SelectionListenerFactory.createListener(view, this,
Predicates.selectionType(ITreeSelection.class));
fPage.addSelectionListener(listener);
clearEventState();
view.setSelection(new StructuredSelection(KNOCK_KNOCK));
assertFalse("Selection should not be offered", fEventReceived);
}
/**
* Tests selection type
*/
@Test
public void testSelectionTypeT2() throws Throwable {
SelectionProviderView view = (SelectionProviderView) fPage.showView(SelectionProviderView.ID);
ISelectionListener listener = SelectionListenerFactory.createListener(view, this,
Predicates.selectionType(IStructuredSelection.class));
fPage.addSelectionListener(listener);
clearEventState();
view.setSelection(new StructuredSelection(KNOCK_KNOCK));
assertTrue("Selection should be offered", fEventReceived);
}
/**
* Clear the event state.
*/
private void clearEventState() {
fCounter = 0;
fEventReceived = false;
}
@Override
public void selectionChanged(IWorkbenchPart part, ISelection selection) {
fEventReceived = true;
}
public class Bird {
}
public class Sparrow {
}
}