JAL-2326 added setup method for JvOptionPane in all Jalveiw test classes to enable...
[jalview.git] / test / jalview / datamodel / AlignedCodonIteratorTest.java
index abb06ad..dd3ec7c 100644 (file)
@@ -23,11 +23,13 @@ package jalview.datamodel;
 import static org.testng.AssertJUnit.assertEquals;
 import static org.testng.AssertJUnit.assertFalse;
 
+import jalview.gui.JvOptionPane;
 import jalview.util.MapList;
 
 import java.util.Iterator;
 
 import org.testng.Assert;
+import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
 /**
@@ -38,6 +40,14 @@ import org.testng.annotations.Test;
  */
 public class AlignedCodonIteratorTest
 {
+
+  @BeforeClass(alwaysRun = true)
+  public void setUpJvOptionPane()
+  {
+    JvOptionPane.setInteractiveMode(false);
+    JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+  }
+
   /**
    * Test normal case for iterating over aligned codons.
    */
@@ -150,4 +160,31 @@ public class AlignedCodonIteratorTest
     assertEquals("Q", codon.product);
     assertFalse(codons.hasNext());
   }
+
+  /**
+   * Test for a case with sequence (and mappings) not starting at 1
+   */
+  @Test(groups = { "Functional" })
+  public void testNext_withOffset()
+  {
+    SequenceI from = new Sequence("Seq1", "-CgC-C-cCtAG-AtG-Gc", 7, 20);
+    from.createDatasetSequence();
+    SequenceI to = new Sequence("Seq1/10-12", "-PQ-R-");
+    to.createDatasetSequence();
+    MapList map = new MapList(new int[] { 7, 7, 9, 10, 12, 12, 14, 16, 18,
+        19 }, new int[] { 10, 12 }, 3, 1);
+    Mapping m = new Mapping(to.getDatasetSequence(), map);
+
+    Iterator<AlignedCodon> codons = m.getCodonIterator(from, '-');
+    AlignedCodon codon = codons.next();
+    assertEquals("[1, 3, 5]", codon.toString());
+    assertEquals("P", codon.product);
+    codon = codons.next();
+    assertEquals("[8, 10, 11]", codon.toString());
+    assertEquals("Q", codon.product);
+    codon = codons.next();
+    assertEquals("[13, 15, 17]", codon.toString());
+    assertEquals("R", codon.product);
+    assertFalse(codons.hasNext());
+  }
 }