X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fgui%2FAnnotationChooserTest.java;h=f3c0dee6eecac20ceada348ae1d031a44ac82d02;hb=57738a1f3c19b1c3a00bd3ac5108f8cd0af32f99;hp=a7e84b16b393fa83414200658aee533a113608aa;hpb=ab22918ab8fc67d30dad1fb1ae0f37e51f49df95;p=jalview.git diff --git a/test/jalview/gui/AnnotationChooserTest.java b/test/jalview/gui/AnnotationChooserTest.java index a7e84b1..f3c0dee 100644 --- a/test/jalview/gui/AnnotationChooserTest.java +++ b/test/jalview/gui/AnnotationChooserTest.java @@ -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 . + * The Jalview Authors are detailed in the 'AUTHORS' file. + */ package jalview.gui; import static org.testng.AssertJUnit.assertEquals; @@ -11,7 +31,9 @@ import jalview.datamodel.AlignmentI; import jalview.datamodel.Annotation; import jalview.datamodel.SequenceGroup; import jalview.datamodel.SequenceI; -import jalview.io.AppletFormatAdapter; +import jalview.io.DataSourceType; +import jalview.io.FileFormat; +import jalview.io.FormatAdapter; import jalview.util.MessageManager; import java.awt.BorderLayout; @@ -26,6 +48,7 @@ import java.util.List; import javax.swing.JButton; import javax.swing.JPanel; +import org.testng.annotations.BeforeClass; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; @@ -37,6 +60,14 @@ import org.testng.annotations.Test; */ 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" @@ -52,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(); @@ -76,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);
@@ -107,7 +136,7 @@ public class AnnotationChooserTest
   /**
    * Test creation of panel with OK and Cancel buttons
    */
-  @Test(groups ={ "Functional" })
+  @Test(groups = { "Functional" })
   public void testBuildActionButtonsPanel()
   {
     testee = new AnnotationChooser(parentPanel);
@@ -136,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(groups ={ "Functional" })
+  @Test(groups = { "Functional" })
   public void testBuildApplyToOptionsPanel_withSelectionGroup()
   {
     selectSequences(0, 2, 3);
@@ -153,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());
@@ -183,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(groups ={ "Functional" })
+  @Test(groups = { "Functional" })
   public void testBuildApplyToOptionsPanel_noSelectionGroup()
   {
     testee = new AnnotationChooser(parentPanel);
@@ -204,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());
@@ -224,7 +254,7 @@ public class AnnotationChooserTest
   /**
    * Test Show and Hide radio buttons created, with Hide initially selected.
    */
-  @Test(groups ={ "Functional" })
+  @Test(groups = { "Functional" })
   public void testBuildShowHidePanel()
   {
     testee = new AnnotationChooser(parentPanel);
@@ -246,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());
 
@@ -262,7 +292,7 @@ public class AnnotationChooserTest
   /**
    * Test construction of panel containing two sub-panels
    */
-  @Test(groups ={ "Functional" })
+  @Test(groups = { "Functional" })
   public void testBuildShowHideOptionsPanel()
   {
     testee = new AnnotationChooser(parentPanel);
@@ -279,7 +309,7 @@ public class AnnotationChooserTest
    * Test that annotation types are (uniquely) identified.
    * 
    */
-  @Test(groups ={ "Functional" })
+  @Test(groups = { "Functional" })
   public void testGetAnnotationTypes()
   {
     selectSequences(1);
@@ -287,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"));
@@ -303,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"));
   }
 
   /**
@@ -311,7 +342,7 @@ public class AnnotationChooserTest
    * We expect all annotations of that type to be set hidden. Other annotations
    * should be left visible.
    */
-  @Test(groups ={ "Functional" })
+  @Test(groups = { "Functional" })
   public void testSelectType_hideForAll()
   {
     selectSequences(1, 2);
@@ -319,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
   }
 
   /**
@@ -347,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(groups ={ "Functional" })
+  @Test(groups = { "Functional" })
   public void testSelectType_hideForSelected()
   {
     selectSequences(1, 2);
@@ -364,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
   }
 
   /**
@@ -384,7 +419,7 @@ public class AnnotationChooserTest
    * We expect all annotations of that type to be set visible. Other annotations
    * should be left unchanged.
    */
-  @Test(groups ={ "Functional" })
+  @Test(groups = { "Functional" })
   public void testDeselectType_hideForAll()
   {
     selectSequences(1, 2);
@@ -393,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()
@@ -404,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;
   }
 
   /**
@@ -426,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(groups ={ "Functional" })
+  @Test(groups = { "Functional" })
   public void testDeselectType_hideForSelected()
   {
     selectSequences(1, 2);
@@ -461,7 +512,7 @@ public class AnnotationChooserTest
    * We expect all annotations of that type to be set visible. Other annotations
    * should be left unchanged
    */
-  @Test(groups ={ "Functional" })
+  @Test(groups = { "Functional" })
   public void testSelectType_showForAll()
   {
     selectSequences(1, 2);
@@ -469,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();
@@ -479,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);
+    }
   }
 
   /**
@@ -500,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(groups ={ "Functional" })
+  @Test(groups = { "Functional" })
   public void testSelectType_showForSelected()
   {
     // sequences 1 and 2 have annotations IUPred and Jmol
@@ -520,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);
+    }
   }
 
   /**
@@ -542,7 +587,7 @@ public class AnnotationChooserTest
    * We expect all annotations of that type to be set hidden. Other annotations
    * should be left unchanged.
    */
-  @Test(groups ={ "Functional" })
+  @Test(groups = { "Functional" })
   public void testDeselectType_showForAll()
   {
     selectSequences(1, 2);
@@ -551,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()
@@ -561,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
   }
 
   /**
@@ -583,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(groups ={ "Functional" })
+  @Test(groups = { "Functional" })
   public void testDeselectType_showForSelected()
   {
     selectSequences(1, 2);
@@ -602,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
   }
 
   /**
@@ -647,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));
   }
 
   /**
@@ -677,7 +726,7 @@ public class AnnotationChooserTest
    * Test cases include sequences in the selection group, and others not in the
    * group.
    */
-  @Test(groups ={ "Functional" })
+  @Test(groups = { "Functional" })
   public void testIsInActionScope_selectedScope()
   {
     // sequences 1 and 2 have annotations 4 and 3 respectively
@@ -690,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]));
   }
 
   /**
@@ -703,7 +752,7 @@ public class AnnotationChooserTest
    * Test cases include sequences in the selection group, and others not in the
    * group.
    */
-  @Test(groups ={ "Functional" })
+  @Test(groups = { "Functional" })
   public void testIsInActionScope_unselectedScope()
   {
     // sequences 1 and 2 have annotations 4 and 3 respectively
@@ -716,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(groups ={ "Functional" })
+  @Test(groups = { "Functional" })
   public void testResetOriginalState()
   {
     testee = new AnnotationChooser(parentPanel);
@@ -740,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);
@@ -753,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();