+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.gui;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertTrue;
-import org.testng.annotations.Test;
-import org.testng.Assert;
+
import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import javax.swing.JLabel;
import javax.swing.JPanel;
+import javax.swing.SwingUtilities;
+
+import org.testng.Assert;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
public class ProgressBarTest
{
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
private JPanel statusPanel;
private JLabel statusBar;
- @Test
+ @Test(groups = { "Functional" })
public void testConstructor_prematureInstantiation()
{
try
}
}
- @Test
+ @Test(groups = { "Functional" })
public void testConstructor_wrongLayout()
{
statusPanel = new JPanel();
}
}
- @Test
+ @Test(groups = { "Functional" })
public void testSetProgressBar()
{
statusPanel = new JPanel();
* Add 'hello'
*/
pb.setProgressBar("hello", 1L);
- verifyProgress(layout, new String[]
- { "hello" });
+ verifyProgress(layout, new String[] { "hello" });
/*
* Add 'world'
*/
pb.setProgressBar("world", 2L);
- verifyProgress(layout, new String[]
- { "hello", "world" });
+ verifyProgress(layout, new String[] { "hello", "world" });
/*
* Remove 'hello' with no status bar update
*/
pb.setProgressBar(null, 1L);
- verifyProgress(layout, new String[]
- { "world" });
+ verifyProgress(layout, new String[] { "world" });
assertEquals("nothing", statusBar.getText());
/*
* Remove 'world' with status bar update
*/
pb.setProgressBar("goodbye", 2L);
- verifyProgress(layout, new String[]
- {});
+ verifyProgress(layout, new String[] {});
assertEquals("goodbye", statusBar.getText());
}
* @param layout
* @param msgs
*/
- private void verifyProgress(GridLayout layout, String[] msgs)
+ private void verifyProgress(final GridLayout layout, final String[] msgs)
{
+ try
+ {
+ SwingUtilities.invokeAndWait(new Runnable()
+ {
+ @Override
+ public void run()
+ {
int msgCount = msgs.length;
assertEquals(1 + msgCount, layout.getRows());
assertEquals(msgCount, statusPanel.getComponentCount());
assertEquals(msgs[i++],
((JLabel) ((JPanel) c).getComponent(0)).getText());
}
+ }
+ });
+ } catch (Exception e)
+ {
+ throw new AssertionError(
+ "Unexpected exception waiting for progress bar validation",
+ e);
+ }
}
}