package org.drugis.common.gui;
import static org.junit.Assert.assertEquals;
import java.lang.reflect.InvocationTargetException;
import javax.swing.SwingUtilities;
import org.drugis.common.beans.AbstractObservable;
import org.drugis.common.gui.task.TextProgressBar;
import org.drugis.common.threading.status.TextProgressModel;
import org.junit.Test;
public class TextProgressBarTest {
private class TestProgressModel extends AbstractObservable implements TextProgressModel {
private String d_text;
private Double d_progress;
private boolean d_determinate;
public TestProgressModel(String text, boolean determinate, Double progress) {
d_text = text;
d_determinate = determinate;
d_progress = progress;
}
public TestProgressModel(String text, double progress) {
this(text, true, progress);
}
public TestProgressModel(String text) {
this(text, false, null);
}
public boolean getDeterminate() { return d_determinate; }
public Double getProgress() { return d_progress; }
public String getText() { return d_text; }
public void setDeterminate(boolean determinate) {
boolean oldValue = d_determinate;
d_determinate = determinate;
firePropertyChange(PROPERTY_DETERMINATE, oldValue, d_determinate);
}
public void setProgress(Double progress) {
Double oldValue = d_progress;
d_progress = progress;
firePropertyChange(PROPERTY_PROGRESS, oldValue, d_progress);
}
public void setText(String text) {
String oldValue = d_text;
d_text = text;
firePropertyChange(PROPERTY_TEXT, oldValue, d_text);
}
}
@Test
public void testInitialValuesNotIndeterminate() {
final String text = "Duurt";
TextProgressModel model = new TestProgressModel(text);
TextProgressBar bar = new TextProgressBar(model);
assertEquals(text, bar.getString());
assertEquals(false, bar.isIndeterminate());
}
@Test
public void testInitialValuesDeterminate() {
final String text = "Duurt";
TextProgressModel model = new TestProgressModel(text, 0.23);
TextProgressBar bar = new TextProgressBar(model);
assertEquals(text, bar.getString());
assertEquals(false, bar.isIndeterminate());
assertEquals(0, bar.getMinimum());
assertEquals(100, bar.getMaximum());
assertEquals(23, bar.getValue());
}
@Test
public void testProgression() throws InterruptedException, InvocationTargetException {
TestProgressModel model = new TestProgressModel("X", 0.23);
TextProgressBar bar = new TextProgressBar(model);
assertEquals(23, bar.getValue());
model.setProgress(0.29);
SwingUtilities.invokeAndWait(new Runnable() { public void run() {} });
assertEquals(29, bar.getValue());
}
@Test
public void testToDeterminate() throws InterruptedException, InvocationTargetException {
TestProgressModel model = new TestProgressModel("X");
TextProgressBar bar = new TextProgressBar(model);
model.setProgress(0.1);
model.setDeterminate(true);
SwingUtilities.invokeAndWait(new Runnable() { public void run() {} });
assertEquals(false, bar.isIndeterminate());
assertEquals(10, bar.getValue());
}
@Test
public void testChangeText() throws InterruptedException, InvocationTargetException {
TestProgressModel model = new TestProgressModel("X");
TextProgressBar bar = new TextProgressBar(model);
model.setText("Y");
SwingUtilities.invokeAndWait(new Runnable() { public void run() {} });
assertEquals("Y", bar.getString());
}
}