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
+ }
}