JAL-3253-applet feature parameter processing fixed
[jalview.git] / test / jalview / analysis / scoremodels / ScoreModelsTest.java
index c5c8673..9684cf2 100644 (file)
@@ -4,8 +4,11 @@ import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertFalse;
 import static org.testng.Assert.assertTrue;
 
-import jalview.api.analysis.DistanceModelI;
+import jalview.api.analysis.PairwiseScoreModelI;
+import jalview.api.analysis.ScoreModelI;
 
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
 import java.util.Iterator;
 
 import org.testng.annotations.Test;
@@ -16,48 +19,102 @@ public class ScoreModelsTest
    * Verify that the singleton constructor successfully loads Jalview's built-in
    * score models
    */
-  @Test
+  @Test(groups = "Functional")
   public void testConstructor()
   {
-    Iterator<DistanceModelI> models = ScoreModels.getInstance().getModels()
+    Iterator<ScoreModelI> models = ScoreModels.getInstance().getModels()
             .iterator();
     assertTrue(models.hasNext());
 
     /*
      * models are served in order of addition
      */
-    DistanceModelI sm = models.next();
-    assertTrue(sm instanceof PairwiseDistanceModel);
+    ScoreModelI sm = models.next();
+    assertTrue(sm instanceof SimilarityScoreModel);
+    assertTrue(sm instanceof PairwiseScoreModelI);
+    assertFalse(sm instanceof DistanceScoreModel);
     assertEquals(sm.getName(), "BLOSUM62");
-    assertEquals(((PairwiseDistanceModel) sm).getScoreModel()
-            .getPairwiseScore('I', 'R'), -3f);
+    assertEquals(((PairwiseScoreModelI) sm).getPairwiseScore('I', 'R'), -3f);
 
     sm = models.next();
-    assertTrue(sm instanceof PairwiseDistanceModel);
+    assertTrue(sm instanceof SimilarityScoreModel);
+    assertTrue(sm instanceof PairwiseScoreModelI);
+    assertFalse(sm instanceof DistanceScoreModel);
     assertEquals(sm.getName(), "PAM250");
-    assertEquals(((PairwiseDistanceModel) sm).getScoreModel()
-            .getPairwiseScore('R', 'C'), -4f);
+    assertEquals(((PairwiseScoreModelI) sm).getPairwiseScore('R', 'C'), -4f);
 
     sm = models.next();
-    assertTrue(sm instanceof PairwiseDistanceModel);
-    assertEquals(sm.getName(), "Identity (SeqSpace)");
-    assertEquals(((PairwiseDistanceModel) sm).getScoreModel()
-            .getPairwiseScore('R', 'C'), 0f);
-    assertEquals(((PairwiseDistanceModel) sm).getScoreModel()
-            .getPairwiseScore('R', 'r'), 1f);
+    assertTrue(sm instanceof SimilarityScoreModel);
+    assertTrue(sm instanceof PairwiseScoreModelI);
+    assertFalse(sm instanceof DistanceScoreModel);
+    assertEquals(sm.getName(), "DNA");
+    assertEquals(((PairwiseScoreModelI) sm).getPairwiseScore('c', 'x'), 1f);
 
     sm = models.next();
-    assertTrue(sm instanceof PairwiseDistanceModel);
-    assertEquals(sm.getName(), "DNA");
-    assertEquals(((PairwiseDistanceModel) sm).getScoreModel()
-            .getPairwiseScore('c', 'x'), 1f);
+    assertTrue(sm instanceof SimilarityScoreModel);
+    assertTrue(sm instanceof PairwiseScoreModelI);
+    assertFalse(sm instanceof DistanceScoreModel);
+    assertEquals(sm.getName(), "PID");
+    assertEquals(((PairwiseScoreModelI) sm).getPairwiseScore('R', 'C'), 0f);
+    assertEquals(((PairwiseScoreModelI) sm).getPairwiseScore('R', 'r'), 1f);
 
     sm = models.next();
-    assertFalse(sm instanceof PairwiseDistanceModel);
+    assertFalse(sm instanceof SimilarityScoreModel);
+    assertFalse(sm instanceof PairwiseScoreModelI);
+    assertTrue(sm instanceof DistanceScoreModel);
     assertEquals(sm.getName(), "Sequence Feature Similarity");
+  }
 
-    sm = models.next();
-    assertFalse(sm instanceof PairwiseDistanceModel);
-    assertEquals(sm.getName(), "PID");
+  /**
+   * 'Test' that prints out score matrices in tab-delimited format. This test is
+   * intentionally not assigned to any group so would not be run as part of a
+   * suite. It makes no assertions and is just provided as a utility method for
+   * printing out matrices. Relocated here from ScoreMatrixPrinter.
+   */
+  @Test(groups = "none")
+  public void printAllMatrices_tabDelimited()
+  {
+    printAllMatrices(false);
+  }
+
+  /**
+   * 'Test' that prints out score matrices in html format. This test is
+   * intentionally not assigned to any group so would not be run as part of a
+   * suite. It makes no assertions and is just provided as a utility method for
+   * printing out matrices. Relocated here from ScoreMatrixPrinter.
+   */
+  @Test(groups = "none")
+  public void printAllMatrices_asHtml()
+  {
+    printAllMatrices(true);
+  }
+
+  /**
+   * Print all registered ScoreMatrix as plain or html tables
+   * 
+   * @param asHtml
+   */
+  protected void printAllMatrices(boolean asHtml)
+  {
+    for (ScoreModelI sm : ScoreModels.getInstance().getModels())
+    {
+      if (sm instanceof ScoreMatrix)
+      {
+        System.out.println(((ScoreMatrix) sm).outputMatrix(asHtml));
+      }
+    }
+  }
+
+  @Test(groups = "Functional")
+  public void testInstantiate()
+          throws InstantiationException, IllegalAccessException,
+          NoSuchMethodException, SecurityException,
+          IllegalArgumentException, InvocationTargetException
+  {
+    Class<? extends Object> c = ScoreModels.class;
+    Constructor<? extends Object> con = c.getDeclaredConstructor();
+    con.setAccessible(true);
+    Object o = con.newInstance();
+    System.out.println(o);
   }
 }