JAL-3990 gradle spotlessApply
[jalview.git] / test / jalview / gui / ProgressBarTest.java
index 2d3db68..a77942c 100644 (file)
@@ -1,8 +1,27 @@
+/*
+ * 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.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertTrue;
 
 import java.awt.Component;
 import java.awt.FlowLayout;
@@ -10,30 +29,40 @@ import java.awt.GridLayout;
 
 import javax.swing.JLabel;
 import javax.swing.JPanel;
+import javax.swing.SwingUtilities;
 
-import org.junit.Test;
+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
     {
       new ProgressBar(null, null);
-      fail("Expected exception");
+      Assert.fail("Expected exception");
     } catch (NullPointerException e)
     {
       // expected
     }
   }
 
-  @Test
+  @Test(groups = { "Functional" })
   public void testConstructor_wrongLayout()
   {
     statusPanel = new JPanel();
@@ -41,14 +70,14 @@ public class ProgressBarTest
     try
     {
       new ProgressBar(statusPanel, null);
-      fail("expected exception");
+      Assert.fail("expected exception");
     } catch (IllegalArgumentException e)
     {
       // expected
     }
   }
 
-  @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,18 +120,33 @@ public class ProgressBarTest
    * @param layout
    * @param msgs
    */
-  private void verifyProgress(GridLayout layout, String[] msgs)
+  private void verifyProgress(final GridLayout layout, final String[] msgs)
   {
-    int msgCount = msgs.length;
-    assertEquals(1 + msgCount, layout.getRows());
-    assertEquals(msgCount, statusPanel.getComponentCount());
-    int i = 0;
-    for (Component c : statusPanel.getComponents())
+    try
+    {
+      SwingUtilities.invokeAndWait(new Runnable()
+      {
+        @Override
+        public void run()
+        {
+          int msgCount = msgs.length;
+          assertEquals(1 + msgCount, layout.getRows());
+          assertEquals(msgCount, statusPanel.getComponentCount());
+          int i = 0;
+          for (Component c : statusPanel.getComponents())
+          {
+            assertTrue(c instanceof JPanel);
+            assertTrue(((JPanel) c).getComponent(0) instanceof JLabel);
+            assertEquals(msgs[i++],
+                    ((JLabel) ((JPanel) c).getComponent(0)).getText());
+          }
+        }
+      });
+    } catch (Exception e)
     {
-      assertTrue(c instanceof JPanel);
-      assertTrue(((JPanel) c).getComponent(0) instanceof JLabel);
-      assertEquals(msgs[i++],
-              ((JLabel) ((JPanel) c).getComponent(0)).getText());
+      throw new AssertionError(
+              "Unexpected exception waiting for progress bar validation",
+              e);
     }
   }
 }