X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fgui%2FPopupMenuTest.java;h=6f605883970a754380cd89201f80d4e127434d52;hb=948bd3bcbacc509da0cefaae3eedd97300a6ccce;hp=922d45758d1b2c784e40848d15fc3de0141716a8;hpb=483e7163b1fb8d4bcb9393014816c944befce328;p=jalview.git diff --git a/test/jalview/gui/PopupMenuTest.java b/test/jalview/gui/PopupMenuTest.java index 922d457..6f60588 100644 --- a/test/jalview/gui/PopupMenuTest.java +++ b/test/jalview/gui/PopupMenuTest.java @@ -26,21 +26,31 @@ import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertFalse; import static org.testng.AssertJUnit.assertTrue; +import jalview.bin.Cache; import jalview.datamodel.AlignmentAnnotation; import jalview.datamodel.AlignmentI; import jalview.datamodel.Annotation; +import jalview.datamodel.ColumnSelection; import jalview.datamodel.DBRefEntry; import jalview.datamodel.DBRefSource; +import jalview.datamodel.HiddenColumns; import jalview.datamodel.Sequence; +import jalview.datamodel.SequenceFeature; +import jalview.datamodel.SequenceGroup; import jalview.datamodel.SequenceI; import jalview.io.DataSourceType; import jalview.io.FileFormat; import jalview.io.FormatAdapter; +import jalview.urls.api.UrlProviderFactoryI; +import jalview.urls.desktop.DesktopUrlProviderFactory; import jalview.util.MessageManager; +import jalview.util.UrlConstants; import java.awt.Component; import java.io.IOException; import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; import java.util.List; import javax.swing.JMenu; @@ -80,6 +90,25 @@ public class PopupMenuTest @BeforeMethod(alwaysRun = true) public void setUp() throws IOException { + Cache.loadProperties("test/jalview/io/testProps.jvprops"); + String inMenuString = ("EMBL-EBI Search | http://www.ebi.ac.uk/ebisearch/search.ebi?db=allebi&query=$" + + SEQUENCE_ID + + "$" + + "|" + + "UNIPROT | http://www.uniprot.org/uniprot/$" + DB_ACCESSION + "$") + + "|" + + ("INTERPRO | http://www.ebi.ac.uk/interpro/entry/$" + + DB_ACCESSION + "$") + + "|" + + + // Gene3D entry tests for case (in)sensitivity + ("Gene3D | http://gene3d.biochem.ucl.ac.uk/Gene3D/search?sterm=$" + + DB_ACCESSION + "$&mode=protein"); + + UrlProviderFactoryI factory = new DesktopUrlProviderFactory( + UrlConstants.DEFAULT_LABEL, inMenuString, ""); + Preferences.sequenceUrlLinks = factory.createUrlProvider(); + alignment = new FormatAdapter().readFile(TEST_DATA, DataSourceType.PASTE, FileFormat.Fasta); AlignFrame af = new AlignFrame(alignment, 700, 500); @@ -100,7 +129,7 @@ public class PopupMenuTest public void testConfigureReferenceAnnotationsMenu_noSequenceSelected() { JMenuItem menu = new JMenuItem(); - List seqs = new ArrayList(); + List seqs = new ArrayList<>(); testee.configureReferenceAnnotationsMenu(menu, seqs); assertFalse(menu.isEnabled()); // now try null list @@ -321,7 +350,8 @@ public class PopupMenuTest assertEquals(4, showOptions.length); // includes 'All' and separator assertEquals(4, hideOptions.length); - assertEquals("All", ((JMenuItem) showOptions[0]).getText()); + String all = MessageManager.getString("label.all"); + assertEquals(all, ((JMenuItem) showOptions[0]).getText()); assertTrue(showOptions[1] instanceof JPopupMenu.Separator); assertEquals(JSeparator.HORIZONTAL, ((JSeparator) showOptions[1]).getOrientation()); @@ -331,7 +361,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()); @@ -383,12 +413,13 @@ public class PopupMenuTest assertEquals(2, showOptions.length); // includes 'All' and separator assertEquals(4, hideOptions.length); - assertEquals("All", ((JMenuItem) showOptions[0]).getText()); + String all = MessageManager.getString("label.all"); + assertEquals(all, ((JMenuItem) showOptions[0]).getText()); assertTrue(showOptions[1] instanceof JPopupMenu.Separator); assertEquals(JSeparator.HORIZONTAL, ((JSeparator) showOptions[1]).getOrientation()); - 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()); @@ -440,7 +471,8 @@ public class PopupMenuTest assertEquals(4, showOptions.length); // includes 'All' and separator assertEquals(2, hideOptions.length); - assertEquals("All", ((JMenuItem) showOptions[0]).getText()); + String all = MessageManager.getString("label.all"); + assertEquals(all, ((JMenuItem) showOptions[0]).getText()); assertTrue(showOptions[1] instanceof JPopupMenu.Separator); assertEquals(JSeparator.HORIZONTAL, ((JSeparator) showOptions[1]).getOrientation()); @@ -450,7 +482,7 @@ public class PopupMenuTest assertEquals("Temp", ((JMenuItem) showOptions[3]).getText()); assertEquals("PDB2", ((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()); @@ -466,8 +498,8 @@ public class PopupMenuTest List seqs = parentPanel.getAlignment().getSequences(); // create list of links and list of DBRefs - List links = new ArrayList(); - List refs = new ArrayList(); + List links = new ArrayList<>(); + List refs = new ArrayList<>(); // links as might be added into Preferences | Connections dialog links.add("EMBL-EBI Search | http://www.ebi.ac.uk/ebisearch/search.ebi?db=allebi&query=$" @@ -492,17 +524,19 @@ public class PopupMenuTest // add all the dbrefs to the sequences: Uniprot 1 each, Interpro all 3 to // seq0, Gene3D to seq1 - seqs.get(0).addDBRef(refs.get(0)); + SequenceI seq = seqs.get(0); + seq.addDBRef(refs.get(0)); - seqs.get(0).addDBRef(refs.get(1)); - seqs.get(0).addDBRef(refs.get(2)); - seqs.get(0).addDBRef(refs.get(3)); + seq.addDBRef(refs.get(1)); + seq.addDBRef(refs.get(2)); + seq.addDBRef(refs.get(3)); seqs.get(1).addDBRef(refs.get(4)); seqs.get(1).addDBRef(refs.get(5)); // get the Popup Menu for first sequence - testee = new PopupMenu(parentPanel, (Sequence) seqs.get(0), links); + List noFeatures = Collections. emptyList(); + testee = new PopupMenu(parentPanel, seq, noFeatures); Component[] seqItems = testee.sequenceMenu.getMenuComponents(); JMenu linkMenu = (JMenu) seqItems[6]; Component[] linkItems = linkMenu.getMenuComponents(); @@ -516,15 +550,18 @@ public class PopupMenuTest // sequence id for each link should match corresponding DB accession id for (int i = 1; i < 4; i++) { - assertEquals(refs.get(i - 1).getSource(), ((JMenuItem) linkItems[i]) + String msg = seq.getName() + " link[" + i + "]"; + assertEquals(msg, refs.get(i - 1).getSource(), + ((JMenuItem) linkItems[i]) .getText().split("\\|")[0]); - assertEquals(refs.get(i - 1).getAccessionId(), + assertEquals(msg, refs.get(i - 1).getAccessionId(), ((JMenuItem) linkItems[i]) .getText().split("\\|")[1]); } // get the Popup Menu for second sequence - testee = new PopupMenu(parentPanel, (Sequence) seqs.get(1), links); + seq = seqs.get(1); + testee = new PopupMenu(parentPanel, seq, noFeatures); seqItems = testee.sequenceMenu.getMenuComponents(); linkMenu = (JMenu) seqItems[6]; linkItems = linkMenu.getMenuComponents(); @@ -538,22 +575,136 @@ public class PopupMenuTest // sequence id for each link should match corresponding DB accession id for (int i = 1; i < 3; i++) { - assertEquals(refs.get(i + 3).getSource(), ((JMenuItem) linkItems[i]) + String msg = seq.getName() + " link[" + i + "]"; + assertEquals(msg, refs.get(i + 3).getSource(), + ((JMenuItem) linkItems[i]) .getText().split("\\|")[0].toUpperCase()); - assertEquals(refs.get(i + 3).getAccessionId(), + assertEquals(msg, refs.get(i + 3).getAccessionId(), ((JMenuItem) linkItems[i]).getText().split("\\|")[1]); } // if there are no valid links the Links submenu is disabled - List nomatchlinks = new ArrayList(); + List nomatchlinks = new ArrayList<>(); nomatchlinks.add("NOMATCH | http://www.uniprot.org/uniprot/$" + DB_ACCESSION + "$"); - testee = new PopupMenu(parentPanel, (Sequence) seqs.get(0), - nomatchlinks); + testee = new PopupMenu(parentPanel, seq, noFeatures); seqItems = testee.sequenceMenu.getMenuComponents(); linkMenu = (JMenu) seqItems[6]; assertFalse(linkMenu.isEnabled()); } + + /** + * Test for adding feature links + */ + @Test(groups = { "Functional" }) + public void testHideInsertions() + { + // get sequences from the alignment + List seqs = parentPanel.getAlignment().getSequences(); + + // add our own seqs to avoid problems with changes to existing sequences + // (gap at end of sequences varies depending on how tests are run!) + Sequence seqGap1 = new Sequence("GappySeq", + "AAAA----AA-AAAAAAA---AAA-----------AAAAAAAAAA--"); + seqGap1.createDatasetSequence(); + seqs.add(seqGap1); + Sequence seqGap2 = new Sequence("LessGappySeq", + "AAAAAA-AAAAA---AAA--AAAAA--AAAAAAA-AAAAAA"); + seqGap2.createDatasetSequence(); + seqs.add(seqGap2); + Sequence seqGap3 = new Sequence("AnotherGapSeq", + "AAAAAA-AAAAAA--AAAAAA-AAAAAAAAAAA---AAAAAAAA"); + seqGap3.createDatasetSequence(); + seqs.add(seqGap3); + Sequence seqGap4 = new Sequence("NoGaps", + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"); + seqGap4.createDatasetSequence(); + seqs.add(seqGap4); + + ColumnSelection sel = new ColumnSelection(); + parentPanel.av.getAlignment().getHiddenColumns() + .revealAllHiddenColumns(sel); + + // get the Popup Menu for 7th sequence - no insertions + testee = new PopupMenu(parentPanel, seqs.get(7), null); + testee.hideInsertions_actionPerformed(null); + + HiddenColumns hidden = parentPanel.av.getAlignment().getHiddenColumns(); + Iterator it = hidden.iterator(); + assertFalse(it.hasNext()); + + // get the Popup Menu for GappySeq - this time we have insertions + testee = new PopupMenu(parentPanel, seqs.get(4), null); + testee.hideInsertions_actionPerformed(null); + hidden = parentPanel.av.getAlignment().getHiddenColumns(); + it = hidden.iterator(); + + assertTrue(it.hasNext()); + int[] region = it.next(); + assertEquals(region[0], 4); + assertEquals(region[1], 7); + + assertTrue(it.hasNext()); + region = it.next(); + assertEquals(region[0], 10); + assertEquals(region[1], 10); + + assertTrue(it.hasNext()); + region = it.next(); + assertEquals(region[0], 18); + assertEquals(region[1], 20); + + assertTrue(it.hasNext()); + region = it.next(); + assertEquals(region[0], 24); + assertEquals(region[1], 34); + + assertTrue(it.hasNext()); + region = it.next(); + assertEquals(region[0], 45); + assertEquals(region[1], 46); + + assertFalse(it.hasNext()); + + sel = new ColumnSelection(); + hidden.revealAllHiddenColumns(sel); + + // make a sequence group and hide insertions within the group + SequenceGroup sg = new SequenceGroup(); + sg.setStartRes(8); + sg.setEndRes(42); + sg.addSequence(seqGap2, false); + sg.addSequence(seqGap3, false); + parentPanel.av.setSelectionGroup(sg); + + // hide columns outside and within selection + // only hidden columns outside the collection will be retained (unless also + // gaps in the selection) + hidden.hideColumns(1, 10); + hidden.hideColumns(31, 40); + + // get the Popup Menu for LessGappySeq in the sequence group + testee = new PopupMenu(parentPanel, seqs.get(5), null); + testee.hideInsertions_actionPerformed(null); + hidden = parentPanel.av.getAlignment().getHiddenColumns(); + it = hidden.iterator(); + + assertTrue(it.hasNext()); + region = it.next(); + assertEquals(region[0], 1); + assertEquals(region[1], 7); + + assertTrue(it.hasNext()); + region = it.next(); + assertEquals(region[0], 13); + assertEquals(region[1], 14); + + assertTrue(it.hasNext()); + region = it.next(); + assertEquals(region[0], 34); + assertEquals(region[1], 34); + } + }