JAL-1270 JUnit to TestNG refactoring
[jalview.git] / test / jalview / datamodel / AlignedCodonIteratorTest.java
1 package jalview.datamodel;
2
3 import static org.testng.AssertJUnit.assertEquals;
4 import static org.testng.AssertJUnit.assertFalse;
5 import org.testng.annotations.Test;
6 import org.testng.Assert;
7 import jalview.util.MapList;
8
9 import java.util.Iterator;
10
11 /**
12  * Unit tests for Mapping$AlignedCodonIterator
13  * 
14  * @author gmcarstairs
15  *
16  */
17 public class AlignedCodonIteratorTest
18 {
19   /**
20    * Test normal case for iterating over aligned codons.
21    */
22   @Test
23   public void testNext()
24   {
25     SequenceI from = new Sequence("Seq1", "-CgC-C-cCtAG-AtG-Gc");
26     from.createDatasetSequence();
27     SequenceI to = new Sequence("Seq1", "-PQ-R-");
28     to.createDatasetSequence();
29     MapList map = new MapList(new int[]
30     { 1, 1, 3, 4, 6, 6, 8, 10, 12, 13 }, new int[]
31     { 1, 3 }, 3, 1);
32     Mapping m = new Mapping(to.getDatasetSequence(), map);
33
34     Iterator<AlignedCodon> codons = m.getCodonIterator(from, '-');
35     AlignedCodon codon = codons.next();
36     assertEquals("[1, 3, 5]", codon.toString());
37     assertEquals("P", codon.product);
38     codon = codons.next();
39     assertEquals("[8, 10, 11]", codon.toString());
40     assertEquals("Q", codon.product);
41     codon = codons.next();
42     assertEquals("[13, 15, 17]", codon.toString());
43     assertEquals("R", codon.product);
44     assertFalse(codons.hasNext());
45   }
46
47   /**
48    * Test weird case where the mapping skips over a peptide.
49    */
50   @Test
51   public void testNext_unmappedPeptide()
52   {
53     SequenceI from = new Sequence("Seq1", "-CgC-C-cCtAG-AtG-Gc");
54     from.createDatasetSequence();
55     SequenceI to = new Sequence("Seq1", "-PQ-TR-");
56     to.createDatasetSequence();
57     MapList map = new MapList(new int[]
58     { 1, 1, 3, 4, 6, 6, 8, 10, 12, 13 }, new int[]
59     { 1, 2, 4, 4 }, 3, 1);
60     Mapping m = new Mapping(to.getDatasetSequence(), map);
61
62     Iterator<AlignedCodon> codons = m.getCodonIterator(from, '-');
63     AlignedCodon codon = codons.next();
64     assertEquals("[1, 3, 5]", codon.toString());
65     assertEquals("P", codon.product);
66     codon = codons.next();
67     assertEquals("[8, 10, 11]", codon.toString());
68     assertEquals("Q", codon.product);
69     codon = codons.next();
70     assertEquals("[13, 15, 17]", codon.toString());
71     assertEquals("R", codon.product);
72     assertFalse(codons.hasNext());
73   }
74   
75   /**
76    * Test for exception thrown for an incomplete codon.
77    */
78   @Test
79   public void testNext_incompleteCodon()
80   {
81     SequenceI from = new Sequence("Seq1", "-CgC-C-cCgTt");
82     from.createDatasetSequence();
83     SequenceI to = new Sequence("Seq1", "-PQ-R-");
84     to.createDatasetSequence();
85     MapList map = new MapList(new int[]
86     { 1, 1, 3, 4, 6, 6, 8, 8 }, new int[]
87     { 1, 3 }, 3, 1);
88     Mapping m = new Mapping(to.getDatasetSequence(), map);
89
90     Iterator<AlignedCodon> codons = m.getCodonIterator(from, '-');
91     AlignedCodon codon = codons.next();
92     assertEquals("[1, 3, 5]", codon.toString());
93     assertEquals("P", codon.product);
94     try
95     {
96       codon = codons.next();
97       Assert.fail("expected exception");
98     } catch (IncompleteCodonException e)
99     {
100       // expected
101     }
102   }
103
104   /**
105    * Test normal case for iterating over aligned codons.
106    */
107   @Test
108   public void testAnother()
109   {
110     SequenceI from = new Sequence("Seq1", "TGCCATTACCAG-");
111     from.createDatasetSequence();
112     SequenceI to = new Sequence("Seq1", "CHYQ");
113     to.createDatasetSequence();
114     MapList map = new MapList(new int[]
115     { 1, 12 }, new int[]
116     { 1, 4 }, 3, 1);
117     Mapping m = new Mapping(to.getDatasetSequence(), map);
118   
119     Iterator<AlignedCodon> codons = m.getCodonIterator(from, '-');
120     AlignedCodon codon = codons.next();
121     assertEquals("[0, 1, 2]", codon.toString());
122     assertEquals("C", codon.product);
123     codon = codons.next();
124     assertEquals("[3, 4, 5]", codon.toString());
125     assertEquals("H", codon.product);
126     codon = codons.next();
127     assertEquals("[6, 7, 8]", codon.toString());
128     assertEquals("Y", codon.product);
129     codon = codons.next();
130     assertEquals("[9, 10, 11]", codon.toString());
131     assertEquals("Q", codon.product);
132     assertFalse(codons.hasNext());
133   }
134 }