JAL-4366 account for 3dmat matrix in tests
[jalview.git] / test / jalview / analysis / scoremodels / ScoreModelsTest.java
1 /*
2  * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3  * Copyright (C) $$Year-Rel$$ The Jalview Authors
4  * 
5  * This file is part of Jalview.
6  * 
7  * Jalview is free software: you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License 
9  * as published by the Free Software Foundation, either version 3
10  * of the License, or (at your option) any later version.
11  *  
12  * Jalview is distributed in the hope that it will be useful, but 
13  * WITHOUT ANY WARRANTY; without even the implied warranty 
14  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
15  * PURPOSE.  See the GNU General Public License for more details.
16  * 
17  * You should have received a copy of the GNU General Public License
18  * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
19  * The Jalview Authors are detailed in the 'AUTHORS' file.
20  */
21 package jalview.analysis.scoremodels;
22
23 import static org.testng.Assert.assertEquals;
24 import static org.testng.Assert.assertFalse;
25 import static org.testng.Assert.assertTrue;
26
27 import jalview.api.analysis.PairwiseScoreModelI;
28 import jalview.api.analysis.ScoreModelI;
29
30 import java.util.Iterator;
31
32 import org.testng.annotations.Test;
33
34 public class ScoreModelsTest
35 {
36   /**
37    * Verify that the singleton constructor successfully loads Jalview's built-in
38    * score models
39    */
40   @Test(groups = "Functional")
41   public void testConstructor()
42   {
43     Iterator<ScoreModelI> models = ScoreModels.getInstance().getModels()
44             .iterator();
45     assertTrue(models.hasNext());
46
47     /*
48      * models are served in order of addition
49      */
50     ScoreModelI sm = models.next();
51     assertTrue(sm instanceof SimilarityScoreModel);
52     assertTrue(sm instanceof PairwiseScoreModelI);
53     assertFalse(sm instanceof DistanceScoreModel);
54     assertEquals(sm.getName(), "BLOSUM62");
55     assertEquals(((PairwiseScoreModelI) sm).getPairwiseScore('I', 'R'),
56             -3f);
57
58     sm = models.next();
59     assertTrue(sm instanceof SimilarityScoreModel);
60     assertTrue(sm instanceof PairwiseScoreModelI);
61     assertFalse(sm instanceof DistanceScoreModel);
62     assertEquals(sm.getName(), "PAM250");
63     assertEquals(((PairwiseScoreModelI) sm).getPairwiseScore('R', 'C'),
64             -4f);
65
66     sm = models.next();
67     assertTrue(sm instanceof SimilarityScoreModel);
68     assertTrue(sm instanceof PairwiseScoreModelI);
69     assertFalse(sm instanceof DistanceScoreModel);
70     assertEquals(sm.getName(), "DNA");
71     assertEquals(((PairwiseScoreModelI) sm).getPairwiseScore('c', 'x'), 1f);
72
73     sm = models.next();
74     assertTrue(sm instanceof SimilarityScoreModel);
75     assertTrue(sm instanceof PairwiseScoreModelI);
76     assertFalse(sm instanceof DistanceScoreModel);
77     assertEquals(sm.getName(), "Mat3di");
78     assertEquals(((PairwiseScoreModelI) sm).getPairwiseScore('R', 'C'), -1f);
79     assertEquals(((PairwiseScoreModelI) sm).getPairwiseScore('R', 'r'), 6f);
80
81     sm = models.next();
82     assertTrue(sm instanceof SimilarityScoreModel);
83     assertTrue(sm instanceof PairwiseScoreModelI);
84     assertFalse(sm instanceof DistanceScoreModel);
85     assertEquals(sm.getName(), "PID");
86     assertEquals(((PairwiseScoreModelI) sm).getPairwiseScore('R', 'C'), 0f);
87     assertEquals(((PairwiseScoreModelI) sm).getPairwiseScore('R', 'r'), 1f);
88
89     sm = models.next();
90     assertFalse(sm instanceof SimilarityScoreModel);
91     assertFalse(sm instanceof PairwiseScoreModelI);
92     assertTrue(sm instanceof DistanceScoreModel);
93     assertEquals(sm.getName(), "Sequence Feature Similarity");
94   }
95
96   /**
97    * 'Test' that prints out score matrices in tab-delimited format. This test is
98    * intentionally not assigned to any group so would not be run as part of a
99    * suite. It makes no assertions and is just provided as a utility method for
100    * printing out matrices. Relocated here from ScoreMatrixPrinter.
101    */
102   @Test(groups = "none")
103   public void printAllMatrices_tabDelimited()
104   {
105     printAllMatrices(false);
106   }
107
108   /**
109    * 'Test' that prints out score matrices in html format. This test is
110    * intentionally not assigned to any group so would not be run as part of a
111    * suite. It makes no assertions and is just provided as a utility method for
112    * printing out matrices. Relocated here from ScoreMatrixPrinter.
113    */
114   @Test(groups = "none")
115   public void printAllMatrices_asHtml()
116   {
117     printAllMatrices(true);
118   }
119
120   /**
121    * Print all registered ScoreMatrix as plain or html tables
122    * 
123    * @param asHtml
124    */
125   protected void printAllMatrices(boolean asHtml)
126   {
127     for (ScoreModelI sm : ScoreModels.getInstance().getModels())
128     {
129       if (sm instanceof ScoreMatrix)
130       {
131         System.out.println(((ScoreMatrix) sm).outputMatrix(asHtml));
132       }
133     }
134   }
135 }