JAL-1645 Version-Rel Version 2.9 Year-Rel 2015 Licensing glob
[jalview.git] / test / jalview / schemes / DnaCodonTests.java
index 690a7bc..07ae7bb 100644 (file)
@@ -1,49 +1,97 @@
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9)
+ * Copyright (C) 2015 The Jalview Authors
+ * 
+ * This file is part of Jalview.
+ * 
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License 
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *  
+ * Jalview is distributed in the hope that it will be useful, but 
+ * WITHOUT ANY WARRANTY; without even the implied warranty 
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
+ * PURPOSE.  See the GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
 package jalview.schemes;
 
-import static org.junit.Assert.*;
+import static org.testng.AssertJUnit.assertTrue;
 
-import jalview.datamodel.AlignmentI;
-import jalview.datamodel.ColumnSelection;
-import jalview.datamodel.Sequence;
-import jalview.datamodel.SequenceI;
-
-import java.io.IOException;
 import java.util.Map;
 
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.testng.annotations.Test;
 
 public class DnaCodonTests
 {
 
-  @BeforeClass
-  public static void setUpBeforeClass() throws Exception
+  @Test(groups = { "Functional" })
+  public void testAmbiguityCodeGeneration()
   {
+    assertTrue(ResidueProperties.ambiguityCodes.size() > 0);
   }
 
-  @AfterClass
-  public static void tearDownAfterClass() throws Exception
+  @Test(groups = { "Functional" })
+  public void testAmbiguityCodon()
   {
+    for (String ac : ResidueProperties.ambiguityCodes.keySet())
+    {
+      assertTrue("Couldn't resolve GGN as glycine codon",
+              ResidueProperties.codonHash2.get("GG" + ac).equals("G"));
+    }
   }
 
-  @Test
-  public void testAmbiguityCodeGeneration()
+  @Test(groups = { "Functional" })
+  public void regenerateCodonTable()
   {
-    assertTrue(ResidueProperties.ambiguityCodes.size()>0);
-  }
-  @Test
-  public void testAmbiguityCodon() {
-    for (String ac:ResidueProperties.ambiguityCodes.keySet())
+    for (Map.Entry<String, String> codon : ResidueProperties.codonHash2
+            .entrySet())
     {
-      assertTrue("Couldn't resolve GGN as glycine codon",ResidueProperties.codonHash2.get("GG"+ac).equals("G"));
+      System.out.println("ResidueProperties.codonHash2.set(\""
+              + codon.getKey() + "\", \"" + codon.getValue() + "\");");
     }
   }
-  @Test
-  public void regenerateCodonTable() {
-    for (Map.Entry<String, String> codon:ResidueProperties.codonHash2.entrySet())
+
+  @Test(groups = { "Functional" })
+  public void checkOldCodonagainstNewCodonTable()
+  {
+    // note - this test will be removed once the old codon table (including
+    // Vectors) is removed
+    String additional = "", failtrans = "", differentTr = "";
+    for (String amacid : ResidueProperties.codonHash.keySet())
     {
-      System.out.println("ResidueProperties.codonHash2.set(\""+codon.getKey()+"\", \""+codon.getValue()+"\");");
+      for (String codon : ResidueProperties.codonHash.get(amacid))
+      {
+        String trans = ResidueProperties.codonTranslate(codon);
+        String oldtrans = ResidueProperties._codonTranslate(codon);
+        if (trans == null)
+        {
+          additional += "\nOld translation table includes additional codons for "
+                  + amacid + " : " + codon;
+        }
+        if (oldtrans == null)
+        {
+          failtrans += ("\nold translation routine failed for old translation entry (aa was "
+                  + amacid + " codon was " + codon + ")");
+        }
+        if (!oldtrans.equals(trans))
+        {
+          differentTr += ("\nDifferent translation for old and new routines: "
+                  + amacid
+                  + " "
+                  + codon
+                  + " => expected "
+                  + oldtrans
+                  + " and got " + trans);
+        }
+      }
     }
+    assertTrue("" + additional + "\n" + failtrans + "\n" + differentTr,
+            additional.length() == 0 && failtrans.length() == 0
+                    && differentTr.length() == 0);
   }
 }