X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=test%2Fjalview%2Futil%2FDnaUtilsTest.java;h=fbc95ad6e0f61169f0866205fc0832c399691503;hb=e838644df5d5a10a16cf0ad7fb23d24dd7d2729a;hp=9e978fe6224cef2673a85da3290033ab8609a8fa;hpb=67538ac6c16cf7a413023a1faf0593a20b1634e3;p=jalview.git diff --git a/test/jalview/util/DnaUtilsTest.java b/test/jalview/util/DnaUtilsTest.java index 9e978fe..fbc95ad 100644 --- a/test/jalview/util/DnaUtilsTest.java +++ b/test/jalview/util/DnaUtilsTest.java @@ -4,6 +4,7 @@ import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertNull; import static org.testng.AssertJUnit.fail; +import java.text.ParseException; import java.util.List; import org.testng.annotations.Test; @@ -13,10 +14,12 @@ public class DnaUtilsTest /** * 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 @@ -91,21 +94,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")); - 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)); @@ -114,6 +117,34 @@ 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; + } } }