Parsing moved to (new) ScoreMatrixFile, drag and drop to alignment now
[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 }