@Test public void testThrowMessageForMessageOnViolation() throws Exception { final ParametersPassesExpression annotation = proxyAnnotation( ParametersPassesExpression.class, "value", "myExpression", "messageOnViolation", "My message - ${#expression}"); final MethodCall<ParametersPassesExpressionUnitTest> methodCall = toMethodCall(ParametersPassesExpressionUnitTest.class, this, "test", "a", 1, "b", 2); try { new Evaluator().throwMessageFor(annotation, methodCall, null); fail("Exception missing"); } catch (IllegalArgumentException e) { assertThat(e.getMessage(), is("My message - " + annotation.value())); assertThat(e.getCause(), nullValue()); } final Throwable cause = new Throwable("myCause"); try { new Evaluator().throwMessageFor(annotation, methodCall, cause); fail("Exception missing"); } catch (IllegalArgumentException e) { assertThat(e.getMessage(), is("My message - " + annotation.value())); assertThat(e.getCause(), is(cause)); } }
@Test public void testFormatViolationMessage() throws Exception { final ParametersPassesExpression annotation1 = proxyAnnotation( ParametersPassesExpression.class, "value", "myExpression", "messageOnViolation", ""); final ParametersPassesExpression annotation2 = proxyAnnotation( ParametersPassesExpression.class, "value", "myExpression", "messageOnViolation", "My message - ${#expression}"); final MethodCall<ParametersPassesExpressionUnitTest> methodCall = toMethodCall(ParametersPassesExpressionUnitTest.class, this, "test", "a", 1, "b", 2); assertThat( new Evaluator().formatViolationMessage(annotation1, methodCall), is("Expression not passed: " + annotation1.value())); assertThat( new Evaluator().formatViolationMessage(annotation2, methodCall), is("My message - " + annotation1.value())); }