JAL-2089 patch broken merge to master for Release 2.10.0b1
[jalview.git] / test / jalview / datamodel / SeqCigarTest.java
index 3b50ce1..bb6581f 100644 (file)
@@ -1,8 +1,30 @@
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ * 
+ * This file is part of Jalview.
+ * 
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License 
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *  
+ * Jalview is distributed in the hope that it will be useful, but 
+ * WITHOUT ANY WARRANTY; without even the implied warranty 
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
+ * PURPOSE.  See the GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
 package jalview.datamodel;
 
 import static org.testng.AssertJUnit.assertEquals;
 import static org.testng.AssertJUnit.assertFalse;
 
+import jalview.util.Comparison;
+
 import org.testng.annotations.Test;
 
 /**
@@ -10,12 +32,36 @@ import org.testng.annotations.Test;
  */
 public class SeqCigarTest
 {
+  @Test(groups = { "Functional" })
+  public void testFindPosition()
+  {
+    SequenceI oseq = new Sequence("MySeq", "ASD---ASD---ASD", 37, 45);
+    oseq.createDatasetSequence();
+    SeqCigar cs = new SeqCigar(oseq);
+    assertEquals(oseq.getSequenceAsString(), cs.getSequenceString('-'));
+    for (int c = 0, cLen = oseq.getLength(); c < cLen; c++)
+    {
+      int os_p = oseq.findPosition(c);
+      int cigar_p = cs.findPosition(c);
+      if (Comparison.isGap(oseq.getCharAt(c)))
+      {
+        assertEquals("Expected gap at position " + os_p + " column " + c,
+                -1, cigar_p);
+      }
+      else
+      {
+        assertEquals("Positions don't match for at column " + c, os_p,
+                cigar_p);
+      }
+    }
+  }
+
   /*
    * refactored 'as is' from main method
    * 
    * TODO: split into separate tests
    */
-  @Test(groups ={ "Functional" })
+  @Test(groups = { "Functional" })
   public void testSomething() throws Exception
   {
     String o_seq = "asdfktryasdtqwrtsaslldddptyipqqwaslchvhttt";
@@ -51,7 +97,7 @@ public class SeqCigarTest
      */
     assertEquals("Failed getWidth", sub_gapped_s.length(),
             sub_gapped.getWidth());
-  
+
     sub_gapped.getFullWidth();
     assertFalse("hasDeletedRegions is incorrect",
             sub_gapped.hasDeletedRegions());
@@ -86,9 +132,8 @@ public class SeqCigarTest
       }
     }
 
-    SeqCigar[] set = new SeqCigar[]
-    { new SeqCigar(s), new SeqCigar(s_subsequence_gapped, 8, 48),
-        new SeqCigar(s_gapped) };
+    SeqCigar[] set = new SeqCigar[] { new SeqCigar(s),
+        new SeqCigar(s_subsequence_gapped, 8, 48), new SeqCigar(s_gapped) };
     Alignment al = new Alignment(set);
     for (int i = 0; i < al.getHeight(); i++)
     {
@@ -99,9 +144,8 @@ public class SeqCigarTest
     }
 
     System.out.println("Gapped.");
-    set = new SeqCigar[]
-    { new SeqCigar(s), new SeqCigar(s_subsequence_gapped, 8, 48),
-        new SeqCigar(s_gapped) };
+    set = new SeqCigar[] { new SeqCigar(s),
+        new SeqCigar(s_subsequence_gapped, 8, 48), new SeqCigar(s_gapped) };
     set[0].deleteRange(20, 25);
     al = new Alignment(set);
     for (int i = 0; i < al.getHeight(); i++)
@@ -126,18 +170,14 @@ public class SeqCigarTest
    * @return String
    */
 
-
   protected void testCigar_string(Sequence seq, String ex_cs_gapped)
   {
     SeqCigar c_sgapped = new SeqCigar(seq);
     String cs_gapped = c_sgapped.getCigarstring();
-    assertEquals("Failed getCigarstring", ex_cs_gapped,
-            cs_gapped);
+    assertEquals("Failed getCigarstring", ex_cs_gapped, cs_gapped);
   }
 
-
-  protected void testSeqRecovery(SeqCigar gen_sgapped,
-          SequenceI s_gapped)
+  protected void testSeqRecovery(SeqCigar gen_sgapped, SequenceI s_gapped)
   {
     // this is non-rigorous - start and end recovery is not tested.
     SequenceI gen_sgapped_s = gen_sgapped.getSeq('-');