JAL-2089 patch broken merge to master for Release 2.10.0b1
[jalview.git] / test / jalview / analysis / RnaTest.java
index 95c37ac..9d35a19 100644 (file)
@@ -105,7 +105,7 @@ public class RnaTest
     {
       String s = String.valueOf((char) i);
       String ss = Rna.getRNASecStrucState(s);
-  
+
       /*
        * valid SS chars are a-z, A-Z, and various brackets;
        * anything else is returned as a space
@@ -120,7 +120,7 @@ public class RnaTest
         assertEquals(" ", ss);
       }
     }
-  
+
     /*
      * a string is processed character by character
      */
@@ -128,24 +128,34 @@ public class RnaTest
             Rna.getRNASecStrucState("a.[K-]z}?{Q b(w)p><i"));
   }
 
+  /**
+   * Tests for isClosingParenthesis with char or String argument
+   */
   @Test(groups = { "Functional" })
   public void testIsClosingParenthesis()
   {
+    assertFalse(Rna.isClosingParenthesis(null));
+
     /*
      * only a-z, )]}> are closing bracket symbols
      */
     for (int i = 0; i <= 255; i++)
     {
-      boolean isClosing = Rna.isClosingParenthesis((char) i);
+      boolean isClosingChar = Rna.isClosingParenthesis((char) i);
+      boolean isClosingString = Rna.isClosingParenthesis(String
+              .valueOf((char) i));
       if ((i >= 'a' && i <= 'z') || i == ')' || i == '}' || i == ']'
               || i == '>')
       {
-        assertTrue(String.format("close base pair %c", i), isClosing);
+        assertTrue(String.format("close base pair %c", i), isClosingChar);
+        assertTrue(String.format("close base pair %c", i), isClosingString);
       }
       else
       {
-        assertFalse(String.format("close base pair %c", i), isClosing);
+        assertFalse(String.format("close base pair %c", i), isClosingChar);
+        assertFalse(String.format("close base pair %c", i), isClosingString);
       }
+      assertFalse(Rna.isClosingParenthesis(String.valueOf((char) i) + " "));
     }
   }
 
@@ -179,6 +189,36 @@ public class RnaTest
   }
 
   @Test(groups = { "Functional" })
+  public void testIsCanonicalPair()
+  {
+    String bases = "acgtuACGTU";
+    for (int i = 0; i < bases.length(); i++)
+    {
+      for (int j = 0; j < bases.length(); j++)
+      {
+        char first = bases.charAt(i);
+        char second = bases.charAt(j);
+        boolean result = Rna.isCanonicalPair(first, second);
+        String pair = new String(new char[] { first, second })
+                .toUpperCase();
+        if (pair.equals("AT") || pair.equals("TA") || pair.equals("AU")
+                || pair.equals("UA") || pair.equals("GC")
+                || pair.equals("CG"))
+        {
+          assertTrue(pair + " should be valid", result);
+        }
+        else
+        {
+          assertFalse(pair + " should be invalid", result);
+        }
+      }
+    }
+  }
+
+  /**
+   * Tests for isOpeningParenthesis with char or String argument
+   */
+  @Test(groups = { "Functional" })
   public void testIsOpeningParenthesis()
   {
     /*
@@ -186,16 +226,21 @@ public class RnaTest
      */
     for (int i = 0; i <= 255; i++)
     {
-      boolean isOpening = Rna.isOpeningParenthesis((char) i);
+      boolean isOpeningChar = Rna.isOpeningParenthesis((char) i);
+      boolean isOpeningString = Rna.isOpeningParenthesis(String
+              .valueOf((char) i));
       if ((i >= 'A' && i <= 'Z') || i == '(' || i == '{' || i == '['
               || i == '<')
       {
-        assertTrue(String.format("Open base pair %c", i), isOpening);
+        assertTrue(String.format("Open base pair %c", i), isOpeningChar);
+        assertTrue(String.format("Open base pair %c", i), isOpeningString);
       }
       else
       {
-        assertFalse(String.format("Open base pair %c", i), isOpening);
+        assertFalse(String.format("Open base pair %c", i), isOpeningChar);
+        assertFalse(String.format("Open base pair %c", i), isOpeningString);
       }
+      assertFalse(Rna.isOpeningParenthesis(String.valueOf((char) i) + " "));
     }
   }
 
@@ -225,4 +270,37 @@ public class RnaTest
       }
     }
   }
+
+  /**
+   * Tests for isRnaSecondaryStructureSymbol with char or String argument
+   */
+  @Test(groups = { "Functional" })
+  public void testIsRnaSecondaryStructureSymbol()
+  {
+    assertFalse(Rna.isRnaSecondaryStructureSymbol(null));
+
+    /*
+     * only A-Z,  a-z, ()[]{}<> are valid symbols
+     */
+    for (int i = 0; i <= 255; i++)
+    {
+      boolean isValidChar = Rna.isRnaSecondaryStructureSymbol((char) i);
+      boolean isValidString = Rna.isRnaSecondaryStructureSymbol(String
+              .valueOf((char) i));
+      if ((i >= 'A' && i <= 'Z') || (i >= 'a' && i <= 'z') || i == '('
+              || i == ')' || i == '{' || i == '}' || i == '[' || i == ']'
+              || i == '<' || i == '>')
+      {
+        assertTrue(String.format("close base pair %c", i), isValidChar);
+        assertTrue(String.format("close base pair %c", i), isValidString);
+      }
+      else
+      {
+        assertFalse(String.format("close base pair %c", i), isValidChar);
+        assertFalse(String.format("close base pair %c", i), isValidString);
+      }
+      assertFalse(Rna.isRnaSecondaryStructureSymbol(String
+              .valueOf((char) i) + " "));
+    }
+  }
 }