1 package jalview.datamodel;
3 import static org.testng.AssertJUnit.assertEquals;
4 import static org.testng.AssertJUnit.assertFalse;
5 import static org.testng.AssertJUnit.assertTrue;
7 import org.testng.annotations.Test;
9 public class SearchResultsTest
12 @Test(groups ={ "Functional" })
13 public void testToString()
15 SequenceI seq = new Sequence("", "abcdefghijklm");
16 SearchResults sr = new SearchResults();
17 sr.addResult(seq, 1, 1);
18 assertEquals("0a", sr.toString());
19 sr.addResult(seq, 3, 5);
20 assertEquals("0a2cde", sr.toString());
22 seq = new Sequence("", "pqrstuvwxy");
23 sr.addResult(seq, 6, 7);
24 assertEquals("0a2cde5uv", sr.toString());
27 @Test(groups = { "Functional" })
28 public void testGetCharacters()
30 SequenceI seq = new Sequence("", "abcdefghijklm");
31 SearchResults sr = new SearchResults();
32 sr.addResult(seq, 1, 1);
33 assertEquals("a", sr.getCharacters());
34 sr.addResult(seq, 3, 5);
35 assertEquals("acde", sr.getCharacters());
37 seq = new Sequence("", "pqrstuvwxy");
38 sr.addResult(seq, 6, 7);
39 assertEquals("acdeuv", sr.getCharacters());
42 @Test(groups = { "Functional" })
43 public void testEquals()
45 SequenceI seq1 = new Sequence("", "abcdefghijklm");
46 SearchResults sr1 = new SearchResults();
47 SearchResults sr2 = new SearchResults();
49 assertFalse(sr1.equals(null)); // null object
50 assertFalse(sr1.equals(seq1)); // wrong type
51 assertTrue(sr1.equals(sr1)); // self
52 assertTrue(sr1.equals(sr2)); // empty
53 assertTrue(sr2.equals(sr1)); // reflexive
56 * only one result is not empty
58 sr1.addResult(seq1, 1, 1);
59 assertTrue(sr1.equals(sr1));
60 assertFalse(sr1.equals(sr2));
61 assertFalse(sr2.equals(sr1));
66 sr2.addResult(seq1, 1, 1);
67 assertTrue(sr1.equals(sr2));
68 assertTrue(sr2.equals(sr1));
71 * both have three matches
73 sr1.addResult(seq1, 3, 4);
74 sr1.addResult(seq1, 6, 8);
75 sr2.addResult(seq1, 3, 4);
76 sr2.addResult(seq1, 6, 8);
77 assertTrue(sr1.equals(sr1));
78 assertTrue(sr2.equals(sr2));
79 assertTrue(sr1.equals(sr2));
80 assertTrue(sr2.equals(sr1));
84 * Matches that are similar but for distinct sequences are not equal
86 @Test(groups = { "Functional" })
87 public void testEquals_distinctSequences()
89 SequenceI seq1 = new Sequence("", "abcdefghijklm");
90 SequenceI seq2 = new Sequence("", "abcdefghijklm");
91 SearchResults sr1 = new SearchResults();
92 SearchResults sr2 = new SearchResults();
94 sr1.addResult(seq1, 1, 1);
95 sr2.addResult(seq2, 1, 1);
96 assertFalse(sr1.equals(sr2));
97 assertFalse(sr2.equals(sr1));
101 * Matches that are the same except for ordering are not equal
103 @Test(groups = { "Functional" })
104 public void testEquals_orderDiffers()
106 SequenceI seq1 = new Sequence("", "abcdefghijklm");
107 SearchResults sr1 = new SearchResults();
108 SearchResults sr2 = new SearchResults();
110 sr1.addResult(seq1, 1, 1);
111 sr1.addResult(seq1, 2, 2);
112 sr2.addResult(seq1, 2, 2);
113 sr2.addResult(seq1, 1, 1);
114 assertFalse(sr1.equals(sr2));
115 assertFalse(sr2.equals(sr1));
119 * Verify that hashCode matches for equal objects
121 @Test(groups = { "Functional" })
122 public void testHashcode()
124 SequenceI seq1 = new Sequence("", "abcdefghijklm");
125 SearchResults sr1 = new SearchResults();
126 SearchResults sr2 = new SearchResults();
131 assertEquals(sr1.hashCode(), sr2.hashCode());
136 sr1.addResult(seq1, 1, 1);
137 sr2.addResult(seq1, 1, 1);
138 assertEquals(sr1.hashCode(), sr2.hashCode());
143 sr1.addResult(seq1, 3, 4);
144 sr1.addResult(seq1, 6, 8);
145 sr2.addResult(seq1, 3, 4);
146 sr2.addResult(seq1, 6, 8);
147 assertEquals(sr1.hashCode(), sr2.hashCode());