JAL-4274 Use Cache BITMAP_* if no other image restrictions given
[jalview.git] / test / jalview / util / UrlLinkTest.java
index 4092cf2..cea1bf2 100644 (file)
@@ -33,6 +33,7 @@ import jalview.datamodel.Sequence;
 import jalview.gui.JvOptionPane;
 
 import java.util.ArrayList;
+import java.util.Comparator;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
@@ -61,7 +62,7 @@ public class UrlLinkTest
   final static String DELIM = "$";
 
   final static String REGEX_NESTED = "=/^(?:Label:)?(?:(?:gi\\|(\\d+))|([^:]+))/=";
-  
+
   final static String REGEX_RUBBISH = "=/[0-9]++/=";
 
   /**
@@ -154,11 +155,9 @@ public class UrlLinkTest
     assertEquals(REGEX_RUBBISH.substring(2, REGEX_RUBBISH.length() - 2),
             ul.getRegexReplace());
     assertFalse(ul.isValid());
-    assertEquals(
-            "Invalid Regular Expression : '"
-                    + REGEX_RUBBISH.substring(2, REGEX_RUBBISH.length() - 2)
-                    + "'\n",
-            ul.getInvalidMessage());
+    assertEquals("Invalid Regular Expression : '"
+            + REGEX_RUBBISH.substring(2, REGEX_RUBBISH.length() - 2)
+            + "'\n", ul.getInvalidMessage());
   }
 
   /**
@@ -271,7 +270,7 @@ public class UrlLinkTest
     UrlLink ul = new UrlLink(DB + SEP + URL_PREFIX + DELIM + SEQUENCE_ID
             + DELIM + URL_SUFFIX);
 
-    Map<String, List<String>> linkset = new LinkedHashMap<String, List<String>>();
+    Map<String, List<String>> linkset = new LinkedHashMap<>();
     ul.createLinksFromSeq(null, linkset);
 
     String key = DB + SEP + URL_PREFIX;
@@ -291,7 +290,7 @@ public class UrlLinkTest
   {
     UrlLink ul = new UrlLink(DB + SEP + URL_PREFIX + URL_SUFFIX);
 
-    Map<String, List<String>> linkset = new LinkedHashMap<String, List<String>>();
+    Map<String, List<String>> linkset = new LinkedHashMap<>();
     ul.createLinksFromSeq(null, linkset);
 
     String key = DB + SEP + URL_PREFIX + URL_SUFFIX;
@@ -311,12 +310,13 @@ public class UrlLinkTest
   {
 
     // create list of links and list of DBRefs
-    List<String> links = new ArrayList<String>();
-    List<DBRefEntry> refs = new ArrayList<DBRefEntry>();
+    List<String> links = new ArrayList<>();
+    List<DBRefEntry> refs = new ArrayList<>();
 
     // links as might be added into Preferences | Connections dialog
-    links.add("EMBL-EBI Search | http://www.ebi.ac.uk/ebisearch/search.ebi?db=allebi&query=$"
-            + SEQUENCE_ID + "$");
+    links.add(
+            "EMBL-EBI Search | http://www.ebi.ac.uk/ebisearch/search.ebi?db=allebi&query=$"
+                    + SEQUENCE_ID + "$");
     links.add("UNIPROT | http://www.uniprot.org/uniprot/$" + DB_ACCESSION
             + "$");
     links.add("INTERPRO | http://www.ebi.ac.uk/interpro/entry/$"
@@ -341,7 +341,7 @@ public class UrlLinkTest
     UrlLink ul = new UrlLink(DB + SEP + URL_PREFIX + DELIM + SEQUENCE_ID
             + DELIM + URL_SUFFIX);
 
-    Map<String, List<String>> linkset = new LinkedHashMap<String, List<String>>();
+    Map<String, List<String>> linkset = new LinkedHashMap<>();
     ul.createLinksFromSeq(seq0, linkset);
 
     String key = seq0.getName() + SEP + URL_PREFIX + seq0.getName()
@@ -351,27 +351,27 @@ public class UrlLinkTest
     assertEquals(DB, linkset.get(key).get(0));
     assertEquals(DB, linkset.get(key).get(1));
     assertEquals(seq0.getName(), linkset.get(key).get(2));
-    assertEquals(URL_PREFIX + seq0.getName() + URL_SUFFIX, linkset.get(key)
-            .get(3));
+    assertEquals(URL_PREFIX + seq0.getName() + URL_SUFFIX,
+            linkset.get(key).get(3));
 
     // Test where link takes a db annotation id and only has one dbref
     ul = new UrlLink(links.get(1));
-    linkset = new LinkedHashMap<String, List<String>>();
+    linkset = new LinkedHashMap<>();
     ul.createLinksFromSeq(seq0, linkset);
 
     key = "P83527|http://www.uniprot.org/uniprot/P83527";
     assertEquals(linkset.size(), 1);
     assertTrue(linkset.containsKey(key));
     assertEquals(DBRefSource.UNIPROT, linkset.get(key).get(0));
-    assertEquals(DBRefSource.UNIPROT + SEP + "P83527", linkset.get(key)
-            .get(1));
+    assertEquals(DBRefSource.UNIPROT + SEP + "P83527",
+            linkset.get(key).get(1));
     assertEquals("P83527", linkset.get(key).get(2));
-    assertEquals("http://www.uniprot.org/uniprot/P83527", linkset.get(key)
-            .get(3));
+    assertEquals("http://www.uniprot.org/uniprot/P83527",
+            linkset.get(key).get(3));
 
     // Test where link takes a db annotation id and has multiple dbrefs
     ul = new UrlLink(links.get(2));
-    linkset = new LinkedHashMap<String, List<String>>();
+    linkset = new LinkedHashMap<>();
     ul.createLinksFromSeq(seq0, linkset);
     assertEquals(3, linkset.size());
 
@@ -381,29 +381,29 @@ public class UrlLinkTest
     assertEquals("INTERPRO", linkset.get(key).get(0));
     assertEquals("INTERPRO" + SEP + "IPR001041", linkset.get(key).get(1));
     assertEquals("IPR001041", linkset.get(key).get(2));
-    assertEquals("http://www.ebi.ac.uk/interpro/entry/IPR001041", linkset
-            .get(key).get(3));
+    assertEquals("http://www.ebi.ac.uk/interpro/entry/IPR001041",
+            linkset.get(key).get(3));
 
     key = "IPR006058|http://www.ebi.ac.uk/interpro/entry/IPR006058";
     assertTrue(linkset.containsKey(key));
     assertEquals("INTERPRO", linkset.get(key).get(0));
     assertEquals("INTERPRO" + SEP + "IPR006058", linkset.get(key).get(1));
     assertEquals("IPR006058", linkset.get(key).get(2));
-    assertEquals("http://www.ebi.ac.uk/interpro/entry/IPR006058", linkset
-            .get(key).get(3));
+    assertEquals("http://www.ebi.ac.uk/interpro/entry/IPR006058",
+            linkset.get(key).get(3));
 
     key = "IPR012675|http://www.ebi.ac.uk/interpro/entry/IPR012675";
     assertTrue(linkset.containsKey(key));
     assertEquals("INTERPRO", linkset.get(key).get(0));
     assertEquals("INTERPRO" + SEP + "IPR012675", linkset.get(key).get(1));
     assertEquals("IPR012675", linkset.get(key).get(2));
-    assertEquals("http://www.ebi.ac.uk/interpro/entry/IPR012675", linkset
-            .get(key).get(3));
+    assertEquals("http://www.ebi.ac.uk/interpro/entry/IPR012675",
+            linkset.get(key).get(3));
 
     // Test where there are no matching dbrefs for the link
     ul = new UrlLink(DB + SEP + URL_PREFIX + DELIM + DB_ACCESSION + DELIM
             + URL_SUFFIX);
-    linkset = new LinkedHashMap<String, List<String>>();
+    linkset = new LinkedHashMap<>();
     ul.createLinksFromSeq(seq0, linkset);
     assertTrue(linkset.isEmpty());
   }
@@ -439,4 +439,25 @@ public class UrlLinkTest
 
   }
 
+  @Test(groups = { "Functional" })
+  public void testLinkComparator()
+  {
+    Comparator<String> c = UrlLink.LINK_COMPARATOR;
+    assertEquals(0, c.compare(null, null));
+    assertEquals(0, c.compare(null, "x"));
+    assertEquals(0, c.compare("y", null));
+
+    /*
+     * SEQUENCE_ID templates should come before DB_ACCESSION templates
+     */
+    String dbRefUrl = "Cath|http://www.cathdb.info/version/v4_2_0/superfamily/$DB_ACCESSION$";
+    String seqIdUrl = "EBI|https://www.ebi.ac.uk/ebisearch/search.ebi?db=allebi&query=$SEQUENCE_ID$";
+    assertTrue(c.compare(seqIdUrl, dbRefUrl) < 0);
+    assertTrue(c.compare(dbRefUrl, seqIdUrl) > 0);
+
+    String interpro = "Interpro|https://www.ebi.ac.uk/interpro/entry/$DB_ACCESSION$";
+    String prosite = "ProSite|https://prosite.expasy.org/PS00197";
+    assertTrue(c.compare(interpro, prosite) < 0);
+    assertTrue(c.compare(prosite, interpro) > 0);
+  }
 }