JAL-2403 ScoreModelI now DistanceModelI, ScoreMatrix delegate of
[jalview.git] / test / jalview / analysis / scoremodels / ScoreMatrixTest.java
1 package jalview.analysis.scoremodels;
2
3 import static org.testng.Assert.assertEquals;
4
5 import org.testng.annotations.Test;
6
7 public class ScoreMatrixTest
8 {
9   @Test(groups = "Functional")
10   public void testBuildSymbolIndex()
11   {
12     short[] index = ScoreMatrix.buildSymbolIndex("AX-. yxYp".toCharArray());
13
14     assertEquals(index.length, 128); // ASCII character set size
15
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
27
28     /*
29      * check all unmapped symbols have index for unmapped
30      */
31     for (int c = 0; c < index.length; c++)
32     {
33       if (!"AaXx-. Yyp".contains(String.valueOf((char) c)))
34       {
35         assertEquals(index[c], -1);
36       }
37     }
38   }
39
40   /**
41    * check that characters not in the basic ASCII set are simply ignored
42    */
43   @Test(groups = "Functional")
44   public void testBuildSymbolIndex_nonAscii()
45   {
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++)
52     {
53       if (c != 'P' && c != 'p')
54       {
55         assertEquals(index[c], -1);
56       }
57     }
58   }
59
60   @Test(groups = "Functional")
61   public void testGetMatrixIndex()
62   {
63     ScoreMatrix sm = ScoreModels.getInstance().getBlosum62();
64     assertEquals(sm.getMatrixIndex('A'), 0);
65     assertEquals(sm.getMatrixIndex('R'), 1);
66     assertEquals(sm.getMatrixIndex('r'), 1);
67     assertEquals(sm.getMatrixIndex('N'), 2);
68     assertEquals(sm.getMatrixIndex('D'), 3);
69     assertEquals(sm.getMatrixIndex('X'), 22);
70     assertEquals(sm.getMatrixIndex('x'), 22);
71     assertEquals(sm.getMatrixIndex(' '), 23);
72     assertEquals(sm.getMatrixIndex('*'), 24);
73     assertEquals(sm.getMatrixIndex('.'), -1);
74     assertEquals(sm.getMatrixIndex('-'), -1);
75     assertEquals(sm.getMatrixIndex('?'), -1);
76     assertEquals(sm.getMatrixIndex((char) 128), -1);
77   }
78 }