JAL-1645 Version-Rel Version 2.9 Year-Rel 2015 Licensing glob
[jalview.git] / test / jalview / schemes / DnaCodonTests.java
1 /*
2  * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9)
3  * Copyright (C) 2015 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
25 import java.util.Map;
26
27 import org.testng.annotations.Test;
28
29 public class DnaCodonTests
30 {
31
32   @Test(groups = { "Functional" })
33   public void testAmbiguityCodeGeneration()
34   {
35     assertTrue(ResidueProperties.ambiguityCodes.size() > 0);
36   }
37
38   @Test(groups = { "Functional" })
39   public void testAmbiguityCodon()
40   {
41     for (String ac : ResidueProperties.ambiguityCodes.keySet())
42     {
43       assertTrue("Couldn't resolve GGN as glycine codon",
44               ResidueProperties.codonHash2.get("GG" + ac).equals("G"));
45     }
46   }
47
48   @Test(groups = { "Functional" })
49   public void regenerateCodonTable()
50   {
51     for (Map.Entry<String, String> codon : ResidueProperties.codonHash2
52             .entrySet())
53     {
54       System.out.println("ResidueProperties.codonHash2.set(\""
55               + codon.getKey() + "\", \"" + codon.getValue() + "\");");
56     }
57   }
58
59   @Test(groups = { "Functional" })
60   public void checkOldCodonagainstNewCodonTable()
61   {
62     // note - this test will be removed once the old codon table (including
63     // Vectors) is removed
64     String additional = "", failtrans = "", differentTr = "";
65     for (String amacid : ResidueProperties.codonHash.keySet())
66     {
67       for (String codon : ResidueProperties.codonHash.get(amacid))
68       {
69         String trans = ResidueProperties.codonTranslate(codon);
70         String oldtrans = ResidueProperties._codonTranslate(codon);
71         if (trans == null)
72         {
73           additional += "\nOld translation table includes additional codons for "
74                   + amacid + " : " + codon;
75         }
76         if (oldtrans == null)
77         {
78           failtrans += ("\nold translation routine failed for old translation entry (aa was "
79                   + amacid + " codon was " + codon + ")");
80         }
81         if (!oldtrans.equals(trans))
82         {
83           differentTr += ("\nDifferent translation for old and new routines: "
84                   + amacid
85                   + " "
86                   + codon
87                   + " => expected "
88                   + oldtrans
89                   + " and got " + trans);
90         }
91       }
92     }
93     assertTrue("" + additional + "\n" + failtrans + "\n" + differentTr,
94             additional.length() == 0 && failtrans.length() == 0
95                     && differentTr.length() == 0);
96   }
97 }