X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fgui%2FAnnotationChooserTest.java;h=f3c0dee6eecac20ceada348ae1d031a44ac82d02;hb=31aca2e9990ff33e088faa41419bb60014a6fbcf;hp=6bee4ec887b364a0848ea4aefb629a17d1847686;hpb=3412b273e964fb1a9d22564b04a5f0c827ec2461;p=jalview.git diff --git a/test/jalview/gui/AnnotationChooserTest.java b/test/jalview/gui/AnnotationChooserTest.java index 6bee4ec..f3c0dee 100644 --- a/test/jalview/gui/AnnotationChooserTest.java +++ b/test/jalview/gui/AnnotationChooserTest.java @@ -1,10 +1,41 @@ +/* + * 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 . + * The Jalview Authors are detailed in the 'AUTHORS' file. + */ package jalview.gui; import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertFalse; import static org.testng.AssertJUnit.assertTrue; -import org.testng.annotations.Test; -import org.testng.annotations.BeforeMethod; + +import jalview.analysis.AnnotationSorter.SequenceAnnotationOrder; +import jalview.bin.Cache; +import jalview.datamodel.AlignmentAnnotation; +import jalview.datamodel.AlignmentI; +import jalview.datamodel.Annotation; +import jalview.datamodel.SequenceGroup; +import jalview.datamodel.SequenceI; +import jalview.io.DataSourceType; +import jalview.io.FileFormat; +import jalview.io.FormatAdapter; +import jalview.util.MessageManager; + import java.awt.BorderLayout; import java.awt.Checkbox; import java.awt.Component; @@ -17,15 +48,9 @@ import java.util.List; import javax.swing.JButton; import javax.swing.JPanel; -import jalview.analysis.AnnotationSorter.SequenceAnnotationOrder; -import jalview.bin.Cache; -import jalview.datamodel.AlignmentAnnotation; -import jalview.datamodel.AlignmentI; -import jalview.datamodel.Annotation; -import jalview.datamodel.SequenceGroup; -import jalview.datamodel.SequenceI; -import jalview.io.AppletFormatAdapter; -import jalview.util.MessageManager; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; /** * Unit tests for AnnotationChooser @@ -35,6 +60,14 @@ import jalview.util.MessageManager; */ public class AnnotationChooserTest { + + @BeforeClass(alwaysRun = true) + public void setUpJvOptionPane() + { + JvOptionPane.setInteractiveMode(false); + JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION); + } + // 4 sequences x 13 positions final static String TEST_DATA = ">FER_CAPAA Ferredoxin\n" + "TIETHKEAELVG-\n" @@ -50,21 +83,22 @@ public class AnnotationChooserTest AlignFrame af; - @BeforeMethod + @BeforeMethod(alwaysRun = true) public void setUp() throws IOException { + Cache.loadProperties("test/jalview/io/testProps.jvprops"); // pin down annotation sort order for test Cache.applicationProperties.setProperty(Preferences.SORT_ANNOTATIONS, SequenceAnnotationOrder.NONE.name()); - final String True = Boolean.TRUE.toString(); - Cache.applicationProperties.setProperty( - Preferences.SHOW_AUTOCALC_ABOVE, True); - Cache.applicationProperties.setProperty("SHOW_QUALITY", True); - Cache.applicationProperties.setProperty("SHOW_CONSERVATION", True); - Cache.applicationProperties.setProperty("SHOW_IDENTITY", True); - - AlignmentI al = new jalview.io.FormatAdapter().readFile(TEST_DATA, - AppletFormatAdapter.PASTE, "FASTA"); + final String TRUE = Boolean.TRUE.toString(); + Cache.applicationProperties.setProperty(Preferences.SHOW_AUTOCALC_ABOVE, + TRUE); + Cache.applicationProperties.setProperty("SHOW_QUALITY", TRUE); + Cache.applicationProperties.setProperty("SHOW_CONSERVATION", TRUE); + Cache.applicationProperties.setProperty("SHOW_IDENTITY", TRUE); + + AlignmentI al = new FormatAdapter().readFile(TEST_DATA, + DataSourceType.PASTE, FileFormat.Fasta); af = new AlignFrame(al, 700, 500); parentPanel = new AlignmentPanel(af, af.getViewport()); addAnnotations(); @@ -74,17 +108,14 @@ public class AnnotationChooserTest * Add 4 annotations, 3 of them sequence-specific. * *
-   * ann1 - for sequence 0 - label 'IUPRED' 
-   * ann2 - not sequence related - label 'Beauty' 
-   * ann3 - for sequence 3 - label 'JMol'
-   * ann4 - for sequence 2 - label 'IUPRED'
-   * ann5 - for sequence 1 - label 'JMol'
+   * ann1 - for sequence 0 - label 'IUPRED' ann2 - not sequence related - label
+   * 'Beauty' ann3 - for sequence 3 - label 'JMol' ann4 - for sequence 2 - label
+   * 'IUPRED' ann5 - for sequence 1 - label 'JMol'
    */
   private void addAnnotations()
   {
     Annotation an = new Annotation(2f);
-    Annotation[] anns = new Annotation[]
-    { an, an, an };
+    Annotation[] anns = new Annotation[] { an, an, an };
     AlignmentAnnotation ann0 = new AlignmentAnnotation("IUPRED", "", anns);
     AlignmentAnnotation ann1 = new AlignmentAnnotation("Beauty", "", anns);
     AlignmentAnnotation ann2 = new AlignmentAnnotation("JMol", "", anns);
@@ -105,7 +136,7 @@ public class AnnotationChooserTest
   /**
    * Test creation of panel with OK and Cancel buttons
    */
-  @Test
+  @Test(groups = { "Functional" })
   public void testBuildActionButtonsPanel()
   {
     testee = new AnnotationChooser(parentPanel);
@@ -134,7 +165,7 @@ public class AnnotationChooserTest
    * Test 'Apply to' has 3 radio buttons enabled, 'Selected Sequences' selected,
    * when there is a current selection group.
    */
-  @Test
+  @Test(groups = { "Functional" })
   public void testBuildApplyToOptionsPanel_withSelectionGroup()
   {
     selectSequences(0, 2, 3);
@@ -151,8 +182,8 @@ public class AnnotationChooserTest
     assertTrue("Not enabled", cb1.isEnabled());
     assertTrue("Not enabled", cb2.isEnabled());
     assertTrue("Not enabled", cb3.isEnabled());
-    assertEquals("Option not selected", cb2, cb2.getCheckboxGroup()
-            .getSelectedCheckbox());
+    assertEquals("Option not selected", cb2,
+            cb2.getCheckboxGroup().getSelectedCheckbox());
 
     // check state variables match checkbox selection
     assertTrue(testee.isApplyToSelectedSequences());
@@ -181,7 +212,7 @@ public class AnnotationChooserTest
    * Test 'Apply to' has 1 radio button enabled, 'All Sequences' selected, when
    * there is no current selection group.
    */
-  @Test
+  @Test(groups = { "Functional" })
   public void testBuildApplyToOptionsPanel_noSelectionGroup()
   {
     testee = new AnnotationChooser(parentPanel);
@@ -202,15 +233,16 @@ public class AnnotationChooserTest
     assertTrue("Not enabled", cb1.isEnabled());
     assertFalse("Enabled", cb2.isEnabled());
     assertFalse("Enabled", cb3.isEnabled());
-    assertEquals("Not selected", cb1, cb1.getCheckboxGroup()
-            .getSelectedCheckbox());
+    assertEquals("Not selected", cb1,
+            cb1.getCheckboxGroup().getSelectedCheckbox());
 
     // check state variables match checkbox selection
     assertTrue(testee.isApplyToSelectedSequences());
     assertTrue(testee.isApplyToUnselectedSequences());
 
     assertEquals("Wrong text",
-            MessageManager.getString("label.all_sequences"), cb1.getLabel());
+            MessageManager.getString("label.all_sequences"),
+            cb1.getLabel());
     assertEquals("Wrong text",
             MessageManager.getString("label.selected_sequences"),
             cb2.getLabel());
@@ -222,7 +254,7 @@ public class AnnotationChooserTest
   /**
    * Test Show and Hide radio buttons created, with Hide initially selected.
    */
-  @Test
+  @Test(groups = { "Functional" })
   public void testBuildShowHidePanel()
   {
     testee = new AnnotationChooser(parentPanel);
@@ -244,8 +276,8 @@ public class AnnotationChooserTest
     assertTrue("Hide not enabled", cb2.isEnabled());
 
     // Hide (button 2) selected; note this may change to none (null)
-    assertEquals("Not selected", cb2, cb2.getCheckboxGroup()
-            .getSelectedCheckbox());
+    assertEquals("Not selected", cb2,
+            cb2.getCheckboxGroup().getSelectedCheckbox());
 
     assertTrue("Show is flagged", !testee.isShowSelected());
 
@@ -260,7 +292,7 @@ public class AnnotationChooserTest
   /**
    * Test construction of panel containing two sub-panels
    */
-  @Test
+  @Test(groups = { "Functional" })
   public void testBuildShowHideOptionsPanel()
   {
     testee = new AnnotationChooser(parentPanel);
@@ -277,7 +309,7 @@ public class AnnotationChooserTest
    * Test that annotation types are (uniquely) identified.
    * 
    */
-  @Test
+  @Test(groups = { "Functional" })
   public void testGetAnnotationTypes()
   {
     selectSequences(1);
@@ -285,15 +317,15 @@ public class AnnotationChooserTest
     // selection group should make no difference to the result
     // as all annotation types for the alignment are considered
 
-    List types = AnnotationChooser.getAnnotationTypes(
-            parentPanel.getAlignment(), true);
+    List types = AnnotationChooser
+            .getAnnotationTypes(parentPanel.getAlignment(), true);
     assertEquals("Not two annotation types", 2, types.size());
     assertTrue("IUPRED missing", types.contains("IUPRED"));
     assertTrue("JMol missing", types.contains("JMol"));
 
-    types = AnnotationChooser.getAnnotationTypes(
-            parentPanel.getAlignment(), false);
-    assertEquals("Not six annotation types", 6, types.size());
+    types = AnnotationChooser.getAnnotationTypes(parentPanel.getAlignment(),
+            false);
+    assertEquals("Not six annotation types", 7, types.size());
     assertTrue("IUPRED missing", types.contains("IUPRED"));
     assertTrue("JMol missing", types.contains("JMol"));
     assertTrue("Beauty missing", types.contains("Beauty"));
@@ -301,6 +333,7 @@ public class AnnotationChooserTest
     assertTrue("Consensus missing", types.contains("Consensus"));
     assertTrue("Quality missing", types.contains("Quality"));
     assertTrue("Conservation missing", types.contains("Conservation"));
+    assertTrue("Occupancy missing", types.contains("Occupancy"));
   }
 
   /**
@@ -309,7 +342,7 @@ public class AnnotationChooserTest
    * We expect all annotations of that type to be set hidden. Other annotations
    * should be left visible.
    */
-  @Test
+  @Test(groups = { "Functional" })
   public void testSelectType_hideForAll()
   {
     selectSequences(1, 2);
@@ -317,25 +350,27 @@ public class AnnotationChooserTest
     final Checkbox hideCheckbox = (Checkbox) getComponent(testee, 1, 0, 1);
     setSelected(hideCheckbox, true);
 
-    final Checkbox allSequencesCheckbox = (Checkbox) getComponent(testee,
-            1, 1, 0);
+    final Checkbox allSequencesCheckbox = (Checkbox) getComponent(testee, 1,
+            1, 0);
     setSelected(allSequencesCheckbox, true);
 
     AlignmentAnnotation[] anns = parentPanel.getAlignment()
             .getAlignmentAnnotation();
 
-    assertTrue(anns[5].visible); // JMol for seq3
-    assertTrue(anns[7].visible); // JMol for seq1
+    int autocalc = countAutocalc(anns);
+    assertTrue(anns[autocalc + 2].visible); // JMol for seq3
+    assertTrue(anns[autocalc + 4].visible); // JMol for seq1
 
     setSelected(getTypeCheckbox("JMol"), true);
     assertTrue(anns[0].visible); // Conservation
     assertTrue(anns[1].visible); // Quality
     assertTrue(anns[2].visible); // Consensus
-    assertTrue(anns[3].visible); // IUPred for seq0
-    assertTrue(anns[4].visible); // Beauty
-    assertFalse(anns[5].visible); // JMol for seq3 - not selected but hidden
-    assertTrue(anns[6].visible); // IUPRED for seq2
-    assertFalse(anns[7].visible); // JMol for seq1 - selected and hidden
+    assertTrue(anns[3].visible); // Occupancy
+    assertTrue(anns[4].visible); // IUPred for seq0
+    assertTrue(anns[5].visible); // Beauty
+    assertFalse(anns[6].visible); // JMol for seq3 - not selected but hidden
+    assertTrue(anns[7].visible); // IUPRED for seq2
+    assertFalse(anns[8].visible); // JMol for seq1 - selected and hidden
   }
 
   /**
@@ -345,7 +380,7 @@ public class AnnotationChooserTest
    * We expect the annotations of that type, linked to the sequence group, to be
    * set hidden. Other annotations should be left visible.
    */
-  @Test
+  @Test(groups = { "Functional" })
   public void testSelectType_hideForSelected()
   {
     selectSequences(1, 2);
@@ -362,17 +397,19 @@ public class AnnotationChooserTest
     AlignmentAnnotation[] anns = parentPanel.getAlignment()
             .getAlignmentAnnotation();
 
-    assertTrue(anns[7].visible); // JMol for seq1
+    int autocalc = countAutocalc(anns);
+    assertTrue(anns[autocalc + 4].visible); // JMol for seq1
 
     setSelected(getTypeCheckbox("JMol"), true);
     assertTrue(anns[0].visible); // Conservation
     assertTrue(anns[1].visible); // Quality
     assertTrue(anns[2].visible); // Consensus
-    assertTrue(anns[3].visible); // IUPred for seq0
-    assertTrue(anns[4].visible); // Beauty
-    assertTrue(anns[5].visible); // JMol for seq3 not in selection group
-    assertTrue(anns[6].visible); // IUPRED for seq2
-    assertFalse(anns[7].visible); // JMol for seq1 in selection group
+    assertTrue(anns[3].visible); // Occupancy
+    assertTrue(anns[4].visible); // IUPred for seq0
+    assertTrue(anns[5].visible); // Beauty
+    assertTrue(anns[6].visible); // JMol for seq3 not in selection group
+    assertTrue(anns[7].visible); // IUPRED for seq2
+    assertFalse(anns[8].visible); // JMol for seq1 in selection group
   }
 
   /**
@@ -382,7 +419,7 @@ public class AnnotationChooserTest
    * We expect all annotations of that type to be set visible. Other annotations
    * should be left unchanged.
    */
-  @Test
+  @Test(groups = { "Functional" })
   public void testDeselectType_hideForAll()
   {
     selectSequences(1, 2);
@@ -391,8 +428,8 @@ public class AnnotationChooserTest
     final Checkbox hideCheckbox = (Checkbox) getComponent(testee, 1, 0, 1);
     setSelected(hideCheckbox, true);
 
-    final Checkbox allSequencesCheckbox = (Checkbox) getComponent(testee,
-            1, 1, 0);
+    final Checkbox allSequencesCheckbox = (Checkbox) getComponent(testee, 1,
+            1, 0);
     setSelected(allSequencesCheckbox, true);
 
     AlignmentAnnotation[] anns = parentPanel.getAlignment()
@@ -402,19 +439,35 @@ public class AnnotationChooserTest
 
     // select JMol - all hidden
     setSelected(typeCheckbox, true);
-    assertFalse(anns[5].visible); // JMol for seq3
-    assertFalse(anns[7].visible); // JMol for seq1
+    int autocalc = countAutocalc(anns);
+    assertFalse(anns[autocalc + 2].visible); // JMol for seq3
+    assertFalse(anns[autocalc + 4].visible); // JMol for seq1
 
     // deselect JMol - all unhidden
     setSelected(typeCheckbox, false);
-    assertTrue(anns[0].visible); // Conservation
-    assertTrue(anns[1].visible); // Quality
-    assertTrue(anns[2].visible); // Consensus
-    assertTrue(anns[3].visible); // IUPred for seq0
-    assertTrue(anns[4].visible); // Beauty
-    assertTrue(anns[5].visible); // JMol for seq3
-    assertTrue(anns[6].visible); // IUPRED for seq2
-    assertTrue(anns[7].visible); // JMol for seq1
+    for (AlignmentAnnotation ann : anns)
+    {
+      assertTrue(ann.visible);
+    }
+  }
+
+  /**
+   * Returns a count of autocalculated annotations in the set provided
+   * 
+   * @param anns
+   * @return
+   */
+  private int countAutocalc(AlignmentAnnotation[] anns)
+  {
+    int count = 0;
+    for (AlignmentAnnotation ann : anns)
+    {
+      if (ann.autoCalculated)
+      {
+        count++;
+      }
+    }
+    return count;
   }
 
   /**
@@ -424,7 +477,7 @@ public class AnnotationChooserTest
    * We expect the annotations of that type, linked to the sequence group, to be
    * set visible. Other annotations should be left unchanged.
    */
-  @Test
+  @Test(groups = { "Functional" })
   public void testDeselectType_hideForSelected()
   {
     selectSequences(1, 2);
@@ -459,7 +512,7 @@ public class AnnotationChooserTest
    * We expect all annotations of that type to be set visible. Other annotations
    * should be left unchanged
    */
-  @Test
+  @Test(groups = { "Functional" })
   public void testSelectType_showForAll()
   {
     selectSequences(1, 2);
@@ -467,8 +520,8 @@ public class AnnotationChooserTest
     final Checkbox showCheckbox = (Checkbox) getComponent(testee, 1, 0, 0);
     final Checkbox hideCheckbox = (Checkbox) getComponent(testee, 1, 0, 1);
 
-    final Checkbox allSequencesCheckbox = (Checkbox) getComponent(testee,
-            1, 1, 0);
+    final Checkbox allSequencesCheckbox = (Checkbox) getComponent(testee, 1,
+            1, 0);
 
     AlignmentAnnotation[] anns = parentPanel.getAlignment()
             .getAlignmentAnnotation();
@@ -477,18 +530,15 @@ public class AnnotationChooserTest
     setSelected(allSequencesCheckbox, true);
     setSelected(hideCheckbox, true);
     setSelected(getTypeCheckbox("JMol"), true);
-    assertFalse(anns[5].visible); // JMol for seq3
-    assertFalse(anns[7].visible); // JMol for seq1
+    int autocalc = countAutocalc(anns);
+    assertFalse(anns[autocalc + 2].visible); // JMol for seq3
+    assertFalse(anns[autocalc + 4].visible); // JMol for seq1
     // ...now show them...
     setSelected(showCheckbox, true);
-    assertTrue(anns[0].visible); // Conservation
-    assertTrue(anns[1].visible); // Quality
-    assertTrue(anns[2].visible); // Consensus
-    assertTrue(anns[3].visible); // IUPred for seq0
-    assertTrue(anns[4].visible); // Beauty
-    assertTrue(anns[5].visible); // JMol for seq3
-    assertTrue(anns[6].visible); // IUPRED for seq2
-    assertTrue(anns[7].visible); // JMol for seq1
+    for (AlignmentAnnotation ann : anns)
+    {
+      assertTrue(ann.visible);
+    }
   }
 
   /**
@@ -498,7 +548,7 @@ public class AnnotationChooserTest
    * We expect all annotations of that type, linked to the sequence group, to be
    * set visible. Other annotations should be left unchanged
    */
-  @Test
+  @Test(groups = { "Functional" })
   public void testSelectType_showForSelected()
   {
     // sequences 1 and 2 have annotations IUPred and Jmol
@@ -518,19 +568,16 @@ public class AnnotationChooserTest
     setSelected(hideCheckbox, true);
     setSelected(getTypeCheckbox("JMol"), true);
 
-    assertTrue(anns[5].visible); // JMol for seq3
-    assertFalse(anns[7].visible); // JMol for seq1
+    int autocalc = countAutocalc(anns);
+    assertTrue(anns[autocalc + 2].visible); // JMol for seq3
+    assertFalse(anns[autocalc + 4].visible); // JMol for seq1
     // ...now show them...
     setSelected(showCheckbox, true);
 
-    assertTrue(anns[0].visible); // Conservation
-    assertTrue(anns[1].visible); // Quality
-    assertTrue(anns[2].visible); // Consensus
-    assertTrue(anns[3].visible); // IUPred for seq0
-    assertTrue(anns[4].visible); // Beauty
-    assertTrue(anns[5].visible); // JMol for seq3
-    assertTrue(anns[6].visible); // IUPRED for seq2
-    assertTrue(anns[7].visible); // JMol for seq1
+    for (AlignmentAnnotation ann : anns)
+    {
+      assertTrue(ann.visible);
+    }
   }
 
   /**
@@ -540,7 +587,7 @@ public class AnnotationChooserTest
    * We expect all annotations of that type to be set hidden. Other annotations
    * should be left unchanged.
    */
-  @Test
+  @Test(groups = { "Functional" })
   public void testDeselectType_showForAll()
   {
     selectSequences(1, 2);
@@ -549,8 +596,8 @@ public class AnnotationChooserTest
     final Checkbox showCheckbox = (Checkbox) getComponent(testee, 1, 0, 0);
     setSelected(showCheckbox, true);
 
-    final Checkbox allSequencesCheckbox = (Checkbox) getComponent(testee,
-            1, 1, 0);
+    final Checkbox allSequencesCheckbox = (Checkbox) getComponent(testee, 1,
+            1, 0);
     setSelected(allSequencesCheckbox, true);
 
     AlignmentAnnotation[] anns = parentPanel.getAlignment()
@@ -559,19 +606,21 @@ public class AnnotationChooserTest
     final Checkbox typeCheckbox = getTypeCheckbox("JMol");
     // select JMol - all shown
     setSelected(typeCheckbox, true);
-    assertTrue(anns[5].visible); // JMol for seq3
-    assertTrue(anns[7].visible); // JMol for seq1
+    int autocalc = countAutocalc(anns);
+    assertTrue(anns[autocalc + 2].visible); // JMol for seq3
+    assertTrue(anns[autocalc + 4].visible); // JMol for seq1
 
     // deselect JMol - all hidden
     setSelected(typeCheckbox, false);
     assertTrue(anns[0].visible); // Conservation
     assertTrue(anns[1].visible); // Quality
     assertTrue(anns[2].visible); // Consensus
-    assertTrue(anns[3].visible); // IUPred for seq0
-    assertTrue(anns[4].visible); // Beauty
-    assertFalse(anns[5].visible); // JMol for seq3
-    assertTrue(anns[6].visible); // IUPRED for seq2
-    assertFalse(anns[7].visible); // JMol for seq1
+    assertTrue(anns[3].visible); // Occupancy
+    assertTrue(anns[4].visible); // IUPred for seq0
+    assertTrue(anns[5].visible); // Beauty
+    assertFalse(anns[6].visible); // JMol for seq3
+    assertTrue(anns[7].visible); // IUPRED for seq2
+    assertFalse(anns[8].visible); // JMol for seq1
   }
 
   /**
@@ -581,7 +630,7 @@ public class AnnotationChooserTest
    * We expect the annotations of that type, linked to the sequence group, to be
    * set hidden. Other annotations should be left unchanged.
    */
-  @Test
+  @Test(groups = { "Functional" })
   public void testDeselectType_showForSelected()
   {
     selectSequences(1, 2);
@@ -600,19 +649,21 @@ public class AnnotationChooserTest
 
     // select JMol - should remain visible
     setSelected(getTypeCheckbox("JMol"), true);
-    assertTrue(anns[5].visible); // JMol for seq3
-    assertTrue(anns[7].visible); // JMol for seq1
+    int autocalc = countAutocalc(anns);
+    assertTrue(anns[autocalc + 2].visible); // JMol for seq3
+    assertTrue(anns[autocalc + 4].visible); // JMol for seq1
 
     // deselect JMol - should be hidden for selected sequences only
     setSelected(getTypeCheckbox("JMol"), false);
     assertTrue(anns[0].visible); // Conservation
     assertTrue(anns[1].visible); // Quality
     assertTrue(anns[2].visible); // Consensus
-    assertTrue(anns[3].visible); // IUPred for seq0
-    assertTrue(anns[4].visible); // Beauty
-    assertTrue(anns[5].visible); // JMol for seq3 not in selection group
-    assertTrue(anns[6].visible); // IUPRED for seq2
-    assertFalse(anns[7].visible); // JMol for seq1 in selection group
+    assertTrue(anns[3].visible); // Occupancy
+    assertTrue(anns[4].visible); // IUPred for seq0
+    assertTrue(anns[5].visible); // Beauty
+    assertTrue(anns[6].visible); // JMol for seq3 not in selection group
+    assertTrue(anns[7].visible); // IUPRED for seq2
+    assertFalse(anns[8].visible); // JMol for seq1 in selection group
   }
 
   /**
@@ -645,9 +696,9 @@ public class AnnotationChooserTest
     // TODO refactor to a test utility class
     cb.setState(select);
     // have to manually fire the action listener
-    cb.getItemListeners()[0].itemStateChanged(new ItemEvent(cb,
-            ItemEvent.ITEM_STATE_CHANGED, cb, select ? ItemEvent.SELECTED
-                    : ItemEvent.DESELECTED));
+    cb.getItemListeners()[0].itemStateChanged(
+            new ItemEvent(cb, ItemEvent.ITEM_STATE_CHANGED, cb,
+                    select ? ItemEvent.SELECTED : ItemEvent.DESELECTED));
   }
 
   /**
@@ -675,7 +726,7 @@ public class AnnotationChooserTest
    * Test cases include sequences in the selection group, and others not in the
    * group.
    */
-  @Test
+  @Test(groups = { "Functional" })
   public void testIsInActionScope_selectedScope()
   {
     // sequences 1 and 2 have annotations 4 and 3 respectively
@@ -688,12 +739,12 @@ public class AnnotationChooserTest
 
     AlignmentAnnotation[] anns = parentPanel.getAlignment()
             .getAlignmentAnnotation();
-    // remember 3 annotations to skip (Conservation/Quality/Consensus)
-    assertFalse(testee.isInActionScope(anns[3]));
-    assertFalse(testee.isInActionScope(anns[4]));
-    assertFalse(testee.isInActionScope(anns[5]));
-    assertTrue(testee.isInActionScope(anns[6]));
-    assertTrue(testee.isInActionScope(anns[7]));
+    int autocalc = countAutocalc(anns);
+    assertFalse(testee.isInActionScope(anns[autocalc]));
+    assertFalse(testee.isInActionScope(anns[autocalc + 1]));
+    assertFalse(testee.isInActionScope(anns[autocalc + 2]));
+    assertTrue(testee.isInActionScope(anns[autocalc + 3]));
+    assertTrue(testee.isInActionScope(anns[autocalc + 4]));
   }
 
   /**
@@ -701,7 +752,7 @@ public class AnnotationChooserTest
    * Test cases include sequences in the selection group, and others not in the
    * group.
    */
-  @Test
+  @Test(groups = { "Functional" })
   public void testIsInActionScope_unselectedScope()
   {
     // sequences 1 and 2 have annotations 4 and 3 respectively
@@ -714,18 +765,18 @@ public class AnnotationChooserTest
 
     AlignmentAnnotation[] anns = parentPanel.getAlignment()
             .getAlignmentAnnotation();
-    // remember 3 annotations to skip (Conservation/Quality/Consensus)
-    assertTrue(testee.isInActionScope(anns[3]));
-    assertTrue(testee.isInActionScope(anns[4]));
-    assertTrue(testee.isInActionScope(anns[5]));
-    assertFalse(testee.isInActionScope(anns[6]));
-    assertFalse(testee.isInActionScope(anns[7]));
+    int autocalc = countAutocalc(anns);
+    assertTrue(testee.isInActionScope(anns[autocalc]));
+    assertTrue(testee.isInActionScope(anns[autocalc + 1]));
+    assertTrue(testee.isInActionScope(anns[autocalc + 2]));
+    assertFalse(testee.isInActionScope(anns[autocalc + 3]));
+    assertFalse(testee.isInActionScope(anns[autocalc + 4]));
   }
 
   /**
    * Test that the reset method restores previous visibility flags.
    */
-  @Test
+  @Test(groups = { "Functional" })
   public void testResetOriginalState()
   {
     testee = new AnnotationChooser(parentPanel);
@@ -738,11 +789,14 @@ public class AnnotationChooserTest
       assertTrue(i + "'th sequence not visible", anns[i].visible);
     }
 
+    /*
+     * check options to hide JMol and IUPRED annotations for all sequences
+     */
     final Checkbox hideCheckbox = (Checkbox) getComponent(testee, 1, 0, 1);
     setSelected(hideCheckbox, true);
 
-    final Checkbox allSequencesCheckbox = (Checkbox) getComponent(testee,
-            1, 1, 0);
+    final Checkbox allSequencesCheckbox = (Checkbox) getComponent(testee, 1,
+            1, 0);
     setSelected(allSequencesCheckbox, true);
 
     setSelected(getTypeCheckbox("JMol"), true);
@@ -751,11 +805,12 @@ public class AnnotationChooserTest
     assertTrue(anns[0].visible); // Conservation
     assertTrue(anns[1].visible); // Quality
     assertTrue(anns[2].visible); // Consensus
-    assertTrue(anns[3].visible); // Beauty (not seq-related)
+    assertTrue(anns[3].visible); // Occupancy
     assertFalse(anns[4].visible); // IUPRED
-    assertFalse(anns[5].visible); // JMol
-    assertFalse(anns[6].visible); // IUPRED
-    assertFalse(anns[7].visible); // JMol
+    assertTrue(anns[5].visible); // Beauty (not seq-related)
+    assertFalse(anns[6].visible); // JMol
+    assertFalse(anns[7].visible); // IUPRED
+    assertFalse(anns[8].visible); // JMol
 
     // reset - should all be visible
     testee.resetOriginalState();