package com.codeaffine.extras.jdt.internal.junitstatus;
import static com.codeaffine.eclipse.swt.test.util.DisplayHelper.flushPendingEvents;
import static com.codeaffine.extras.test.util.ConcurrentHelper.runInThread;
import static org.assertj.core.api.Assertions.assertThat;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Composite;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import com.codeaffine.eclipse.swt.test.util.DisplayHelper;
public class JUnitProgressUITest {
@Rule
public final DisplayHelper displayHelper = new DisplayHelper();
private TestableJUnitProgressBar progressBar;
private JUnitProgressUI progressUI;
@Test
public void testUpdate() {
String text = "text";
int textAslignment = SWT.CENTER;
Color color = progressBar.getDisplay().getSystemColor( SWT.COLOR_GREEN );
int selection = 1;
int maximum = 2;
progressUI.update( text, textAslignment, color, selection, maximum );
flushPendingEvents();
assertThat( progressBar.getText() ).isEqualTo( text );
assertThat( progressBar.getTextAlignment() ).isEqualTo( textAslignment );
assertThat( progressBar.getBarColor() ).isEqualTo( color );
assertThat( progressBar.getSelection() ).isEqualTo( selection );
assertThat( progressBar.getMaximum() ).isEqualTo( maximum );
}
@Test
public void testUpdateFromBackgroundThread() {
String text = "text";
int textAslignment = SWT.CENTER;
Color color = progressBar.getDisplay().getSystemColor( SWT.COLOR_GREEN );
int selection = 1;
int maximum = 2;
runInThread( new Runnable() {
@Override
public void run() {
progressUI.update( text, textAslignment, color, selection, maximum );
}
} );
flushPendingEvents();
assertThat( progressBar.getText() ).isEqualTo( text );
assertThat( progressBar.getTextAlignment() ).isEqualTo( textAslignment );
assertThat( progressBar.getBarColor() ).isEqualTo( color );
assertThat( progressBar.getSelection() ).isEqualTo( selection );
assertThat( progressBar.getMaximum() ).isEqualTo( maximum );
}
@Test
public void testSetToolTipText() {
String toolTipText = "tooltip-text";
progressUI.setToolTipText( toolTipText );
flushPendingEvents();
assertThat( progressBar.getToolTipText() ).isEqualTo( toolTipText );
}
@Test
public void testSetToolTipTextFromBckgroundThread() {
String text = "text";
runInThread( new Runnable() {
@Override
public void run() {
progressUI.setToolTipText( text );
}
} );
flushPendingEvents();
assertThat( progressBar.getToolTipText() ).isEqualTo( text );
}
@Test
public void testSetToolTipTextToSameValue() {
progressUI.setToolTipText( "text" );
progressUI.setToolTipText( "text" );
flushPendingEvents();
assertThat( progressBar.setToolTipTextInvocationCount ).isEqualTo( 1 );
}
@Test
public void testSetToolTipTextToDifferentValue() {
String otherText = "other text";
progressUI.setToolTipText( "text" );
progressUI.setToolTipText( otherText );
flushPendingEvents();
assertThat( progressBar.getToolTipText() ).isEqualTo( otherText );
}
@Before
public void setUp() {
progressBar = new TestableJUnitProgressBar( displayHelper.createShell() );
progressUI = new JUnitProgressUI( progressBar );
}
private static class TestableJUnitProgressBar extends JUnitProgressBar {
int setToolTipTextInvocationCount;
TestableJUnitProgressBar( Composite parent ) {
super( parent );
}
@Override
public void setToolTipText( String string ) {
setToolTipTextInvocationCount++;
super.setToolTipText( string );
}
}
}