JAL-3725 helper methods for computing mapped feature range overlap
[jalview.git] / test / jalview / util / DnaUtilsTest.java
index 6623c13..9815aa0 100644 (file)
@@ -1,22 +1,56 @@
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ 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.util;
 
 import static org.testng.AssertJUnit.assertEquals;
 import static org.testng.AssertJUnit.assertNull;
 import static org.testng.AssertJUnit.fail;
 
+import jalview.gui.JvOptionPane;
+
+import java.text.ParseException;
 import java.util.List;
 
+import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
 public class DnaUtilsTest
 {
+
+  @BeforeClass(alwaysRun = true)
+  public void setUpJvOptionPane()
+  {
+    JvOptionPane.setInteractiveMode(false);
+    JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+  }
+
   /**
    * Tests for parsing an ENA/GenBank location specifier
    * 
+   * @throws ParseException
+   * 
    * @see http://www.insdc.org/files/feature_table.html#3.4
    */
   @Test(groups = { "Functional" })
-  public void testParseLocation()
+  public void testParseLocation() throws ParseException
   {
     /*
      * single locus
@@ -89,33 +123,23 @@ public class DnaUtilsTest
     assertEquals(87064, ranges.get(1)[1]);
 
     /*
-     * beyond 5' or 3' locus
-     */
-    ranges = DnaUtils.parseLocation("<34..126");
-    assertEquals(1, ranges.size());
-    assertEquals(34, ranges.get(0)[0]);
-    assertEquals(126, ranges.get(0)[1]);
-    ranges = DnaUtils.parseLocation("35..>127");
-    assertEquals(1, ranges.size());
-    assertEquals(35, ranges.get(0)[0]);
-    assertEquals(127, ranges.get(0)[1]);
-
-    /*
      * valid things we don't yet handle
      */
-    assertNull(DnaUtils.parseLocation("34.126"));
-    assertNull(DnaUtils.parseLocation("34^126"));
-    assertNull(DnaUtils.parseLocation("order(34..126,130..180)"));
+    checkForParseException("<34..126");
+    checkForParseException("35..>126");
+    checkForParseException("34.126");
+    checkForParseException("34^126");
+    checkForParseException("order(34..126,130..180)");
 
     /*
      * invalid things
      */
-    assertNull(DnaUtils.parseLocation(""));
-    assertNull(DnaUtils.parseLocation("JOIN(1..2)"));
-    assertNull(DnaUtils.parseLocation("join(1..2"));
-    assertNull(DnaUtils.parseLocation("join(1..2("));
-    assertNull(DnaUtils.parseLocation("complement(1..2"));
-    assertNull(DnaUtils.parseLocation("complement(1..2("));
+    checkForParseException("");
+    checkForParseException("JOIN(1..2)");
+    checkForParseException("join(1..2");
+    checkForParseException("join(1..2(");
+    checkForParseException("complement(1..2");
+    checkForParseException("complement(1..2(");
     try
     {
       assertNull(DnaUtils.parseLocation(null));
@@ -129,14 +153,29 @@ public class DnaUtilsTest
      * nested joins are not allowed; just as well since this fails to parse
      * (splitting tokens by comma fragments the inner join expression)
      */
-    assertNull(DnaUtils
-            .parseLocation("join(1..2,join(4..5,10..12),18..22)"));
+    checkForParseException("join(1..2,join(4..5,10..12),18..22)");
     /*
      * complement may not enclose multiple ranges 
      * parsing fails for the same reason
      */
-    assertNull(DnaUtils
-            .parseLocation("join(complement(36618..36700,4000..4200),86988..87064)"));
+    checkForParseException("join(complement(36618..36700,4000..4200),86988..87064)");
+  }
+
+  /**
+   * Verifies that a ParseException is thrown when the given location is parsed
+   * 
+   * @param location
+   */
+  void checkForParseException(String location)
+  {
+    try
+    {
+      DnaUtils.parseLocation(location);
+      fail("Expected exception");
+    } catch (ParseException e)
+    {
+      // expected;
+    }
   }
 
 }