package com.codeaffine.extras.workingset.internal; import static com.codeaffine.extras.workingset.internal.RegexPatterns.ANYTHING; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import org.eclipse.core.resources.IProject; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Image; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import com.codeaffine.eclipse.swt.test.util.DisplayHelper; import com.codeaffine.extras.workingset.internal.PreviewLabelProvider; public class PreviewLabelProviderPDETest { @Rule public final DisplayHelper displayHelper = new DisplayHelper(); private PreviewLabelProvider labelProvider; @Before public void setUp() { labelProvider = new PreviewLabelProvider( displayHelper.getDisplay() ); } @Test public void testGetText() { IProject project = createProject( "name" ); String text = labelProvider.getText( project ); assertThat( text ).isEqualTo( project.getName() ); } @Test(expected=ClassCastException.class) public void testGetTextForNonProject() { labelProvider.getText( new Object() ); } @Test public void testGetImage() { IProject openedProject = createProject( "opened" ); when( openedProject.isOpen() ).thenReturn( true ); IProject closedProject = createProject( "closed" ); Image openedImage = labelProvider.getImage( openedProject ); Image closedImage = labelProvider.getImage( closedProject ); assertThat( openedImage ).isNotNull(); assertThat( closedImage ).isNotNull(); assertThat( openedImage ).isNotEqualTo( closedImage ); } @Test public void testGetImageTwice() { IProject project = createProject( "name" ); Image image1 = labelProvider.getImage( project ); Image image2 = labelProvider.getImage( project ); assertThat( image1 ).isSameAs( image2 ); } @Test(expected=ClassCastException.class) public void testGetImageForNonProject() { labelProvider.getImage( new Object() ); } @Test public void testGetForeground() { IProject project = createProject( "bar" ); labelProvider.setPattern( ANYTHING ); Color matchingForeground = labelProvider.getForeground( project ); labelProvider.setPattern( "foo*" ); Color nonMatchingForeground = labelProvider.getForeground( project ); assertThat( matchingForeground ).isNull(); assertThat( nonMatchingForeground ).isNotNull(); } @Test public void testGetForegroundTwice() { IProject project = createProject( "name" ); Color foreground1 = labelProvider.getForeground( project ); Color foreground2 = labelProvider.getForeground( project ); assertThat( foreground1 ).isSameAs( foreground2 ); } @Test(expected=ClassCastException.class) public void testGetForegroundForNonProject() { labelProvider.getForeground( new Object() ); } private static IProject createProject( String name ) { IProject result = mock( IProject.class ); when( result.getName() ).thenReturn( name ); return result; } }