Merge branch 'Jalview-JS/jim/JAL-3253-JAL-3418' into Jalview-JS/JAL-3253-applet
[jalview.git] / test / jalview / gui / ProgressBarTest.java
index 281ed2d..72a288b 100644 (file)
@@ -1,3 +1,23 @@
+/*
+ * 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;
@@ -9,18 +29,27 @@ 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
@@ -33,7 +62,7 @@ public class ProgressBarTest
     }
   }
 
-  @Test
+  @Test(groups = { "Functional" })
   public void testConstructor_wrongLayout()
   {
     statusPanel = new JPanel();
@@ -48,7 +77,7 @@ public class ProgressBarTest
     }
   }
 
-  @Test
+  @Test(groups = { "Functional" })
   public void testSetProgressBar()
   {
     statusPanel = new JPanel();
@@ -61,30 +90,26 @@ public class ProgressBarTest
      * 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());
   }
 
@@ -95,8 +120,15 @@ public class ProgressBarTest
    * @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());
@@ -108,5 +140,13 @@ public class ProgressBarTest
       assertEquals(msgs[i++],
               ((JLabel) ((JPanel) c).getComponent(0)).getText());
     }
+      }
+    });
+    } catch (Exception e)
+    {
+      throw new AssertionError(
+              "Unexpected exception waiting for progress bar validation",
+              e);
+    }
   }
 }