JAL-2189 apply license
[jalview.git] / test / jalview / analysis / SequenceIdMatcherTest.java
1 /*
2  * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3  * Copyright (C) $$Year-Rel$$ The Jalview Authors
4  * 
5  * This file is part of Jalview.
6  * 
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.
11  *  
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.
16  * 
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.
20  */
21 package jalview.analysis;
22
23 import static org.testng.AssertJUnit.assertFalse;
24 import static org.testng.AssertJUnit.assertTrue;
25
26 import jalview.analysis.SequenceIdMatcher.SeqIdName;
27 import jalview.datamodel.SequenceI;
28
29 import org.testng.annotations.Test;
30
31 public class SequenceIdMatcherTest
32 {
33
34   /**
35    * Test the method that checks for one sequence id starting with the other,
36    * followed by an 'allowed' separator character
37    */
38   @Test(groups = "Functional")
39   public void test_seqIdNameEquals()
40   {
41     SequenceIdMatcher sequenceIdMatcher = new SequenceIdMatcher(
42             new SequenceI[] {});
43
44     /*
45      * target name = matcher name + word separator...
46      */
47     SeqIdName testee = sequenceIdMatcher.new SeqIdName("A12345");
48     assertTrue(testee.equals("A12345"));
49     assertTrue(testee.equals("A12345~"));
50     assertTrue(testee.equals("A12345."));
51     assertTrue(testee.equals("A12345 "));
52     assertTrue(testee.equals("A12345|"));
53     assertTrue(testee.equals("A12345#"));
54     assertTrue(testee.equals("A12345\\"));
55     assertTrue(testee.equals("A12345/"));
56     assertTrue(testee.equals("A12345<"));
57     assertTrue(testee.equals("A12345>"));
58     assertTrue(testee.equals("A12345!"));
59     assertTrue(testee.equals("A12345\""));
60     assertTrue(testee.equals("A12345" + String.valueOf((char) 0x00A4)));
61     assertTrue(testee.equals("A12345$a"));
62     assertTrue(testee.equals("A12345%b"));
63     assertTrue(testee.equals("A12345^cd"));
64     assertTrue(testee.equals("A12345*efg"));
65     assertTrue(testee.equals("A12345)^&!"));
66     assertTrue(testee.equals("A12345}01&*"));
67     assertTrue(testee.equals("A12345[A23456"));
68     assertTrue(testee.equals("A12345@|Uniprot"));
69     assertTrue(testee.equals("A12345'whatever you want here"));
70     assertTrue(testee.equals("A12345,"));
71     assertTrue(testee.equals("A12345?"));
72     assertTrue(testee.equals("A12345_"));
73     /*
74      * case insensitive matching
75      */
76     assertTrue(testee.equals("a12345"));
77
78     /*
79      * matcher name = target name + word separator...
80      */
81     testee = sequenceIdMatcher.new SeqIdName("A12345#");
82     assertTrue(testee.equals("A12345"));
83
84     /*
85      * case insensitive matching
86      */
87     assertTrue(testee.equals("a12345"));
88
89     /*
90      * miscellaneous failing cases
91      */
92     testee = sequenceIdMatcher.new SeqIdName("A12345");
93     assertFalse(testee.equals((Object) null));
94     assertFalse(testee.equals(""));
95     assertFalse(testee.equals("A12346|A12345"));
96     /*
97      * case insensitive matching
98      */
99     assertTrue(testee.equals("a12345"));
100
101     testee = sequenceIdMatcher.new SeqIdName("A12345?B23456");
102     assertFalse(testee.equals("B23456"));
103     assertFalse(testee.equals("A12345|"));
104     assertFalse(testee.equals("A12345?"));
105
106     testee = sequenceIdMatcher.new SeqIdName("A12345<");
107     assertFalse(testee.equals("A12345?"));
108     assertTrue(testee.equals("A12345<")); // bug? inconsistent
109     /*
110      * case insensitive matching
111      */
112     assertTrue(testee.equals("a12345"));
113
114     testee = sequenceIdMatcher.new SeqIdName("UNIPROT|A12345");
115     assertFalse(testee.equals("A12345"));
116     assertFalse(testee.equals("UNIPROT|B98765"));
117     assertFalse(testee.equals("UNIPROT|"));
118     assertTrue(testee.equals("UNIPROT"));
119   }
120 }