X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=test%2Fjalview%2Fgui%2FPopupMenuTest.java;h=5e83942892d623fcc532c48a96187d72f032c11d;hb=refs%2Fheads%2Ffeature%2FJAL-3468featureDescriptionEllipsis;hp=bf961d811c56e5ec68b567e69fcd7eb9619b20b5;hpb=83dd6154fdf5f727bc587ef58790c08e8404b757;p=jalview.git
diff --git a/test/jalview/gui/PopupMenuTest.java b/test/jalview/gui/PopupMenuTest.java
index bf961d8..5e83942 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());
}
@@ -690,4 +693,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
+ }
}