2 * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3 * Copyright (C) $$Year-Rel$$ The Jalview Authors
5 * This file is part of Jalview.
7 * Jalview is free software: you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation, either version 3
10 * of the License, or (at your option) any later version.
12 * Jalview is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty
14 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 * PURPOSE. See the GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
19 * The Jalview Authors are detailed in the 'AUTHORS' file.
23 import static jalview.util.UrlConstants.SEQUENCE_ID;
24 import static jalview.util.UrlConstants.SEQUENCE_NAME;
25 import static org.testng.AssertJUnit.assertEquals;
26 import static org.testng.AssertJUnit.assertFalse;
27 import static org.testng.AssertJUnit.assertNull;
28 import static org.testng.AssertJUnit.assertTrue;
30 import org.testng.annotations.Test;
32 public class UrlLinkTest
35 final static String DB = "Test";
37 final static String URL_PREFIX = "http://www.jalview.org/";
39 final static String URL_SUFFIX = "/blah";
41 final static String SEP = "|";
43 final static String DELIM = "$";
45 final static String REGEX_NESTED = "=/^(?:Label:)?(?:(?:gi\\|(\\d+))|([^:]+))/=";
47 final static String REGEX_RUBBISH = "=/[0-9]++/=";
50 * Test URL link creation when the input string has no regex
52 @Test(groups = { "Functional" })
53 public void testUrlLinkCreationNoRegex()
56 UrlLink ul = new UrlLink(DB + SEP + URL_PREFIX + DELIM + SEQUENCE_NAME
57 + DELIM + URL_SUFFIX);
58 assertEquals(DB.toUpperCase(), ul.getTarget());
59 assertEquals(DB, ul.getLabel());
60 assertEquals(URL_PREFIX, ul.getUrl_prefix());
61 assertEquals(URL_SUFFIX, ul.getUrl_suffix());
62 assertTrue(ul.isDynamic());
63 assertFalse(ul.usesSeqId());
64 assertNull(ul.getRegexReplace());
65 assertTrue(ul.isValid());
66 assertNull(ul.getInvalidMessage());
69 ul = new UrlLink(DB + SEP + URL_PREFIX + DELIM + SEQUENCE_ID + DELIM
71 assertEquals(DB.toUpperCase(), ul.getTarget());
72 assertEquals(DB, ul.getLabel());
73 assertEquals(URL_PREFIX, ul.getUrl_prefix());
74 assertEquals(URL_SUFFIX, ul.getUrl_suffix());
75 assertTrue(ul.isDynamic());
76 assertTrue(ul.usesSeqId());
77 assertNull(ul.getRegexReplace());
78 assertTrue(ul.isValid());
79 assertNull(ul.getInvalidMessage());
82 ul = new UrlLink(DB + SEP + URL_PREFIX + URL_SUFFIX.substring(1));
83 assertEquals(DB.toUpperCase(), ul.getTarget());
84 assertEquals(DB, ul.getLabel());
85 assertEquals(URL_PREFIX + URL_SUFFIX.substring(1), ul.getUrl_prefix());
86 assertFalse(ul.isDynamic());
87 assertFalse(ul.usesSeqId());
88 assertNull(ul.getRegexReplace());
89 assertTrue(ul.isValid());
90 assertNull(ul.getInvalidMessage());
94 * Test URL link creation when the input string has regex
96 @Test(groups = { "Functional" })
97 public void testUrlLinkCreationWithRegex()
100 UrlLink ul = new UrlLink(DB + SEP + URL_PREFIX + DELIM + SEQUENCE_NAME
101 + REGEX_NESTED + DELIM + URL_SUFFIX);
102 assertEquals(DB.toUpperCase(), ul.getTarget());
103 assertEquals(DB, ul.getLabel());
104 assertEquals(URL_PREFIX, ul.getUrl_prefix());
105 assertEquals(URL_SUFFIX, ul.getUrl_suffix());
106 assertTrue(ul.isDynamic());
107 assertFalse(ul.usesSeqId());
108 assertEquals(REGEX_NESTED.substring(2, REGEX_NESTED.length() - 2),
109 ul.getRegexReplace());
110 assertTrue(ul.isValid());
111 assertNull(ul.getInvalidMessage());
114 ul = new UrlLink(DB + SEP + URL_PREFIX + DELIM + SEQUENCE_ID
115 + REGEX_NESTED + DELIM + URL_SUFFIX);
116 assertEquals(DB.toUpperCase(), ul.getTarget());
117 assertEquals(DB, ul.getLabel());
118 assertEquals(URL_PREFIX, ul.getUrl_prefix());
119 assertEquals(URL_SUFFIX, ul.getUrl_suffix());
120 assertTrue(ul.isDynamic());
121 assertTrue(ul.usesSeqId());
122 assertEquals(REGEX_NESTED.substring(2, REGEX_NESTED.length() - 2),
123 ul.getRegexReplace());
124 assertTrue(ul.isValid());
125 assertNull(ul.getInvalidMessage());
128 ul = new UrlLink(DB + SEP + URL_PREFIX + DELIM + SEQUENCE_ID
129 + REGEX_RUBBISH + DELIM + URL_SUFFIX);
130 assertEquals(DB.toUpperCase(), ul.getTarget());
131 assertEquals(DB, ul.getLabel());
132 assertEquals(URL_PREFIX, ul.getUrl_prefix());
133 assertEquals(URL_SUFFIX, ul.getUrl_suffix());
134 assertTrue(ul.isDynamic());
135 assertTrue(ul.usesSeqId());
136 assertEquals(REGEX_RUBBISH.substring(2, REGEX_RUBBISH.length() - 2),
137 ul.getRegexReplace());
138 assertFalse(ul.isValid());
140 "Invalid Regular Expression : '"
141 + REGEX_RUBBISH.substring(2, REGEX_RUBBISH.length() - 2)
143 ul.getInvalidMessage());
147 * Test construction of link by substituting sequence id or name
149 @Test(groups = { "Functional" })
150 public void testMakeUrlNoRegex()
153 UrlLink ul = new UrlLink(DB + SEP + URL_PREFIX + DELIM + SEQUENCE_NAME
154 + DELIM + URL_SUFFIX);
155 String idstring = "FER_CAPAA";
156 String[] urls = ul.makeUrls(idstring, true);
158 assertEquals(2, urls.length);
159 assertEquals(idstring, urls[0]);
160 assertEquals(URL_PREFIX + idstring + URL_SUFFIX, urls[1]);
162 urls = ul.makeUrls(idstring, false);
164 assertEquals(2, urls.length);
165 assertEquals(idstring, urls[0]);
166 assertEquals(URL_PREFIX + idstring + URL_SUFFIX, urls[1]);
170 * Test construction of link by substituting sequence id or name
172 @Test(groups = { "Functional" })
173 public void testMakeUrlWithRegex()
176 UrlLink ul = new UrlLink(DB + SEP + URL_PREFIX + DELIM + SEQUENCE_ID
177 + REGEX_NESTED + DELIM + URL_SUFFIX);
178 String idstring = "FER_CAPAA";
179 String[] urls = ul.makeUrls(idstring, true);
181 assertEquals(2, urls.length);
182 assertEquals(idstring, urls[0]);
183 assertEquals(URL_PREFIX + idstring + URL_SUFFIX, urls[1]);
184 assertTrue(ul.isValid());
185 assertNull(ul.getInvalidMessage());
187 urls = ul.makeUrls(idstring, false);
189 assertEquals(2, urls.length);
190 assertEquals(idstring, urls[0]);
191 assertEquals(URL_PREFIX + idstring + URL_SUFFIX, urls[1]);
192 assertTrue(ul.isValid());
193 assertNull(ul.getInvalidMessage());
196 idstring = "Label:gi|9234|pdb|102L|A";
197 urls = ul.makeUrls(idstring, true);
199 assertEquals(2, urls.length);
200 assertEquals("9234", urls[0]);
201 assertEquals(URL_PREFIX + "9234" + URL_SUFFIX, urls[1]);
202 assertTrue(ul.isValid());
203 assertNull(ul.getInvalidMessage());
205 urls = ul.makeUrls(idstring, false);
207 assertEquals(2, urls.length);
208 assertEquals("9234", urls[0]);
209 assertEquals(URL_PREFIX + "9234" + URL_SUFFIX, urls[1]);
210 assertTrue(ul.isValid());
211 assertNull(ul.getInvalidMessage());
214 idstring = "this does not match";
215 urls = ul.makeUrls(idstring, true);
217 assertEquals(2, urls.length);
218 assertEquals(idstring, urls[0]);
219 assertEquals(URL_PREFIX + idstring + URL_SUFFIX, urls[1]);
220 assertTrue(ul.isValid());
221 assertNull(ul.getInvalidMessage());
223 urls = ul.makeUrls(idstring, false);
225 assertEquals(2, urls.length);
226 assertEquals(idstring, urls[0]);
227 assertEquals(URL_PREFIX + idstring + URL_SUFFIX, urls[1]);
228 assertTrue(ul.isValid());
229 assertNull(ul.getInvalidMessage());
233 urls = ul.makeUrls(idstring, true);
237 urls = ul.makeUrls(idstring, false);
239 assertEquals(2, urls.length);
240 assertEquals("", urls[0]);
241 assertEquals(URL_PREFIX + URL_SUFFIX, urls[1]);
242 assertTrue(ul.isValid());
243 assertNull(ul.getInvalidMessage());