blob: d9a1b907cae6f643775780e66a50337793f9d802 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010 SAP AG, Walldorf.
* 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:
* SAP AG - initial API and implementation
*******************************************************************************/
package org.eclipse.platform.discovery.ui.test.unit.internal;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.platform.discovery.core.api.IContributedAction;
import org.eclipse.platform.discovery.testutils.utils.jmock.Mock;
import org.eclipse.platform.discovery.testutils.utils.jmock.MockObjectTestCase;
import org.eclipse.platform.discovery.ui.api.IGenericViewCustomization;
import org.eclipse.platform.discovery.ui.api.IMasterDiscoveryView;
import org.eclipse.platform.discovery.ui.api.IResultsViewAccessor;
import org.eclipse.platform.discovery.ui.api.ITooltipProvider;
import org.eclipse.platform.discovery.ui.api.ISearchConsoleCustomization;
import org.eclipse.platform.discovery.ui.api.impl.GenericViewCustomizationImpl;
import org.eclipse.platform.discovery.ui.internal.tooltip.FormTextBuilder;
import org.eclipse.platform.discovery.ui.internal.view.result.impl.GenericResultLabelProvider;
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.PlatformUI;
public class GenericResultLabelProviderTest extends MockObjectTestCase
{
private static final String TEXT_1 = "Text1";
private static final String TEXT_2 = "Text2";
private Image image1;
private Image image2;
private Mock<ILabelProvider> labelProvider1;
private Mock<ILabelProvider> labelProvider2;
private Mock<ITooltipProvider> tooltipProvider1;
private Mock<ITooltipProvider> tooltipProvider2;
private Object element1, element2, element3;
private Set<IGenericViewCustomization> customizations;
private GenericResultLabelProvider testedProvider;
@Override
protected void setUp() throws Exception
{
element1 = new Object();
element2 = new Object();
element3 = new Object();
setupImages();
setupLabelProviders();
setupTooltipProviders();
setupCustomizations();
testedProvider = new GenericResultLabelProvider(new ArrayList<IGenericViewCustomization>(customizations));
}
private void setupImages()
{
image1 = new Image(PlatformUI.getWorkbench().getDisplay(), GenericResultContentProviderTest.class.getResourceAsStream("resources/img1.gif"));
assertNotNull(image1);
image2 = new Image(PlatformUI.getWorkbench().getDisplay(), GenericResultContentProviderTest.class.getResourceAsStream("resources/img2.gif"));
assertNotNull(image2);
}
private void setupCustomizations()
{
customizations = new HashSet<IGenericViewCustomization>();
customizations.add(viewCustomization(labelProvider1.proxy(), tooltipProvider1.proxy()));
customizations.add(viewCustomization(labelProvider2.proxy(), tooltipProvider2.proxy()));
customizations.add(viewCustomization(null, null));
}
private ISearchConsoleCustomization viewCustomization(final ILabelProvider lProvider, final ITooltipProvider tooltipProvider)
{
return new TestCustomization(){
public boolean acceptSearchProvider(String searchProviderId)
{
throw new UnsupportedOperationException();
}
public ITreeContentProvider getContentProvider()
{
throw new UnsupportedOperationException();
}
public ILabelProvider getLabelProvider()
{
return lProvider;
}
public ITooltipProvider getTooltipProvider()
{
return tooltipProvider;
}
public void installAction(IContributedAction contributedAction, IResultsViewAccessor viewAccessor)
{
throw new UnsupportedOperationException();
}
public void setMasterView(IMasterDiscoveryView masterView)
{
throw new UnsupportedOperationException();
}};
}
private void setupTooltipProviders()
{
tooltipProvider1 = mock(ITooltipProvider.class);
tooltipProvider2 = mock(ITooltipProvider.class);
}
private void setupLabelProviders()
{
labelProvider1 = mock(ILabelProvider.class);
labelProvider1.stubs().method("getImage").with(eq(element1)).will(returnValue(image1));
labelProvider1.stubs().method("getImage").with(eq(element2)).will(returnValue(null));
labelProvider1.stubs().method("getImage").with(eq(element3)).will(returnValue(null));
labelProvider1.stubs().method("getText").with(eq(element1)).will(returnValue(TEXT_1));
labelProvider1.stubs().method("getText").with(eq(element2)).will(returnValue(null));
labelProvider1.stubs().method("getText").with(eq(element3)).will(returnValue(null));
labelProvider2 = mock(ILabelProvider.class);
labelProvider2.stubs().method("getImage").with(eq(element1)).will(returnValue(null));
labelProvider2.stubs().method("getImage").with(eq(element2)).will(returnValue(image2));
labelProvider2.stubs().method("getImage").with(eq(element3)).will(returnValue(null));
labelProvider2.stubs().method("getText").with(eq(element1)).will(returnValue(null));
labelProvider2.stubs().method("getText").with(eq(element2)).will(returnValue(TEXT_2));
labelProvider2.stubs().method("getText").with(eq(element3)).will(returnValue(null));
}
public void testGetText()
{
assertEquals("Unexpected text", TEXT_1, testedProvider.getText(element1));
assertEquals("Unexpected text", TEXT_2, testedProvider.getText(element2));
assertNull("Unexpected text", testedProvider.getText(element3));
}
public void testGetToolTipTextForUI()
{
tooltipProvider1.expects(once()).method("createTooltipContent").with(isA(FormTextBuilder.class), eq(element1));
tooltipProvider2.expects(once()).method("createTooltipContent").with(isA(FormTextBuilder.class), eq(element1));
testedProvider.getToolTipText(element1);
}
public void testGetImage()
{
assertTrue("Unexpected image", image1 == testedProvider.getImage(element1));
assertTrue("Unexpected image", image2 == testedProvider.getImage(element2));
assertNull("Unexpected image", testedProvider.getImage(element3));
}
@Override
protected void tearDown() throws Exception
{
image1.dispose();
image2.dispose();
}
private abstract class TestCustomization extends GenericViewCustomizationImpl implements ISearchConsoleCustomization
{
}
}