X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Futil%2FUrlLinkTest.java;fp=test%2Fjalview%2Futil%2FUrlLinkTest.java;h=0000000000000000000000000000000000000000;hb=4f77328104498504339216829abf5ea87e2791ec;hp=c7d37b097a20e805f9961857208633fc65ef691d;hpb=2b8c0785318a3528e1876e8e2dd48b7d831eae69;p=jalview.git diff --git a/test/jalview/util/UrlLinkTest.java b/test/jalview/util/UrlLinkTest.java deleted file mode 100644 index c7d37b0..0000000 --- a/test/jalview/util/UrlLinkTest.java +++ /dev/null @@ -1,464 +0,0 @@ -/* - * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) - * Copyright (C) $$Year-Rel$$ The Jalview Authors - * - * This file is part of Jalview. - * - * Jalview is free software: you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 - * of the License, or (at your option) any later version. - * - * Jalview is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Jalview. If not, see . - * The Jalview Authors are detailed in the 'AUTHORS' file. - */ -package jalview.util; - -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.assertNull; -import static org.testng.AssertJUnit.assertTrue; - -import jalview.datamodel.DBRefEntry; -import jalview.datamodel.DBRefSource; -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; - -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; - -public class UrlLinkTest -{ - - @BeforeClass(alwaysRun = true) - public void setUpJvOptionPane() - { - JvOptionPane.setInteractiveMode(false); - JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION); - } - - final static String DB = "Test"; - - final static String URL_PREFIX = "http://www.jalview.org/"; - - final static String URL_SUFFIX = "/blah"; - - final static String SEP = "|"; - - final static String DELIM = "$"; - - final static String REGEX_NESTED = "=/^(?:Label:)?(?:(?:gi\\|(\\d+))|([^:]+))/="; - - final static String REGEX_RUBBISH = "=/[0-9]++/="; - - /** - * Test URL link creation when the input string has no regex - */ - @Test(groups = { "Functional" }) - public void testUrlLinkCreationNoRegex() - { - // SEQUENCE_ID - UrlLink ul = new UrlLink(DB + SEP + URL_PREFIX + DELIM + SEQUENCE_ID - + DELIM + URL_SUFFIX); - assertEquals(DB, ul.getTarget()); - assertEquals(DB, ul.getLabel()); - assertEquals(URL_PREFIX, ul.getUrlPrefix()); - assertEquals(URL_SUFFIX, ul.getUrlSuffix()); - assertTrue(ul.isDynamic()); - assertFalse(ul.usesDBAccession()); - assertNull(ul.getRegexReplace()); - assertTrue(ul.isValid()); - assertNull(ul.getInvalidMessage()); - - // DB_ACCESSION - ul = new UrlLink(DB + SEP + URL_PREFIX + DELIM + DB_ACCESSION + DELIM - + URL_SUFFIX); - assertEquals(DB, ul.getTarget()); - assertEquals(DB, ul.getLabel()); - assertEquals(URL_PREFIX, ul.getUrlPrefix()); - assertEquals(URL_SUFFIX, ul.getUrlSuffix()); - assertTrue(ul.isDynamic()); - assertTrue(ul.usesDBAccession()); - assertNull(ul.getRegexReplace()); - assertTrue(ul.isValid()); - assertNull(ul.getInvalidMessage()); - - // Not dynamic - ul = new UrlLink(DB + SEP + URL_PREFIX + URL_SUFFIX.substring(1)); - assertEquals(DB, ul.getTarget()); - assertEquals(DB, ul.getLabel()); - assertEquals(URL_PREFIX + URL_SUFFIX.substring(1), ul.getUrlPrefix()); - assertFalse(ul.isDynamic()); - assertFalse(ul.usesDBAccession()); - assertNull(ul.getRegexReplace()); - assertTrue(ul.isValid()); - assertNull(ul.getInvalidMessage()); - } - - /** - * Test URL link creation when the input string has regex - */ - @Test(groups = { "Functional" }) - public void testUrlLinkCreationWithRegex() - { - // SEQUENCE_ID - UrlLink ul = new UrlLink(DB + SEP + URL_PREFIX + DELIM + SEQUENCE_ID - + REGEX_NESTED + DELIM + URL_SUFFIX); - assertEquals(DB, ul.getTarget()); - assertEquals(DB, ul.getLabel()); - assertEquals(URL_PREFIX, ul.getUrlPrefix()); - assertEquals(URL_SUFFIX, ul.getUrlSuffix()); - assertTrue(ul.isDynamic()); - assertFalse(ul.usesDBAccession()); - assertEquals(REGEX_NESTED.substring(2, REGEX_NESTED.length() - 2), - ul.getRegexReplace()); - assertTrue(ul.isValid()); - assertNull(ul.getInvalidMessage()); - - // DB_ACCESSION - ul = new UrlLink(DB + SEP + URL_PREFIX + DELIM + DB_ACCESSION - + REGEX_NESTED + DELIM + URL_SUFFIX); - assertEquals(DB, ul.getTarget()); - assertEquals(DB, ul.getLabel()); - assertEquals(URL_PREFIX, ul.getUrlPrefix()); - assertEquals(URL_SUFFIX, ul.getUrlSuffix()); - assertTrue(ul.isDynamic()); - assertTrue(ul.usesDBAccession()); - assertEquals(REGEX_NESTED.substring(2, REGEX_NESTED.length() - 2), - ul.getRegexReplace()); - assertTrue(ul.isValid()); - assertNull(ul.getInvalidMessage()); - - // invalid regex - ul = new UrlLink(DB + SEP + URL_PREFIX + DELIM + DB_ACCESSION - + REGEX_RUBBISH + DELIM + URL_SUFFIX); - assertEquals(DB, ul.getTarget()); - assertEquals(DB, ul.getLabel()); - assertEquals(URL_PREFIX, ul.getUrlPrefix()); - assertEquals(URL_SUFFIX, ul.getUrlSuffix()); - assertTrue(ul.isDynamic()); - assertTrue(ul.usesDBAccession()); - 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()); - } - - /** - * Test construction of link by substituting sequence id or name - */ - @Test(groups = { "Functional" }) - public void testMakeUrlNoRegex() - { - // Single non-regex - UrlLink ul = new UrlLink(DB + SEP + URL_PREFIX + DELIM + SEQUENCE_ID - + DELIM + URL_SUFFIX); - String idstring = "FER_CAPAA"; - String[] urls = ul.makeUrls(idstring, true); - - assertEquals(2, urls.length); - assertEquals(idstring, urls[0]); - assertEquals(URL_PREFIX + idstring + URL_SUFFIX, urls[1]); - - urls = ul.makeUrls(idstring, false); - - assertEquals(2, urls.length); - assertEquals(idstring, urls[0]); - assertEquals(URL_PREFIX + idstring + URL_SUFFIX, urls[1]); - } - - /** - * Test construction of link by substituting sequence id or name using regular - * expression - */ - @Test(groups = { "Functional" }) - public void testMakeUrlWithRegex() - { - // Unused regex - UrlLink ul = new UrlLink(DB + SEP + URL_PREFIX + DELIM + DB_ACCESSION - + REGEX_NESTED + DELIM + URL_SUFFIX); - String idstring = "FER_CAPAA"; - String[] urls = ul.makeUrls(idstring, true); - - assertEquals(2, urls.length); - assertEquals(idstring, urls[0]); - assertEquals(URL_PREFIX + idstring + URL_SUFFIX, urls[1]); - assertTrue(ul.isValid()); - assertNull(ul.getInvalidMessage()); - - urls = ul.makeUrls(idstring, false); - - assertEquals(2, urls.length); - assertEquals(idstring, urls[0]); - assertEquals(URL_PREFIX + idstring + URL_SUFFIX, urls[1]); - assertTrue(ul.isValid()); - assertNull(ul.getInvalidMessage()); - - // nested regex - idstring = "Label:gi|9234|pdb|102L|A"; - urls = ul.makeUrls(idstring, true); - - assertEquals(2, urls.length); - assertEquals("9234", urls[0]); - assertEquals(URL_PREFIX + "9234" + URL_SUFFIX, urls[1]); - assertTrue(ul.isValid()); - assertNull(ul.getInvalidMessage()); - - urls = ul.makeUrls(idstring, false); - - assertEquals(2, urls.length); - assertEquals("9234", urls[0]); - assertEquals(URL_PREFIX + "9234" + URL_SUFFIX, urls[1]); - assertTrue(ul.isValid()); - assertNull(ul.getInvalidMessage()); - - // unmatched regex - idstring = "this does not match"; - urls = ul.makeUrls(idstring, true); - - assertEquals(2, urls.length); - assertEquals(idstring, urls[0]); - assertEquals(URL_PREFIX + idstring + URL_SUFFIX, urls[1]); - assertTrue(ul.isValid()); - assertNull(ul.getInvalidMessage()); - - urls = ul.makeUrls(idstring, false); - - assertEquals(2, urls.length); - assertEquals(idstring, urls[0]); - assertEquals(URL_PREFIX + idstring + URL_SUFFIX, urls[1]); - assertTrue(ul.isValid()); - assertNull(ul.getInvalidMessage()); - - // empty idstring - idstring = ""; - urls = ul.makeUrls(idstring, true); - - assertNull(urls); - - urls = ul.makeUrls(idstring, false); - - assertEquals(2, urls.length); - assertEquals("", urls[0]); - assertEquals(URL_PREFIX + URL_SUFFIX, urls[1]); - assertTrue(ul.isValid()); - assertNull(ul.getInvalidMessage()); - } - - /** - * Test creating links with null sequence - */ - @Test(groups = { "Functional" }) - public void testCreateLinksFromNullSequence() - { - UrlLink ul = new UrlLink(DB + SEP + URL_PREFIX + DELIM + SEQUENCE_ID - + DELIM + URL_SUFFIX); - - Map> linkset = new LinkedHashMap<>(); - ul.createLinksFromSeq(null, linkset); - - String key = DB + SEP + URL_PREFIX; - assertEquals(1, linkset.size()); - assertTrue(linkset.containsKey(key)); - assertEquals(DB, linkset.get(key).get(0)); - assertEquals(DB, linkset.get(key).get(1)); - assertEquals(null, linkset.get(key).get(2)); - assertEquals(URL_PREFIX, linkset.get(key).get(3)); - } - - /** - * Test creating links with non-dynamic urlLink - */ - @Test(groups = { "Functional" }) - public void testCreateLinksForNonDynamic() - { - UrlLink ul = new UrlLink(DB + SEP + URL_PREFIX + URL_SUFFIX); - - Map> linkset = new LinkedHashMap<>(); - ul.createLinksFromSeq(null, linkset); - - String key = DB + SEP + URL_PREFIX + URL_SUFFIX; - assertEquals(1, linkset.size()); - assertTrue(linkset.containsKey(key)); - assertEquals(DB, linkset.get(key).get(0)); - assertEquals(DB, linkset.get(key).get(1)); - assertEquals(null, linkset.get(key).get(2)); - assertEquals(URL_PREFIX + URL_SUFFIX, linkset.get(key).get(3)); - } - - /** - * Test creating links - */ - @Test(groups = { "Functional" }) - public void testCreateLinksFromSequence() - { - - // create list of links and list of DBRefs - List links = new ArrayList<>(); - List 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("UNIPROT | http://www.uniprot.org/uniprot/$" + DB_ACCESSION - + "$"); - links.add("INTERPRO | http://www.ebi.ac.uk/interpro/entry/$" - + DB_ACCESSION + "$"); - - // make seq0 dbrefs - refs.add(new DBRefEntry(DBRefSource.UNIPROT, "1", "P83527")); - refs.add(new DBRefEntry("INTERPRO", "1", "IPR001041")); - refs.add(new DBRefEntry("INTERPRO", "1", "IPR006058")); - refs.add(new DBRefEntry("INTERPRO", "1", "IPR012675")); - - Sequence seq0 = new Sequence("FER1", "AKPNGVL"); - - // add all the dbrefs to the sequence - seq0.addDBRef(refs.get(0)); - seq0.addDBRef(refs.get(1)); - seq0.addDBRef(refs.get(2)); - seq0.addDBRef(refs.get(3)); - seq0.createDatasetSequence(); - - // Test where link takes a sequence id as replacement - UrlLink ul = new UrlLink(DB + SEP + URL_PREFIX + DELIM + SEQUENCE_ID - + DELIM + URL_SUFFIX); - - Map> linkset = new LinkedHashMap<>(); - ul.createLinksFromSeq(seq0, linkset); - - String key = seq0.getName() + SEP + URL_PREFIX + seq0.getName() - + URL_SUFFIX; - assertEquals(1, linkset.size()); - assertTrue(linkset.containsKey(key)); - 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)); - - // Test where link takes a db annotation id and only has one dbref - ul = new UrlLink(links.get(1)); - 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("P83527", linkset.get(key).get(2)); - 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<>(); - ul.createLinksFromSeq(seq0, linkset); - assertEquals(3, linkset.size()); - - // check each link made it in correctly - key = "IPR001041|http://www.ebi.ac.uk/interpro/entry/IPR001041"; - assertTrue(linkset.containsKey(key)); - 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)); - - 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)); - - 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)); - - // 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<>(); - ul.createLinksFromSeq(seq0, linkset); - assertTrue(linkset.isEmpty()); - } - - /** - * Test links where label and target are both included - */ - @Test(groups = { "Functional" }) - public void testLinksWithTargets() - { - UrlLink ul = new UrlLink( - "Protein Data Bank | http://www.identifiers.org/pdb/$" - + DB_ACCESSION + "$" + " | pdb"); - - assertEquals("Protein Data Bank", ul.getLabel()); - assertEquals("pdb", ul.getTarget()); - assertEquals("http://www.identifiers.org/pdb/$" + DB_ACCESSION + "$", - ul.getUrlWithToken()); - - assertEquals("Protein Data Bank|http://www.identifiers.org/pdb/$" - + DB_ACCESSION + "$" + "|pdb", ul.toStringWithTarget()); - - ul = new UrlLink("Protein Data Bank", - "http://www.identifiers.org/pdb/$" + DB_ACCESSION + "$", "pdb"); - - assertEquals("Protein Data Bank", ul.getLabel()); - assertEquals("pdb", ul.getTarget()); - assertEquals("http://www.identifiers.org/pdb/$" + DB_ACCESSION + "$", - ul.getUrlWithToken()); - - assertEquals("Protein Data Bank|http://www.identifiers.org/pdb/$" - + DB_ACCESSION + "$" + "|pdb", ul.toStringWithTarget()); - - } - - @Test(groups = { "Functional" }) - public void testLinkComparator() - { - Comparator 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); - } -}