JAL-2996 JAL-3053 ~ | : [] {} () treated as gap characters.
[jalview.git] / test / jalview / util / ComparisonTest.java
index b71c270..bd3b52e 100644 (file)
@@ -26,12 +26,22 @@ import static org.testng.AssertJUnit.assertTrue;
 
 import jalview.datamodel.Sequence;
 import jalview.datamodel.SequenceI;
+import jalview.gui.JvOptionPane;
 
+import org.testng.Assert;
+import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
 public class ComparisonTest
 {
 
+  @BeforeClass(alwaysRun = true)
+  public void setUpJvOptionPane()
+  {
+    JvOptionPane.setInteractiveMode(false);
+    JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+  }
+
   @Test(groups = { "Functional" })
   public void testIsGap()
   {
@@ -42,6 +52,23 @@ public class ComparisonTest
     assertFalse(Comparison.isGap('x'));
     assertFalse(Comparison.isGap('*'));
     assertFalse(Comparison.isGap('G'));
+
+    // consistency - test Comparison.isGap covers all gapChars
+    StringBuilder missing = new StringBuilder();
+    for (int i = 0, iSize = Comparison.GapChars.length(); i < iSize; i++)
+    {
+      char gc = Comparison.GapChars.charAt(i);
+      if (!Comparison.isGap(gc))
+      {
+        missing.append(gc);
+      }
+    }
+    if (missing.length() > 0)
+    {
+      Assert.fail(
+              "Comparison.GapChars contains symbols not covered by Comparison.isGap: '"
+              + missing.toString() + "'");
+    }
   }
 
   /**
@@ -106,7 +133,7 @@ public class ComparisonTest
   @Test(groups = { "Functional" })
   public void testPID_includingGaps()
   {
-    String seq1 = "ABCDEF";
+    String seq1 = "ABCDEFG"; // extra length here is ignored
     String seq2 = "abcdef";
     assertEquals("identical", 100f, Comparison.PID(seq1, seq2), 0.001f);
 
@@ -120,12 +147,14 @@ public class ComparisonTest
     int length = seq1.length();
 
     // match gap-residue, match gap-gap: 9/10 identical
+    // TODO should gap-gap be included in a PID score? JAL-791
     assertEquals(90f, Comparison.PID(seq1, seq2, 0, length, true, false),
             0.001f);
     // overloaded version of the method signature above:
     assertEquals(90f, Comparison.PID(seq1, seq2), 0.001f);
 
     // don't match gap-residue, match gap-gap: 7/10 identical
+    // TODO should gap-gap be included in a PID score?
     assertEquals(70f, Comparison.PID(seq1, seq2, 0, length, false, false),
             0.001f);
   }
@@ -154,7 +183,8 @@ public class ComparisonTest
   public void testPID_ungappedOnly()
   {
     // 5 identical, 2 gap-gap, 2 gap-residue, 1 mismatch
-    String seq1 = "a--b-cdefh";
+    // the extra length of seq1 is ignored
+    String seq1 = "a--b-cdefhr";
     String seq2 = "a---bcdefg";
     int length = seq1.length();