/* * Hibernate Validator, declare and validate application constraints * * License: Apache License, Version 2.0 * See the license.txt file in the root directory or <http://www.apache.org/licenses/LICENSE-2.0>. */ package org.hibernate.validator.ap; import static org.hibernate.validator.ap.testutil.CompilerTestHelper.assertThatDiagnosticsMatch; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertTrue; import java.io.File; import javax.tools.Diagnostic.Kind; import org.hibernate.validator.ap.testmodel.annotationparameters.InvalidDecimalMinMaxParameters; import org.hibernate.validator.ap.testmodel.annotationparameters.InvalidDigitsParameters; import org.hibernate.validator.ap.testmodel.annotationparameters.InvalidLengthParameters; import org.hibernate.validator.ap.testmodel.annotationparameters.InvalidPatternParameters; import org.hibernate.validator.ap.testmodel.annotationparameters.InvalidScriptAssertParameters; import org.hibernate.validator.ap.testmodel.annotationparameters.InvalidSizeParameters; import org.hibernate.validator.ap.testmodel.annotationparameters.ValidDecimalMinMaxParameters; import org.hibernate.validator.ap.testmodel.annotationparameters.ValidDigitsParameters; import org.hibernate.validator.ap.testmodel.annotationparameters.ValidGroupsParameters; import org.hibernate.validator.ap.testmodel.annotationparameters.ValidLengthParameters; import org.hibernate.validator.ap.testmodel.annotationparameters.ValidMessageParameters; import org.hibernate.validator.ap.testmodel.annotationparameters.ValidPatternParameters; import org.hibernate.validator.ap.testmodel.annotationparameters.ValidScriptAssertParameters; import org.hibernate.validator.ap.testmodel.annotationparameters.ValidSizeParameters; import org.hibernate.validator.ap.util.DiagnosticExpectation; import org.hibernate.validator.testutil.TestForIssue; import org.testng.annotations.Test; /** * Test cases for {@link ConstraintValidationProcessor} testing the checking of annotation parameters validity. * * @author Marko Bekhta */ public class AnnotationParametersValidationTest extends ConstraintValidationProcessorTestBase { @Test public void testValidSizeParameters() { File sourceFile = compilerHelper.getSourceFile( ValidSizeParameters.class ); boolean compilationResult = compilerHelper.compile( new ConstraintValidationProcessor(), diagnostics, sourceFile ); assertTrue( compilationResult ); assertThatDiagnosticsMatch( diagnostics ); } @Test public void testInvalidSizeParameters() { File sourceFile = compilerHelper.getSourceFile( InvalidSizeParameters.class ); boolean compilationResult = compilerHelper.compile( new ConstraintValidationProcessor(), diagnostics, sourceFile ); assertFalse( compilationResult ); assertThatDiagnosticsMatch( diagnostics, new DiagnosticExpectation( Kind.ERROR, 17 ), new DiagnosticExpectation( Kind.ERROR, 20 ), new DiagnosticExpectation( Kind.ERROR, 23 ), new DiagnosticExpectation( Kind.ERROR, 26 ), new DiagnosticExpectation( Kind.ERROR, 30 ), new DiagnosticExpectation( Kind.ERROR, 31 ), new DiagnosticExpectation( Kind.ERROR, 32 ), new DiagnosticExpectation( Kind.ERROR, 38 ), new DiagnosticExpectation( Kind.ERROR, 39 ), new DiagnosticExpectation( Kind.ERROR, 40 ), new DiagnosticExpectation( Kind.ERROR, 45 ) ); } @Test public void testValidLengthParameters() { File sourceFile = compilerHelper.getSourceFile( ValidLengthParameters.class ); boolean compilationResult = compilerHelper.compile( new ConstraintValidationProcessor(), diagnostics, sourceFile ); assertTrue( compilationResult ); assertThatDiagnosticsMatch( diagnostics ); } @Test public void testInvalidLengthParameters() { File sourceFile = compilerHelper.getSourceFile( InvalidLengthParameters.class ); boolean compilationResult = compilerHelper.compile( new ConstraintValidationProcessor(), diagnostics, sourceFile ); assertFalse( compilationResult ); assertThatDiagnosticsMatch( diagnostics, new DiagnosticExpectation( Kind.ERROR, 16 ), new DiagnosticExpectation( Kind.ERROR, 19 ), new DiagnosticExpectation( Kind.ERROR, 22 ), new DiagnosticExpectation( Kind.ERROR, 25 ), new DiagnosticExpectation( Kind.ERROR, 29 ), new DiagnosticExpectation( Kind.ERROR, 30 ), new DiagnosticExpectation( Kind.ERROR, 31 ), new DiagnosticExpectation( Kind.ERROR, 37 ), new DiagnosticExpectation( Kind.ERROR, 38 ), new DiagnosticExpectation( Kind.ERROR, 39 ), new DiagnosticExpectation( Kind.ERROR, 44 ) ); } @Test public void testValidScriptAssertParameters() { File sourceFile = compilerHelper.getSourceFile( ValidScriptAssertParameters.class ); boolean compilationResult = compilerHelper.compile( new ConstraintValidationProcessor(), diagnostics, sourceFile ); assertTrue( compilationResult ); assertThatDiagnosticsMatch( diagnostics ); } @Test public void testInvalidScriptAssertParameters() { File sourceFile = compilerHelper.getSourceFile( InvalidScriptAssertParameters.class ); boolean compilationResult = compilerHelper.compile( new ConstraintValidationProcessor(), diagnostics, sourceFile ); assertFalse( compilationResult ); assertThatDiagnosticsMatch( diagnostics, new DiagnosticExpectation( Kind.ERROR, 16 ), new DiagnosticExpectation( Kind.ERROR, 20 ), new DiagnosticExpectation( Kind.ERROR, 24 ), new DiagnosticExpectation( Kind.ERROR, 28 ), new DiagnosticExpectation( Kind.ERROR, 32 ), new DiagnosticExpectation( Kind.ERROR, 36 ), new DiagnosticExpectation( Kind.ERROR, 40 ), new DiagnosticExpectation( Kind.ERROR, 44 ), new DiagnosticExpectation( Kind.ERROR, 48 ), new DiagnosticExpectation( Kind.ERROR, 52 ), new DiagnosticExpectation( Kind.ERROR, 56 ) ); } @Test public void testValidPatternParameters() { File sourceFile = compilerHelper.getSourceFile( ValidPatternParameters.class ); boolean compilationResult = compilerHelper.compile( new ConstraintValidationProcessor(), diagnostics, sourceFile ); assertTrue( compilationResult ); assertThatDiagnosticsMatch( diagnostics ); } @Test public void testInvalidPatternParameters() { File sourceFile = compilerHelper.getSourceFile( InvalidPatternParameters.class ); boolean compilationResult = compilerHelper.compile( new ConstraintValidationProcessor(), diagnostics, sourceFile ); assertFalse( compilationResult ); assertThatDiagnosticsMatch( diagnostics, new DiagnosticExpectation( Kind.ERROR, 16 ), new DiagnosticExpectation( Kind.ERROR, 19 ), new DiagnosticExpectation( Kind.ERROR, 22 ), new DiagnosticExpectation( Kind.ERROR, 25 ), new DiagnosticExpectation( Kind.ERROR, 29 ), new DiagnosticExpectation( Kind.ERROR, 30 ), new DiagnosticExpectation( Kind.ERROR, 31 ), new DiagnosticExpectation( Kind.ERROR, 37 ), new DiagnosticExpectation( Kind.ERROR, 38 ), new DiagnosticExpectation( Kind.ERROR, 39 ), new DiagnosticExpectation( Kind.ERROR, 44 ) ); } @Test public void testValidDigitsParameters() { File sourceFile = compilerHelper.getSourceFile( ValidDigitsParameters.class ); boolean compilationResult = compilerHelper.compile( new ConstraintValidationProcessor(), diagnostics, sourceFile ); assertTrue( compilationResult ); assertThatDiagnosticsMatch( diagnostics ); } @Test public void testInvalidDigitsParameters() { File sourceFile = compilerHelper.getSourceFile( InvalidDigitsParameters.class ); boolean compilationResult = compilerHelper.compile( new ConstraintValidationProcessor(), diagnostics, sourceFile ); assertFalse( compilationResult ); assertThatDiagnosticsMatch( diagnostics, new DiagnosticExpectation( Kind.ERROR, 17 ), new DiagnosticExpectation( Kind.ERROR, 20 ), new DiagnosticExpectation( Kind.ERROR, 23 ), new DiagnosticExpectation( Kind.ERROR, 26 ), new DiagnosticExpectation( Kind.ERROR, 30 ), new DiagnosticExpectation( Kind.ERROR, 31 ), new DiagnosticExpectation( Kind.ERROR, 32 ), new DiagnosticExpectation( Kind.ERROR, 38 ), new DiagnosticExpectation( Kind.ERROR, 39 ), new DiagnosticExpectation( Kind.ERROR, 40 ), new DiagnosticExpectation( Kind.ERROR, 45 ) ); } @Test public void testValidDecimalMinMaxParameters() { File sourceFile = compilerHelper.getSourceFile( ValidDecimalMinMaxParameters.class ); boolean compilationResult = compilerHelper.compile( new ConstraintValidationProcessor(), diagnostics, sourceFile ); assertTrue( compilationResult ); assertThatDiagnosticsMatch( diagnostics ); } @Test public void testInvalidDecimalMinMaxParameters() { File sourceFile = compilerHelper.getSourceFile( InvalidDecimalMinMaxParameters.class ); boolean compilationResult = compilerHelper.compile( new ConstraintValidationProcessor(), diagnostics, sourceFile ); assertFalse( compilationResult ); assertThatDiagnosticsMatch( diagnostics, new DiagnosticExpectation( Kind.ERROR, 18 ), new DiagnosticExpectation( Kind.ERROR, 19 ), new DiagnosticExpectation( Kind.ERROR, 22 ), new DiagnosticExpectation( Kind.ERROR, 23 ), new DiagnosticExpectation( Kind.ERROR, 26 ), new DiagnosticExpectation( Kind.ERROR, 27 ), new DiagnosticExpectation( Kind.ERROR, 30 ), new DiagnosticExpectation( Kind.ERROR, 31 ), new DiagnosticExpectation( Kind.ERROR, 35 ), new DiagnosticExpectation( Kind.ERROR, 36 ), new DiagnosticExpectation( Kind.ERROR, 37 ), new DiagnosticExpectation( Kind.ERROR, 43 ), new DiagnosticExpectation( Kind.ERROR, 44 ), new DiagnosticExpectation( Kind.ERROR, 45 ), new DiagnosticExpectation( Kind.ERROR, 50 ) ); } @Test public void testValidGroupsParameter() { File sourceFile = compilerHelper.getSourceFile( ValidGroupsParameters.class ); boolean compilationResult = compilerHelper.compile( new ConstraintValidationProcessor(), diagnostics, sourceFile ); assertFalse( compilationResult ); assertThatDiagnosticsMatch( diagnostics, new DiagnosticExpectation( Kind.ERROR, 25 ), new DiagnosticExpectation( Kind.ERROR, 28 ), new DiagnosticExpectation( Kind.ERROR, 31 ), new DiagnosticExpectation( Kind.ERROR, 36 ), new DiagnosticExpectation( Kind.ERROR, 41 ), new DiagnosticExpectation( Kind.ERROR, 53 ) ); } @Test @TestForIssue(jiraKey = "HV-822") public void testValidMessageParameter() { File sourceFile = compilerHelper.getSourceFile( ValidMessageParameters.class ); boolean compilationResult = compilerHelper.compile( new ConstraintValidationProcessor(), diagnostics, sourceFile ); assertTrue( compilationResult ); assertThatDiagnosticsMatch( diagnostics, new DiagnosticExpectation( Kind.WARNING, 57 ), new DiagnosticExpectation( Kind.WARNING, 88 ), new DiagnosticExpectation( Kind.WARNING, 98 ), new DiagnosticExpectation( Kind.WARNING, 101 ), new DiagnosticExpectation( Kind.WARNING, 108 ), new DiagnosticExpectation( Kind.WARNING, 109 ), new DiagnosticExpectation( Kind.WARNING, 110 ), new DiagnosticExpectation( Kind.WARNING, 122 ) ); } }