The tests above are a tad long. I see that they're testing many thing in a compact format, but there might be some better solutions. Is there some duplication there? Another solution would be to split them into multiple test classes.

Also, the try-catch way of asserting exceptions seems somewhat ugly -- if we decide to switch to Java 8 at some point, something like this may help: https://github.com/marschall/junit-lambda . Or, there's `@Test(expected=...)`.