From: kiramt Date: Tue, 26 Sep 2017 10:56:39 +0000 (+0100) Subject: JAL-2740 removed unwanted code, added unit test X-Git-Tag: Release_2_10_3b1~5^2~4^2~1 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=f1e2d882404c5cdc821a772f0bd6103a226822ac;p=jalview.git JAL-2740 removed unwanted code, added unit test --- diff --git a/src/jalview/appletgui/AnnotationColumnChooser.java b/src/jalview/appletgui/AnnotationColumnChooser.java index b4c1d54..0ff9a33 100644 --- a/src/jalview/appletgui/AnnotationColumnChooser.java +++ b/src/jalview/appletgui/AnnotationColumnChooser.java @@ -46,7 +46,6 @@ import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.TextEvent; import java.awt.event.TextListener; -import java.util.ArrayList; import java.util.Vector; //import javax.swing.JPanel; @@ -293,16 +292,6 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements { HiddenColumns oldHidden = av.getAnnotationColumnSelectionState() .getOldHiddenColumns(); - if (oldHidden != null) - { - ArrayList regions = oldHidden.getHiddenColumnsCopy(); - for (int[] positions : regions) - { - av.hideColumns(positions[0], positions[1]); - } - } - // TODO not clear why we need to hide all the columns (above) if we are - // going to copy the hidden columns over wholesale anyway av.getAlignment().setHiddenColumns(oldHidden); } av.sendSelection(); diff --git a/src/jalview/gui/AnnotationColumnChooser.java b/src/jalview/gui/AnnotationColumnChooser.java index 84b2c6f..8dd988e 100644 --- a/src/jalview/gui/AnnotationColumnChooser.java +++ b/src/jalview/gui/AnnotationColumnChooser.java @@ -36,7 +36,6 @@ import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.awt.event.KeyEvent; -import java.util.ArrayList; import javax.swing.ButtonGroup; import javax.swing.JCheckBox; @@ -241,16 +240,6 @@ public class AnnotationColumnChooser extends AnnotationRowFilter { HiddenColumns oldHidden = av.getAnnotationColumnSelectionState() .getOldHiddenColumns(); - if (oldHidden != null) - { - ArrayList regions = oldHidden.getHiddenColumnsCopy(); - for (int[] positions : regions) - { - av.hideColumns(positions[0], positions[1]); - } - } - // TODO not clear why we need to hide all the columns (above) if we are - // going to copy the hidden columns over wholesale anyway av.getAlignment().setHiddenColumns(oldHidden); } av.sendSelection(); diff --git a/test/jalview/gui/AnnotationColumnChooserTest.java b/test/jalview/gui/AnnotationColumnChooserTest.java new file mode 100644 index 0000000..a9b973e --- /dev/null +++ b/test/jalview/gui/AnnotationColumnChooserTest.java @@ -0,0 +1,156 @@ +/* + * 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 jalview.analysis.AnnotationSorter.SequenceAnnotationOrder; +import jalview.bin.Cache; +import jalview.datamodel.AlignmentAnnotation; +import jalview.datamodel.AlignmentI; +import jalview.datamodel.Annotation; +import jalview.datamodel.HiddenColumns; +import jalview.datamodel.SequenceI; +import jalview.io.DataSourceType; +import jalview.io.FileFormat; +import jalview.io.FormatAdapter; + +import java.io.IOException; +import java.util.List; + +import org.testng.annotations.BeforeClass; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; + +/** + * Unit tests for AnnotationChooser + * + * @author kmourao + * + */ +public class AnnotationColumnChooserTest +{ + @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" + + ">FER_CAPAN Ferredoxin, chloroplast precursor\n" + + "TIETHKEAELVG-\n" + + ">FER1_SOLLC Ferredoxin-1, chloroplast precursor\n" + + "TIETHKEEELTA-\n" + ">Q93XJ9_SOLTU Ferredoxin I precursor\n" + + "TIETHKEEELTA-\n"; + + AnnotationChooser testee; + + AlignmentPanel parentPanel; + + AlignFrame af; + + @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 FormatAdapter().readFile(TEST_DATA, + DataSourceType.PASTE, FileFormat.Fasta); + af = new AlignFrame(al, 700, 500); + parentPanel = new AlignmentPanel(af, af.getViewport()); + addAnnotations(); + } + + /** + * 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'
+   */
+  private void addAnnotations()
+  {
+    Annotation an = new Annotation(2f);
+    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);
+    AlignmentAnnotation ann3 = new AlignmentAnnotation("IUPRED", "", anns);
+    AlignmentAnnotation ann4 = new AlignmentAnnotation("JMol", "", anns);
+    SequenceI[] seqs = parentPanel.getAlignment().getSequencesArray();
+    ann0.setSequenceRef(seqs[0]);
+    ann2.setSequenceRef(seqs[3]);
+    ann3.setSequenceRef(seqs[2]);
+    ann4.setSequenceRef(seqs[1]);
+    parentPanel.getAlignment().addAnnotation(ann0);
+    parentPanel.getAlignment().addAnnotation(ann1);
+    parentPanel.getAlignment().addAnnotation(ann2);
+    parentPanel.getAlignment().addAnnotation(ann3);
+    parentPanel.getAlignment().addAnnotation(ann4);
+  }
+
+  /**
+   * Test reset
+   */
+  @Test(groups = { "Functional" })
+  public void testReset()
+  {
+    AnnotationColumnChooser acc = new AnnotationColumnChooser(
+            af.getViewport(), af.alignPanel);
+
+    HiddenColumns oldhidden = new HiddenColumns();
+    oldhidden.hideColumns(10, 20);
+    acc.setOldHiddenColumns(oldhidden);
+
+    HiddenColumns newHidden = new HiddenColumns();
+    newHidden.hideColumns(0, 3);
+    newHidden.hideColumns(22, 25);
+    af.getViewport().setHiddenColumns(newHidden);
+
+    HiddenColumns currentHidden = af.getViewport().getAlignment()
+            .getHiddenColumns();
+    List regions = currentHidden.getHiddenColumnsCopy();
+    assertEquals(regions.get(0)[0], 0);
+    assertEquals(regions.get(0)[1], 3);
+    assertEquals(regions.get(1)[0], 22);
+    assertEquals(regions.get(1)[1], 25);
+
+    // now reset hidden columns
+    acc.reset();
+    currentHidden = af.getViewport().getAlignment().getHiddenColumns();
+    regions = currentHidden.getHiddenColumnsCopy();
+    assertEquals(regions.get(0)[0], 10);
+    assertEquals(regions.get(0)[1], 20);
+  }
+}