/* * 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.test.constraints.boolcomposition.localconstrval; import java.util.Set; import javax.validation.ConstraintViolation; import javax.validation.Validator; import javax.validation.constraints.Pattern; import org.hibernate.validator.testutils.ValidatorUtil; import org.testng.annotations.Test; import static org.hibernate.validator.testutil.ConstraintViolationAssert.assertCorrectConstraintTypes; import static org.hibernate.validator.testutil.ConstraintViolationAssert.assertCorrectPropertyPaths; import static org.hibernate.validator.testutil.ConstraintViolationAssert.assertNumberOfViolations; /** * @author Federico Mancini * @author Dag Hovland */ public class LocalConstrValTest { /** * HV-390 * Used to test whether boolean composition works with local ConstraintValidators */ @Test public void testCorrectBooleanEvaluation() { Validator currentValidator = ValidatorUtil.getValidator(); //nothing should fail, the pattern matches on name Set<ConstraintViolation<Person>> constraintViolations = currentValidator.validate( new Person( "6chars", "WWWW" ) ); assertNumberOfViolations( constraintViolations, 0 ); //nickname is too long constraintViolations = currentValidator.validate( new Person( "12characters", "loongstring" ) ); assertNumberOfViolations( constraintViolations, 1 ); assertCorrectConstraintTypes( constraintViolations, SmallString.class ); assertCorrectPropertyPaths( constraintViolations, "nickName" ); //nickName fails for violating @Size, but is reported as SingleViolation //name fails for violating both Pattern and the test in LongStringValidator. In a way it is reported //both as single violation and as multiple violations (weird). constraintViolations = currentValidator.validate( new Person( "exactlyTEN", "tinystr" ) ); assertNumberOfViolations( constraintViolations, 3 ); assertCorrectConstraintTypes( constraintViolations, SmallString.class, Pattern.class, PatternOrLong.class ); assertCorrectPropertyPaths( constraintViolations, "nickName", "name", "name" ); } }