X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=test%2Fjalview%2Fgui%2FPopupMenuTest.java;h=cc13fb91f55f8c2ffd059fae3dc2b3d680088e1d;hb=4f30214e8098748469c6a4269ac2ed6c5750e4b0;hp=fc60949e7a6cf0acf6ef2c1acf75e3a620f6e0ff;hpb=0b573ed90b14079f7326281f50c0c9cffdace586;p=jalview.git diff --git a/test/jalview/gui/PopupMenuTest.java b/test/jalview/gui/PopupMenuTest.java index fc60949..cc13fb9 100644 --- a/test/jalview/gui/PopupMenuTest.java +++ b/test/jalview/gui/PopupMenuTest.java @@ -24,8 +24,27 @@ 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.datamodel.AlignmentAnnotation; import jalview.datamodel.AlignmentI; @@ -46,22 +65,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 { @@ -198,9 +201,6 @@ 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
"; @@ -225,11 +225,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 = "" - + "
Add annotations for
Jmol/secondary structure
PDB/Temp
"; + + "
" + s + + "
Jmol/secondary structure
PDB/Temp
"; assertEquals(expected, menu.getToolTipText()); } @@ -697,4 +695,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 + } }