d84f5677411bd161c69bdbd69271d8399ebd7e6b
[jalview.git] / test / jalview / schemes / DnaCodonTests.java
1 /*
2  * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3  * Copyright (C) $$Year-Rel$$ The Jalview Authors
4  * 
5  * This file is part of Jalview.
6  * 
7  * Jalview is free software: you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License 
9  * as published by the Free Software Foundation, either version 3
10  * of the License, or (at your option) any later version.
11  *  
12  * Jalview is distributed in the hope that it will be useful, but 
13  * WITHOUT ANY WARRANTY; without even the implied warranty 
14  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
15  * PURPOSE.  See the GNU General Public License for more details.
16  * 
17  * You should have received a copy of the GNU General Public License
18  * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
19  * The Jalview Authors are detailed in the 'AUTHORS' file.
20  */
21 package jalview.schemes;
22
23 import static org.testng.AssertJUnit.assertTrue;
24 import org.testng.annotations.Test;
25 import java.util.Map;
26
27 public class DnaCodonTests
28 {
29
30   @Test
31   public void testAmbiguityCodeGeneration()
32   {
33     assertTrue(ResidueProperties.ambiguityCodes.size() > 0);
34   }
35
36   @Test
37   public void testAmbiguityCodon()
38   {
39     for (String ac : ResidueProperties.ambiguityCodes.keySet())
40     {
41       assertTrue("Couldn't resolve GGN as glycine codon",
42               ResidueProperties.codonHash2.get("GG" + ac).equals("G"));
43     }
44   }
45
46   @Test
47   public void regenerateCodonTable()
48   {
49     for (Map.Entry<String, String> codon : ResidueProperties.codonHash2
50             .entrySet())
51     {
52       System.out.println("ResidueProperties.codonHash2.set(\""
53               + codon.getKey() + "\", \"" + codon.getValue() + "\");");
54     }
55   }
56
57   @Test
58   public void checkOldCodonagainstNewCodonTable()
59   {
60     // note - this test will be removed once the old codon table (including
61     // Vectors) is removed
62     String additional = "", failtrans = "", differentTr = "";
63     for (String amacid : ResidueProperties.codonHash.keySet())
64     {
65       for (String codon : ResidueProperties.codonHash.get(amacid))
66       {
67         String trans = ResidueProperties.codonTranslate(codon);
68         String oldtrans = ResidueProperties._codonTranslate(codon);
69         if (trans == null)
70         {
71           additional += "\nOld translation table includes additional codons for "
72                   + amacid + " : " + codon;
73         }
74         if (oldtrans == null)
75         {
76           failtrans += ("\nold translation routine failed for old translation entry (aa was "
77                   + amacid + " codon was " + codon + ")");
78         }
79         if (!oldtrans.equals(trans))
80         {
81           differentTr += ("\nDifferent translation for old and new routines: "
82                   + amacid
83                   + " "
84                   + codon
85                   + " => expected "
86                   + oldtrans
87                   + " and got " + trans);
88         }
89       }
90     }
91     assertTrue("" + additional + "\n" + failtrans + "\n" + differentTr,
92             additional.length() == 0 && failtrans.length() == 0
93                     && differentTr.length() == 0);
94   }
95 }