X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Futil%2FDnaUtilsTest.java;h=35b4592a0b8480d94be35ef542a4bee9f0425ebe;hb=279c6495df1a0de231600a2d283098c7411c4730;hp=af76885ba19d017a8b8deb4bd94a5f4e2357a49d;hpb=a4507b66add69be7e5097dcc8fbd9bd08b0626cb;p=jalview.git
diff --git a/test/jalview/util/DnaUtilsTest.java b/test/jalview/util/DnaUtilsTest.java
index af76885..35b4592 100644
--- a/test/jalview/util/DnaUtilsTest.java
+++ b/test/jalview/util/DnaUtilsTest.java
@@ -1,27 +1,69 @@
+/*
+ * 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 .
+ * 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
+ */
+ List ranges = DnaUtils.parseLocation("467");
+ assertEquals(1, ranges.size());
+ assertEquals(467, ranges.get(0)[0]);
+ assertEquals(467, ranges.get(0)[1]);
+
+ /*
* simple range
*/
- List ranges = DnaUtils.parseLocation("12..78");
+ ranges = DnaUtils.parseLocation("12..78");
assertEquals(1, ranges.size());
assertEquals(12, ranges.get(0)[0]);
assertEquals(78, ranges.get(0)[1]);
@@ -60,8 +102,8 @@ public class DnaUtilsTest
/*
* join of two complements
*/
- ranges = DnaUtils
- .parseLocation("join(complement(4918..5163),complement(2691..4571))");
+ ranges = DnaUtils.parseLocation(
+ "join(complement(4918..5163),complement(2691..4571))");
assertEquals(2, ranges.size());
assertEquals(5163, ranges.get(0)[0]);
assertEquals(4918, ranges.get(0)[1]);
@@ -83,17 +125,21 @@ public class DnaUtilsTest
/*
* valid things we don't yet handle
*/
- assertNull(DnaUtils.parseLocation("<34..126"));
- assertNull(DnaUtils.parseLocation("34..>126"));
- assertNull(DnaUtils.parseLocation("34.126"));
- assertNull(DnaUtils.parseLocation("34^126"));
+ 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"));
+ 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));
@@ -102,6 +148,35 @@ public class DnaUtilsTest
{
// expected
}
+
+ /*
+ * nested joins are not allowed; just as well since this fails to parse
+ * (splitting tokens by comma fragments the inner join expression)
+ */
+ checkForParseException("join(1..2,join(4..5,10..12),18..22)");
+ /*
+ * complement may not enclose multiple ranges
+ * parsing fails for the same reason
+ */
+ 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;
+ }
}
}