JAL-1841 robustness fix
[jalview.git] / test / jalview / datamodel / AlignmentTest.java
index bd445c4..b75ef50 100644 (file)
@@ -32,6 +32,7 @@ import jalview.io.FormatAdapter;
 import jalview.util.MapList;
 
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Iterator;
 import java.util.List;
@@ -216,7 +217,7 @@ public class AlignmentTest
    * 
    * @throws IOException
    */
-  @Test(groups = { "Functional" }, enabled = false)
+  @Test(groups = { "Functional" }, enabled = true)
   // TODO review / update this test after redesign of alignAs method
   public void testAlignAs_cdnaAsProtein() throws IOException
   {
@@ -231,7 +232,7 @@ public class AlignmentTest
      * Realign DNA; currently keeping existing gaps in introns only
      */
     ((Alignment) al1).alignAs(al2, false, true);
-    assertEquals("ACG---GCUCCA------ACT", al1.getSequenceAt(0)
+    assertEquals("ACG---GCUCCA------ACT---", al1.getSequenceAt(0)
             .getSequenceAsString());
     assertEquals("---CGT---TAACGA---AGT---", al1.getSequenceAt(1)
             .getSequenceAsString());
@@ -242,7 +243,7 @@ public class AlignmentTest
    * 
    * @throws IOException
    */
-  @Test(groups = { "Functional" }, enabled = false)
+  @Test(groups = { "Functional" }, enabled = true)
   // TODO review / update this test after redesign of alignAs method
   public void testAlignAs_cdnaAsProtein_singleSequence() throws IOException
   {
@@ -314,7 +315,12 @@ public class AlignmentTest
       acf.addMap(seqFrom, seqTo, ml);
     }
 
+    /*
+     * not sure whether mappings 'belong' or protein or nucleotide
+     * alignment, so adding to both ;~)
+     */
     alFrom.addCodonFrame(acf);
+    alTo.addCodonFrame(acf);
   }
 
   /**
@@ -397,6 +403,8 @@ public class AlignmentTest
     // TODO should the copy constructor copy the dataset?
     // or make a new one referring to the same dataset sequences??
     assertNull(copy.getDataset());
+    // TODO test metadata is copied when AlignmentI is a dataset
+
     // assertArrayEquals(copy.getDataset().getSequencesArray(), protein
     // .getDataset().getSequencesArray());
   }
@@ -435,8 +443,7 @@ public class AlignmentTest
     // TODO promote this method to AlignmentI
     ((Alignment) protein).createDatasetAlignment();
 
-    // TODO this method should return AlignmentI not Alignment !!
-    Alignment ds = protein.getDataset();
+    AlignmentI ds = protein.getDataset();
 
     // side-effect: dataset created on second sequence
     assertNotNull(protein.getSequenceAt(1).getDatasetSequence());
@@ -474,4 +481,33 @@ public class AlignmentTest
     align.addCodonFrame(acf2);
     assertTrue(align.getDataset().getCodonFrames().contains(acf));
   }
+
+  @Test(groups = "Functional")
+  public void getVisibleStartAndEndIndexTest()
+  {
+    Sequence seq = new Sequence("testSeq", "ABCDEFGHIJKLMNOPQRSTUVWXYZ");
+    AlignmentI align = new Alignment(new SequenceI[] { seq });
+    ArrayList<int[]> hiddenCols = new ArrayList<int[]>();
+
+    int[] startEnd = align.getVisibleStartAndEndIndex(hiddenCols);
+    assertEquals(0, startEnd[0]);
+    assertEquals(25, startEnd[1]);
+
+    hiddenCols.add(new int[] { 0, 0 });
+    startEnd = align.getVisibleStartAndEndIndex(hiddenCols);
+    assertEquals(1, startEnd[0]);
+    assertEquals(25, startEnd[1]);
+
+    hiddenCols.add(new int[] { 6, 9 });
+    hiddenCols.add(new int[] { 11, 12 });
+    startEnd = align.getVisibleStartAndEndIndex(hiddenCols);
+    assertEquals(1, startEnd[0]);
+    assertEquals(25, startEnd[1]);
+
+    hiddenCols.add(new int[] { 24, 25 });
+    startEnd = align.getVisibleStartAndEndIndex(hiddenCols);
+    System.out.println(startEnd[0] + " : " + startEnd[1]);
+    assertEquals(1, startEnd[0]);
+    assertEquals(23, startEnd[1]);
+  }
 }