X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fgui%2FPopupMenuTest.java;h=edf320277fc35fe5d30c58cc9ac789862c627604;hb=37de9310bec3501cbc6381e0c3dcb282fcaad812;hp=1d219df089e8d20c0ba0e43b6522ea918b74efbd;hpb=c46ac1bbccd595dfeb504220b465023d38815223;p=jalview.git diff --git a/test/jalview/gui/PopupMenuTest.java b/test/jalview/gui/PopupMenuTest.java index 1d219df..edf3202 100644 --- a/test/jalview/gui/PopupMenuTest.java +++ b/test/jalview/gui/PopupMenuTest.java @@ -1,12 +1,35 @@ +/* + * 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.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; +import static org.testng.AssertJUnit.assertEquals; +import static org.testng.AssertJUnit.assertFalse; +import static org.testng.AssertJUnit.assertTrue; + import jalview.datamodel.AlignmentAnnotation; import jalview.datamodel.AlignmentI; +import jalview.datamodel.Annotation; import jalview.datamodel.SequenceI; import jalview.io.AppletFormatAdapter; +import jalview.io.FormatAdapter; import jalview.util.MessageManager; import java.awt.Component; @@ -19,8 +42,8 @@ import javax.swing.JMenuItem; import javax.swing.JPopupMenu; import javax.swing.JSeparator; -import org.junit.Before; -import org.junit.Test; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; public class PopupMenuTest { @@ -39,10 +62,10 @@ public class PopupMenuTest PopupMenu testee = null; - @Before + @BeforeMethod(alwaysRun = true) public void setUp() throws IOException { - alignment = new jalview.io.FormatAdapter().readFile(TEST_DATA, + alignment = new FormatAdapter().readFile(TEST_DATA, AppletFormatAdapter.PASTE, "FASTA"); AlignFrame af = new AlignFrame(alignment, 700, 500); parentPanel = new AlignmentPanel(af, af.getViewport()); @@ -50,27 +73,24 @@ public class PopupMenuTest int i = 0; for (SequenceI seq : alignment.getSequences()) { - final AlignmentAnnotation annotation = new AlignmentAnnotation("label" + i, - "desc" + i, i); + final AlignmentAnnotation annotation = new AlignmentAnnotation( + "label" + i, "desc" + i, i); annotation.setCalcId("calcId" + i); seq.addAlignmentAnnotation(annotation); annotation.setSequenceRef(seq); } } - @Test + @Test(groups = { "Functional" }) public void testConfigureReferenceAnnotationsMenu_noSequenceSelected() { JMenuItem menu = new JMenuItem(); List seqs = new ArrayList(); testee.configureReferenceAnnotationsMenu(menu, seqs); assertFalse(menu.isEnabled()); - assertEquals( - MessageManager.getString("label.add_reference_annotations"), - menu.getText()); // now try null list menu.setEnabled(true); - testee.configureReferenceAnnotationsMenu(menu, seqs); + testee.configureReferenceAnnotationsMenu(menu, null); assertFalse(menu.isEnabled()); } @@ -79,18 +99,17 @@ public class PopupMenuTest * are no reference annotations to add to the alignment. The menu item should * be disabled. */ - @Test + @Test(groups = { "Functional" }) public void testConfigureReferenceAnnotationsMenu_noReferenceAnnotations() { JMenuItem menu = new JMenuItem(); - List seqs = new ArrayList(); /* * Initial state is that sequences have annotations, and have dataset * sequences, but the dataset sequences have no annotations. Hence nothing * to add. */ - seqs = parentPanel.getAlignment().getSequences(); + List seqs = parentPanel.getAlignment().getSequences(); testee.configureReferenceAnnotationsMenu(menu, seqs); assertFalse(menu.isEnabled()); @@ -101,16 +120,16 @@ public class PopupMenuTest * reference annotations are already on the alignment. The menu item should be * disabled. */ - @Test + @Test(groups = { "Functional" }) public void testConfigureReferenceAnnotationsMenu_alreadyAdded() { JMenuItem menu = new JMenuItem(); - List seqs = new ArrayList(); + List seqs = parentPanel.getAlignment().getSequences(); + + // make up new annotations and add to dataset sequences, sequences and + // alignment + attachReferenceAnnotations(seqs, true, true); - seqs = parentPanel.getAlignment().getSequences(); - // copy annotation from sequence to dataset - seqs.get(1).getDatasetSequence() - .addAlignmentAnnotation(seqs.get(1).getAnnotation()[0]); testee.configureReferenceAnnotationsMenu(menu, seqs); assertFalse(menu.isEnabled()); } @@ -121,40 +140,120 @@ public class PopupMenuTest * The menu item should be enabled, and acquire a tooltip which lists the * annotation sources (calcIds) and type (labels). */ - @Test + @Test(groups = { "Functional" }) public void testConfigureReferenceAnnotationsMenu() { JMenuItem menu = new JMenuItem(); List seqs = parentPanel.getAlignment().getSequences(); + // make up new annotations and add to dataset sequences + attachReferenceAnnotations(seqs, false, false); + + testee.configureReferenceAnnotationsMenu(menu, seqs); + assertTrue(menu.isEnabled()); + String s = MessageManager.getString("label.add_annotations_for"); + String expected = "

" + + s + "
Jmol/secondary structure
PDB/Temp

"; + assertEquals(expected, menu.getToolTipText()); + } + + /** + * Test building the 'add reference annotations' menu for the case where + * several reference annotations are on the dataset and the sequences but not + * on the alignment. The menu item should be enabled, and acquire a tooltip + * which lists the annotation sources (calcIds) and type (labels). + */ + @Test(groups = { "Functional" }) + public void testConfigureReferenceAnnotationsMenu_notOnAlignment() + { + JMenuItem menu = new JMenuItem(); + List seqs = parentPanel.getAlignment().getSequences(); + + // make up new annotations and add to dataset sequences and sequences + attachReferenceAnnotations(seqs, true, false); + + testee.configureReferenceAnnotationsMenu(menu, seqs); + assertTrue(menu.isEnabled()); + String s = MessageManager.getString("label.add_annotations_for"); + String expected = "

" + + s + "
Jmol/secondary structure
PDB/Temp

"; + assertEquals(expected, menu.getToolTipText()); + } + /** + * Generate annotations and add to dataset sequences and (optionally) + * sequences and/or alignment + * + * @param seqs + * @param addToSequence + * @param addToAlignment + */ + private void attachReferenceAnnotations(List seqs, + boolean addToSequence, boolean addToAlignment) + { // PDB.secondary structure on Sequence0 AlignmentAnnotation annotation = new AlignmentAnnotation( "secondary structure", "", 0); - annotation.setCalcId("PBD"); + annotation.setCalcId("PDB"); seqs.get(0).getDatasetSequence().addAlignmentAnnotation(annotation); + if (addToSequence) + { + seqs.get(0).addAlignmentAnnotation(annotation); + } + if (addToAlignment) + { + this.alignment.addAnnotation(annotation); + } // PDB.Temp on Sequence1 annotation = new AlignmentAnnotation("Temp", "", 0); - annotation.setCalcId("PBD"); + annotation.setCalcId("PDB"); seqs.get(1).getDatasetSequence().addAlignmentAnnotation(annotation); + if (addToSequence) + { + seqs.get(1).addAlignmentAnnotation(annotation); + } + if (addToAlignment) + { + this.alignment.addAnnotation(annotation); + } // JMOL.secondary structure on Sequence0 annotation = new AlignmentAnnotation("secondary structure", "", 0); - annotation.setCalcId("JMOL"); + annotation.setCalcId("Jmol"); seqs.get(0).getDatasetSequence().addAlignmentAnnotation(annotation); + if (addToSequence) + { + seqs.get(0).addAlignmentAnnotation(annotation); + } + if (addToAlignment) + { + this.alignment.addAnnotation(annotation); + } + } - testee.configureReferenceAnnotationsMenu(menu, seqs); - assertTrue(menu.isEnabled()); - String expected = "
Add annotations for
JMOL/secondary structure
PBD/Temp
"; - assertEquals(expected, menu.getToolTipText()); + /** + * Test building the 'add reference annotations' menu for the case where there + * are two alignment views: + *
    + *
  • in one view, reference annotations have been added (are on the + * datasets, sequences and alignment)
  • + *
  • in the current view, reference annotations are on the dataset and + * sequence, but not the alignment
  • + *
+ * The menu item should be enabled, and acquire a tooltip which lists the + * annotation sources (calcIds) and type (labels). + */ + @Test(groups = { "Functional" }) + public void testConfigureReferenceAnnotationsMenu_twoViews() + { } /** * Test for building menu options including 'show' and 'hide' annotation * types. */ - @Test + @Test(groups = { "Functional" }) public void testBuildAnnotationTypesMenus() { JMenu showMenu = new JMenu(); @@ -165,28 +264,29 @@ public class PopupMenuTest // PDB.secondary structure on Sequence0 AlignmentAnnotation annotation = new AlignmentAnnotation( - "secondary structure", "", 0); + "secondary structure", "", new Annotation[] {}); annotation.setCalcId("PDB"); annotation.visible = true; seqs.get(0).addAlignmentAnnotation(annotation); parentPanel.getAlignment().addAnnotation(annotation); // JMOL.secondary structure on Sequence0 - hidden - annotation = new AlignmentAnnotation("secondary structure", "", 0); + annotation = new AlignmentAnnotation("secondary structure", "", + new Annotation[] {}); annotation.setCalcId("JMOL"); annotation.visible = false; seqs.get(0).addAlignmentAnnotation(annotation); parentPanel.getAlignment().addAnnotation(annotation); // Jpred.SSP on Sequence0 - hidden - annotation = new AlignmentAnnotation("SSP", "", 0); + annotation = new AlignmentAnnotation("SSP", "", new Annotation[] {}); annotation.setCalcId("JPred"); annotation.visible = false; seqs.get(0).addAlignmentAnnotation(annotation); parentPanel.getAlignment().addAnnotation(annotation); // PDB.Temp on Sequence1 - annotation = new AlignmentAnnotation("Temp", "", 0); + annotation = new AlignmentAnnotation("Temp", "", new Annotation[] {}); annotation.setCalcId("PDB"); annotation.visible = true; seqs.get(1).addAlignmentAnnotation(annotation); @@ -206,8 +306,7 @@ public class PopupMenuTest assertEquals(4, showOptions.length); // includes 'All' and separator assertEquals(4, hideOptions.length); - assertEquals("All", - ((JMenuItem) showOptions[0]).getText()); + assertEquals("All", ((JMenuItem) showOptions[0]).getText()); assertTrue(showOptions[1] instanceof JPopupMenu.Separator); assertEquals(JSeparator.HORIZONTAL, ((JSeparator) showOptions[1]).getOrientation()); @@ -217,8 +316,7 @@ public class PopupMenuTest assertEquals("SSP", ((JMenuItem) showOptions[3]).getText()); assertEquals("JPred", ((JMenuItem) showOptions[3]).getToolTipText()); - assertEquals("All", - ((JMenuItem) hideOptions[0]).getText()); + assertEquals("All", ((JMenuItem) hideOptions[0]).getText()); assertTrue(hideOptions[1] instanceof JPopupMenu.Separator); assertEquals(JSeparator.HORIZONTAL, ((JSeparator) hideOptions[1]).getOrientation()); @@ -232,7 +330,7 @@ public class PopupMenuTest /** * Test for building menu options with only 'hide' annotation types enabled. */ - @Test + @Test(groups = { "Functional" }) public void testBuildAnnotationTypesMenus_showDisabled() { JMenu showMenu = new JMenu(); @@ -243,14 +341,14 @@ public class PopupMenuTest // PDB.secondary structure on Sequence0 AlignmentAnnotation annotation = new AlignmentAnnotation( - "secondary structure", "", 0); + "secondary structure", "", new Annotation[] {}); annotation.setCalcId("PDB"); annotation.visible = true; seqs.get(0).addAlignmentAnnotation(annotation); parentPanel.getAlignment().addAnnotation(annotation); // PDB.Temp on Sequence1 - annotation = new AlignmentAnnotation("Temp", "", 0); + annotation = new AlignmentAnnotation("Temp", "", new Annotation[] {}); annotation.setCalcId("PDB"); annotation.visible = true; seqs.get(1).addAlignmentAnnotation(annotation); @@ -289,7 +387,7 @@ public class PopupMenuTest /** * Test for building menu options with only 'show' annotation types enabled. */ - @Test + @Test(groups = { "Functional" }) public void testBuildAnnotationTypesMenus_hideDisabled() { JMenu showMenu = new JMenu(); @@ -300,14 +398,14 @@ public class PopupMenuTest // PDB.secondary structure on Sequence0 AlignmentAnnotation annotation = new AlignmentAnnotation( - "secondary structure", "", 0); + "secondary structure", "", new Annotation[] {}); annotation.setCalcId("PDB"); annotation.visible = false; seqs.get(0).addAlignmentAnnotation(annotation); parentPanel.getAlignment().addAnnotation(annotation); // PDB.Temp on Sequence1 - annotation = new AlignmentAnnotation("Temp", "", 0); + annotation = new AlignmentAnnotation("Temp", "", new Annotation[] {}); annotation.setCalcId("PDB2"); annotation.visible = false; seqs.get(1).addAlignmentAnnotation(annotation);