JAL-1965 refactored SeqIdName to public class, and more tests for word generation
[jalview.git] / test / jalview / analysis / SequenceIdMatcherTest.java
index 2a07ad5..325a0c4 100644 (file)
@@ -3,7 +3,9 @@ package jalview.analysis;
 import jalview.datamodel.Sequence;
 import jalview.datamodel.SequenceI;
 
+import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.List;
 
 import org.testng.Assert;
 import org.testng.annotations.Test;
@@ -34,11 +36,18 @@ public class SequenceIdMatcherTest
   {
     for (SequenceI sq : SequenceIdMatcherTest.someseqs)
     {
+      System.out.println("Searching with '" + sq.getName() + "'");
       SequenceI[] idmatches = getMatcher().findAllIdMatches(sq.getName());
       Assert.assertTrue(
               idmatches.length >= 1,
               "Couldn't recover at least one sequence for string '"
                       + sq.getName() + "'");
+      for (SequenceI f : idmatches)
+      {
+        System.out.println("For '" + sq.getName() + "' found '"
+                + f.getName() + "'");
+      }
+
       SequenceI[] seqmatches = getMatcher().findIdMatch(
               new SequenceI[] { sq });
       Assert.assertEquals(1, seqmatches.length,
@@ -96,6 +105,37 @@ public class SequenceIdMatcherTest
   }
 
   @Test(groups = { "Functional" })
+  public void testWordSplit()
+  {
+    String[] words = new String[] { "several", "words", "separated",
+        "fully" };
+    String full = "";
+    for (String word : words)
+    {
+      if (full.length() > 0)
+      {
+        full += "|";
+      }
+      full += word;
+    }
+    List<SeqIdName> bits = SequenceIdMatcher.getWordsFor(new Sequence(full,
+            "dummy"));
+    for (String word : words)
+    {
+      List<SeqIdName> equals = new ArrayList<SeqIdName>();
+      for (SeqIdName bit : bits)
+      {
+        if (bit.equals(word))
+        {
+          equals.add(bit);
+        }
+      }
+      Assert.assertTrue(equals.size() > 0,
+              "Word generation has broken. Expected at least one match for '"
+                      + word + "'");
+    }
+  }
+  @Test(groups = { "Functional" })
   public void testFlankingMatch()
   {
     SequenceI[] match = getMatcher().findAllIdMatches("complexId");
@@ -107,6 +147,11 @@ public class SequenceIdMatcherTest
             .findAllIdMatches("complexId");
     // should find 6 distinct sequences
     Assert.assertNotNull(fmatch, "Flanking matches not found.");
+    for (SequenceI f:fmatch)
+    {
+      System.out.println("Flanking 'complexId' match: '" + f.getName()
+              + "'");
+    }
     Assert.assertEquals(fmatch.length, 6,
             "Couldn't find all entries with IDs containing 'complexId' word match");