1 package jalview.analysis.scoremodels;
3 import static org.testng.Assert.assertEquals;
5 import org.testng.annotations.Test;
7 public class ScoreMatrixTest
9 @Test(groups = "Functional")
10 public void testBuildSymbolIndex()
12 short[] index = ScoreMatrix.buildSymbolIndex("AX-. yxYp".toCharArray());
14 assertEquals(index.length, 128); // ASCII character set size
16 assertEquals(index['A'], 0);
17 assertEquals(index['a'], 0); // lower-case mapping added
18 assertEquals(index['X'], 1);
19 assertEquals(index['-'], 2);
20 assertEquals(index['.'], 3);
21 assertEquals(index[' '], 4);
22 assertEquals(index['y'], 5); // lower-case override
23 assertEquals(index['x'], 6); // lower-case override
24 assertEquals(index['Y'], 7);
25 assertEquals(index['p'], 8);
26 assertEquals(index['P'], -1); // lower-case doesn't map upper-case
29 * check all unmapped symbols have index for unmapped
31 for (int c = 0; c < index.length; c++)
33 if (!"AaXx-. Yyp".contains(String.valueOf((char) c)))
35 assertEquals(index[c], -1);
41 * check that characters not in the basic ASCII set are simply ignored
43 @Test(groups = "Functional")
44 public void testBuildSymbolIndex_nonAscii()
46 char[] weird = new char[] { 128, 245, 'P' };
47 short[] index = ScoreMatrix.buildSymbolIndex(weird);
48 assertEquals(index.length, 128);
49 assertEquals(index['P'], 2);
50 assertEquals(index['p'], 2);
51 for (int c = 0; c < index.length; c++)
53 if (c != 'P' && c != 'p')
55 assertEquals(index[c], -1);