/* * 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.internal.constraintvalidators.bv; import javax.validation.constraints.DecimalMax; import javax.validation.constraints.Max; import org.hibernate.validator.internal.constraintvalidators.bv.number.bound.AbstractMaxValidator; import org.hibernate.validator.internal.constraintvalidators.bv.number.bound.MaxValidatorForBigDecimal; import org.hibernate.validator.internal.constraintvalidators.bv.number.bound.MaxValidatorForBigInteger; import org.hibernate.validator.internal.constraintvalidators.bv.number.bound.MaxValidatorForDouble; import org.hibernate.validator.internal.constraintvalidators.bv.number.bound.MaxValidatorForFloat; import org.hibernate.validator.internal.constraintvalidators.bv.number.bound.MaxValidatorForLong; import org.hibernate.validator.internal.constraintvalidators.bv.number.bound.MaxValidatorForNumber; import org.hibernate.validator.internal.constraintvalidators.bv.number.bound.decimal.AbstractDecimalMaxValidator; import org.hibernate.validator.internal.constraintvalidators.bv.number.bound.decimal.DecimalMaxValidatorForBigDecimal; import org.hibernate.validator.internal.constraintvalidators.bv.number.bound.decimal.DecimalMaxValidatorForBigInteger; import org.hibernate.validator.internal.constraintvalidators.bv.number.bound.decimal.DecimalMaxValidatorForDouble; import org.hibernate.validator.internal.constraintvalidators.bv.number.bound.decimal.DecimalMaxValidatorForFloat; import org.hibernate.validator.internal.constraintvalidators.bv.number.bound.decimal.DecimalMaxValidatorForLong; import org.hibernate.validator.internal.constraintvalidators.bv.number.bound.decimal.DecimalMaxValidatorForNumber; import org.hibernate.validator.internal.util.annotationfactory.AnnotationDescriptor; import org.hibernate.validator.internal.util.annotationfactory.AnnotationFactory; import org.hibernate.validator.testutil.TestForIssue; import org.testng.annotations.Test; /** * @author Alaa Nassef * @author Hardy Ferentschik * @author Xavier Sosnovsky * @author Marko Bekhta */ public class MaxValidatorForNumberTest extends BaseMinMaxValidatorForNumberTest { @Test public void testIsValidMax() { AnnotationDescriptor<Max> descriptor = new AnnotationDescriptor<Max>( Max.class ); descriptor.setValue( "value", 15L ); descriptor.setValue( "message", "{validator.max}" ); Max m = AnnotationFactory.create( descriptor ); testMax( m, true ); } @Test public void testIsValidDecimalMax() { AnnotationDescriptor<DecimalMax> descriptor = new AnnotationDescriptor<DecimalMax>( DecimalMax.class ); descriptor.setValue( "value", "15.0E0" ); descriptor.setValue( "message", "{validator.max}" ); DecimalMax m = AnnotationFactory.create( descriptor ); testDecimalMax( m, true ); } @Test(expectedExceptions = IllegalArgumentException.class) public void testInitializeDecimalMaxWithInvalidValue() { AnnotationDescriptor<DecimalMax> descriptor = new AnnotationDescriptor<DecimalMax>( DecimalMax.class ); descriptor.setValue( "value", "foobar" ); descriptor.setValue( "message", "{validator.max}" ); DecimalMax m = AnnotationFactory.create( descriptor ); DecimalMaxValidatorForNumber constraint = new DecimalMaxValidatorForNumber(); constraint.initialize( m ); } @Test @TestForIssue(jiraKey = "HV-256") public void testIsValidDecimalMaxExclusive() { boolean inclusive = false; AnnotationDescriptor<DecimalMax> descriptor = new AnnotationDescriptor<DecimalMax>( DecimalMax.class ); descriptor.setValue( "value", "15.0E0" ); descriptor.setValue( "inclusive", inclusive ); descriptor.setValue( "message", "{validator.max}" ); DecimalMax m = AnnotationFactory.create( descriptor ); testDecimalMax( m, false ); } private void testDecimalMax(DecimalMax m, boolean inclusive) { AbstractDecimalMaxValidator constraint = new DecimalMaxValidatorForNumber(); constraint.initialize( m ); testNumberValidator( constraint, inclusive, true ); constraint = new DecimalMaxValidatorForBigDecimal(); constraint.initialize( m ); testValidatorBigDecimal( constraint, inclusive, true ); constraint = new DecimalMaxValidatorForBigInteger(); constraint.initialize( m ); testValidatorBigInteger( constraint, inclusive, true ); constraint = new DecimalMaxValidatorForLong(); constraint.initialize( m ); testValidatorLong( constraint, inclusive, true ); constraint = new DecimalMaxValidatorForFloat(); constraint.initialize( m ); testValidatorFloat( constraint, inclusive, true ); constraint = new DecimalMaxValidatorForDouble(); constraint.initialize( m ); testValidatorDouble( constraint, inclusive, true ); } private void testMax(Max m, boolean inclusive) { AbstractMaxValidator constraint = new MaxValidatorForNumber(); constraint.initialize( m ); testNumberValidator( constraint, inclusive, true ); constraint = new MaxValidatorForBigDecimal(); constraint.initialize( m ); testValidatorBigDecimal( constraint, inclusive, true ); constraint = new MaxValidatorForBigInteger(); constraint.initialize( m ); testValidatorBigInteger( constraint, inclusive, true ); constraint = new MaxValidatorForLong(); constraint.initialize( m ); testValidatorLong( constraint, inclusive, true ); constraint = new MaxValidatorForFloat(); constraint.initialize( m ); testValidatorFloat( constraint, inclusive, true ); constraint = new MaxValidatorForDouble(); constraint.initialize( m ); testValidatorDouble( constraint, inclusive, true ); } }