X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fgui%2FPopupMenuTest.java;h=7636bdafb636ef7d1d10db714add807160eb263c;hb=57738a1f3c19b1c3a00bd3ac5108f8cd0af32f99;hp=df8649424711cccade98c4f87e563026605f0abf;hpb=4eb8d7a0f14e5dd1dc5ad5ad0960bae9b25fa043;p=jalview.git diff --git a/test/jalview/gui/PopupMenuTest.java b/test/jalview/gui/PopupMenuTest.java index df86494..7636bda 100644 --- a/test/jalview/gui/PopupMenuTest.java +++ b/test/jalview/gui/PopupMenuTest.java @@ -24,9 +24,29 @@ import static jalview.util.UrlConstants.DB_ACCESSION; import static jalview.util.UrlConstants.SEQUENCE_ID; import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertFalse; +import static org.testng.AssertJUnit.assertNotNull; +import static org.testng.AssertJUnit.assertNull; import static org.testng.AssertJUnit.assertTrue; +import java.awt.Component; +import java.awt.Container; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; + +import javax.swing.JMenu; +import javax.swing.JMenuItem; +import javax.swing.JPopupMenu; +import javax.swing.JSeparator; + +import org.testng.annotations.BeforeClass; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; + import jalview.bin.Cache; +import jalview.bin.Console; import jalview.datamodel.AlignmentAnnotation; import jalview.datamodel.AlignmentI; import jalview.datamodel.Annotation; @@ -46,22 +66,6 @@ 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; -import javax.swing.JMenuItem; -import javax.swing.JPopupMenu; -import javax.swing.JSeparator; - -import org.testng.annotations.BeforeClass; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - public class PopupMenuTest { @@ -91,18 +95,15 @@ public class PopupMenuTest public void setUp() throws IOException { Cache.loadProperties("test/jalview/io/testProps.jvprops"); - Cache.initLogger(); + Console.initLogger(); 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 + "$") - + "|" + + 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"); @@ -115,7 +116,7 @@ public class PopupMenuTest DataSourceType.PASTE, FileFormat.Fasta); AlignFrame af = new AlignFrame(alignment, 700, 500); parentPanel = new AlignmentPanel(af, af.getViewport()); - testee = new PopupMenu(parentPanel, null, null); + testee = new PopupMenu(parentPanel, alignment.getSequenceAt(0), null); int i = 0; for (SequenceI seq : alignment.getSequences()) { @@ -198,8 +199,9 @@ public class PopupMenuTest testee.configureReferenceAnnotationsMenu(menu, seqs); assertTrue(menu.isEnabled()); String s = MessageManager.getString("label.add_annotations_for"); - String expected = "

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

"; + String expected = "" + + "
" + s + + "
Jmol/secondary structure
PDB/Temp
"; assertEquals(expected, menu.getToolTipText()); } @@ -221,8 +223,9 @@ public class PopupMenuTest testee.configureReferenceAnnotationsMenu(menu, seqs); assertTrue(menu.isEnabled()); String s = MessageManager.getString("label.add_annotations_for"); - String expected = "

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

"; + String expected = "" + + "
" + s + + "
Jmol/secondary structure
PDB/Temp
"; assertEquals(expected, menu.getToolTipText()); } @@ -509,14 +512,14 @@ public class PopupMenuTest seq0.addDBRef(new DBRefEntry("INTERPRO", "1", "IPR006058")); seq1.addDBRef(new DBRefEntry(DBRefSource.UNIPROT, "1", "Q9ZTS2")); seq1.addDBRef(new DBRefEntry("GENE3D", "1", "3.10.20.30")); - + /* * check the Link Menu for the first sequence */ JMenu linkMenu = PopupMenu.buildLinkMenu(seq0, noFeatures); assertEquals(linkText, linkMenu.getText()); Component[] linkItems = linkMenu.getMenuComponents(); - + /* * menu items are ordered: SEQUENCE_ID search first, then dbrefs in order * of database name (and within that by order of dbref addition) @@ -586,7 +589,7 @@ public class PopupMenuTest { // 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", @@ -613,7 +616,7 @@ public class PopupMenuTest // 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()); @@ -690,4 +693,74 @@ public class PopupMenuTest assertEquals(region[1], 34); } + @Test(groups = { "Functional" }) + public void testAddFeatureDetails() + { + String menuText = MessageManager.getString("label.feature_details"); + + /* + * with no features, sub-menu should not be created + */ + List features = new ArrayList<>(); + SequenceI seq = this.alignment.getSequenceAt(0); // FER_CAPAA/1-12 + testee.addFeatureDetails(features, seq, 10); + JMenu menu = findMenu(testee, menuText); + assertNull(menu); + + /* + * add some features; the menu item text is wrapped in html, and includes + * feature type, position, description, group (if not null) + */ + SequenceFeature sf1 = new SequenceFeature("helix", "curly", 2, 6, null); + SequenceFeature sf2 = new SequenceFeature("chain", "straight", 1, 1, + "uniprot"); + features.add(sf1); + features.add(sf2); + testee.addFeatureDetails(features, seq, 10); + menu = findMenu(testee, menuText); + assertNotNull(menu); + assertEquals(2, menu.getItemCount()); + JMenuItem item = menu.getItem(0); + assertEquals("helix 2-6 curly", item.getText()); + item = menu.getItem(1); + assertEquals("chain 1 straight (uniprot)", item.getText()); + + /* + * long feature descriptions are truncated to 40 characters + */ + sf1.setDescription("this is a quite extraordinarily long description"); + testee.remove(menu); // don't create the sub-menu twice + testee.addFeatureDetails(features, seq, 10); + menu = findMenu(testee, menuText); + item = menu.getItem(0); + assertEquals( + "helix 2-6 this is a quite extraordinarily long des...", + item.getText()); + } + + /** + * Returns the first component which is a JMenu with the given text + * + * @param c + * @param text + * @return + */ + private JMenu findMenu(Container c, String text) + { + for (int i = 0; i < c.getComponentCount(); i++) + { + Component comp = c.getComponent(i); + if ((comp instanceof JMenu) && ((JMenu) comp).getText().equals(text)) + { + return (JMenu) comp; + } + } + return null; + } + + @Test(groups = { "Functional" }) + public void testAddFeatureDetails_linkedFeatures() + { + // todo tests that verify menu items for complement features + } }