X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fgui%2FPopupMenuTest.java;h=d6b3bf9f47dc2f728a28974a2af887353e233007;hb=3609d4b908fa64cab35f2348401baab3347188fc;hp=9a09ce178b0016f3258979ea55e285f907f34940;hpb=2eea4e73351d902cd88923d863e9780fa57a0ee7;p=jalview.git diff --git a/test/jalview/gui/PopupMenuTest.java b/test/jalview/gui/PopupMenuTest.java index 9a09ce1..d6b3bf9 100644 --- a/test/jalview/gui/PopupMenuTest.java +++ b/test/jalview/gui/PopupMenuTest.java @@ -24,6 +24,8 @@ 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 jalview.bin.Cache; @@ -47,6 +49,7 @@ import jalview.util.MessageManager; import jalview.util.UrlConstants; import java.awt.Component; +import java.awt.Container; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; @@ -198,7 +201,7 @@ public class PopupMenuTest testee.configureReferenceAnnotationsMenu(menu, seqs); assertTrue(menu.isEnabled()); String s = MessageManager.getString("label.add_annotations_for"); - String expected = "

" + String expected = "

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

"; assertEquals(expected, menu.getToolTipText()); } @@ -221,7 +224,7 @@ public class PopupMenuTest testee.configureReferenceAnnotationsMenu(menu, seqs); assertTrue(menu.isEnabled()); String s = MessageManager.getString("label.add_annotations_for"); - String expected = "

" + String expected = "

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

"; assertEquals(expected, menu.getToolTipText()); } @@ -693,4 +696,75 @@ 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 + } }