9d3e3b61122872c33e90f7ce2dfb7a90808f867d
[jalview.git] / test / jalview / analysis / SequenceIdMatcherTest.java
1 package jalview.analysis;
2
3 import static org.testng.AssertJUnit.assertFalse;
4 import static org.testng.AssertJUnit.assertTrue;
5
6 import jalview.analysis.SequenceIdMatcher.SeqIdName;
7 import jalview.datamodel.SequenceI;
8
9 import org.testng.annotations.Test;
10
11 public class SequenceIdMatcherTest
12 {
13
14   /**
15    * Test the method that checks for one sequence id starting with the other,
16    * followed by an 'allowed' separator character
17    */
18   @Test(groups = "Functional")
19   public void test_seqIdNameEquals()
20   {
21     SequenceIdMatcher sequenceIdMatcher = new SequenceIdMatcher(
22             new SequenceI[] {});
23
24     /*
25      * target name = matcher name + word separator...
26      */
27     SeqIdName testee = sequenceIdMatcher.new SeqIdName("A12345");
28     assertTrue(testee.equals("A12345"));
29     assertTrue(testee.equals("A12345~"));
30     assertTrue(testee.equals("A12345."));
31     assertTrue(testee.equals("A12345 "));
32     assertTrue(testee.equals("A12345|"));
33     assertTrue(testee.equals("A12345#"));
34     assertTrue(testee.equals("A12345\\"));
35     assertTrue(testee.equals("A12345/"));
36     assertTrue(testee.equals("A12345<"));
37     assertTrue(testee.equals("A12345>"));
38     assertTrue(testee.equals("A12345!"));
39     assertTrue(testee.equals("A12345\""));
40     assertTrue(testee.equals("A12345" + String.valueOf((char) 0x00A4)));
41     assertTrue(testee.equals("A12345$a"));
42     assertTrue(testee.equals("A12345%b"));
43     assertTrue(testee.equals("A12345^cd"));
44     assertTrue(testee.equals("A12345*efg"));
45     assertTrue(testee.equals("A12345)^&!"));
46     assertTrue(testee.equals("A12345}01&*"));
47     assertTrue(testee.equals("A12345[A23456"));
48     assertTrue(testee.equals("A12345@|Uniprot"));
49     assertTrue(testee.equals("A12345'whatever you want here"));
50     assertTrue(testee.equals("A12345,"));
51     assertTrue(testee.equals("A12345?"));
52     assertTrue(testee.equals("A12345_"));
53     /*
54      * case insensitive matching
55      */
56     assertTrue(testee.equals("a12345"));
57
58     /*
59      * matcher name = target name + word separator...
60      */
61     testee = sequenceIdMatcher.new SeqIdName("A12345#");
62     assertTrue(testee.equals("A12345"));
63
64     /*
65      * case insensitive matching
66      */
67     assertTrue(testee.equals("a12345"));
68
69     /*
70      * miscellaneous failing cases
71      */
72     testee = sequenceIdMatcher.new SeqIdName("A12345");
73     assertFalse(testee.equals((Object) null));
74     assertFalse(testee.equals(""));
75     assertFalse(testee.equals("A12346|A12345"));
76     /*
77      * case insensitive matching
78      */
79     assertTrue(testee.equals("a12345"));
80
81     testee = sequenceIdMatcher.new SeqIdName("A12345?B23456");
82     assertFalse(testee.equals("B23456"));
83     assertFalse(testee.equals("A12345|"));
84     assertFalse(testee.equals("A12345?"));
85
86     testee = sequenceIdMatcher.new SeqIdName("A12345<");
87     assertFalse(testee.equals("A12345?"));
88     assertTrue(testee.equals("A12345<")); // bug? inconsistent
89     /*
90      * case insensitive matching
91      */
92     assertTrue(testee.equals("a12345"));
93   }
94 }