Skip to content

Commit 3c80b5a

Browse files
marko-bekhtagsmet
authored andcommitted
HV-1701 Add a couple more test cases
- for number test add more number types to cover the logic of `compare(Number...)` and all ifs in it - For DecimalM?? constraints added a case with decimal fraction in constraint value. "integer" values should be already covered.
1 parent c92d43c commit 3c80b5a

File tree

3 files changed

+74
-0
lines changed

3 files changed

+74
-0
lines changed

engine/src/test/java/org/hibernate/validator/test/internal/constraintvalidators/bv/BaseMinMaxValidatorForNumberTest.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import java.lang.annotation.Annotation;
1414
import java.math.BigDecimal;
1515
import java.math.BigInteger;
16+
1617
import javax.validation.ConstraintValidator;
1718

1819
/**
@@ -39,6 +40,18 @@ protected <A extends Annotation> void testNumberValidator(ConstraintValidator<A,
3940
assertEquals( constraint.isValid( b, null ), isMax );
4041
assertEquals( constraint.isValid( 14.99, null ), isMax );
4142
assertEquals( constraint.isValid( -14.99, null ), isMax );
43+
assertEquals( constraint.isValid( 14.99F, null ), isMax );
44+
assertEquals( constraint.isValid( -14.99F, null ), isMax );
45+
assertEquals( constraint.isValid( 14, null ), isMax );
46+
assertEquals( constraint.isValid( 16, null ), !isMax );
47+
assertEquals( constraint.isValid( (short) 14, null ), isMax );
48+
assertEquals( constraint.isValid( (short) 16, null ), !isMax );
49+
assertEquals( constraint.isValid( BigInteger.valueOf( 14L ), null ), isMax );
50+
assertEquals( constraint.isValid( BigInteger.valueOf( 16L ), null ), !isMax );
51+
assertEquals( constraint.isValid( BigDecimal.valueOf( 14L ), null ), isMax );
52+
assertEquals( constraint.isValid( BigDecimal.valueOf( 16L ), null ), !isMax );
53+
assertEquals( constraint.isValid( new BigDecimal( "14.99" ), null ), isMax );
54+
assertEquals( constraint.isValid( new BigDecimal( "15.001" ), null ), !isMax );
4255
assertEquals( constraint.isValid( bWrapper, null ), !isMax );
4356
assertEquals( constraint.isValid( 20, null ), !isMax );
4457
}

engine/src/test/java/org/hibernate/validator/test/internal/constraintvalidators/bv/MaxValidatorForNumberTest.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,16 @@
66
*/
77
package org.hibernate.validator.test.internal.constraintvalidators.bv;
88

9+
import static org.hibernate.validator.testutil.ConstraintViolationAssert.assertNoViolations;
10+
import static org.hibernate.validator.testutil.ConstraintViolationAssert.assertThat;
11+
import static org.hibernate.validator.testutil.ConstraintViolationAssert.violationOf;
12+
import static org.hibernate.validator.testutils.ValidatorUtil.getValidator;
913
import static org.testng.Assert.assertFalse;
1014

1115
import java.math.BigDecimal;
1216
import java.math.BigInteger;
1317

18+
import javax.validation.Validator;
1419
import javax.validation.constraints.DecimalMax;
1520
import javax.validation.constraints.Max;
1621

@@ -36,6 +41,7 @@
3641
import org.hibernate.validator.internal.constraintvalidators.bv.number.bound.decimal.DecimalMaxValidatorForShort;
3742
import org.hibernate.validator.internal.util.annotation.ConstraintAnnotationDescriptor;
3843
import org.hibernate.validator.testutil.TestForIssue;
44+
3945
import org.testng.annotations.Test;
4046

4147
/**
@@ -66,6 +72,29 @@ public void testIsValidDecimalMax() {
6672
testDecimalMax( m, true );
6773
}
6874

75+
@Test
76+
public void testIsValidDecimalMaxWithDecimalFractionInConstraint() {
77+
class Foo {
78+
@DecimalMax("15.0001")
79+
private final Number num;
80+
81+
Foo(final Number num) {
82+
this.num = num;
83+
}
84+
}
85+
86+
Validator validator = getValidator();
87+
88+
assertThat( validator.validate( new Foo( 16 ) ) ).containsOnlyViolations( violationOf( DecimalMax.class ) );
89+
assertNoViolations( validator.validate( new Foo( 15 ) ) );
90+
91+
assertThat( validator.validate( new Foo( 15.01 ) ) ).containsOnlyViolations( violationOf( DecimalMax.class ) );
92+
assertNoViolations( validator.validate( new Foo( 15.00001 ) ) );
93+
94+
assertThat( validator.validate( new Foo( BigDecimal.valueOf( 15.01 ) ) ) ).containsOnlyViolations( violationOf( DecimalMax.class ) );
95+
assertNoViolations( validator.validate( new Foo( BigDecimal.valueOf( 15.00001 ) ) ) );
96+
}
97+
6998
@Test
7099
public void testIsValidDecimalMax1() {
71100
ConstraintAnnotationDescriptor.Builder<DecimalMax> descriptorBuilder = new ConstraintAnnotationDescriptor.Builder<>( DecimalMax.class );

engine/src/test/java/org/hibernate/validator/test/internal/constraintvalidators/bv/MinValidatorForNumberTest.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,14 @@
66
*/
77
package org.hibernate.validator.test.internal.constraintvalidators.bv;
88

9+
import static org.hibernate.validator.testutil.ConstraintViolationAssert.assertNoViolations;
10+
import static org.hibernate.validator.testutil.ConstraintViolationAssert.assertThat;
11+
import static org.hibernate.validator.testutil.ConstraintViolationAssert.violationOf;
12+
import static org.hibernate.validator.testutils.ValidatorUtil.getValidator;
13+
14+
import java.math.BigDecimal;
15+
16+
import javax.validation.Validator;
917
import javax.validation.constraints.DecimalMin;
1018
import javax.validation.constraints.Min;
1119

@@ -31,6 +39,7 @@
3139
import org.hibernate.validator.internal.constraintvalidators.bv.number.bound.decimal.DecimalMinValidatorForShort;
3240
import org.hibernate.validator.internal.util.annotation.ConstraintAnnotationDescriptor;
3341
import org.hibernate.validator.testutil.TestForIssue;
42+
3443
import org.testng.annotations.Test;
3544

3645
/**
@@ -61,6 +70,29 @@ public void testIsValidDecimalMinValidator() {
6170
testDecimalMin( m, true );
6271
}
6372

73+
@Test
74+
public void testIsValidDecimalMinWithDecimalFractionInConstraint() {
75+
class Foo {
76+
@DecimalMin("15.0001")
77+
private final Number num;
78+
79+
Foo(final Number num) {
80+
this.num = num;
81+
}
82+
}
83+
84+
Validator validator = getValidator();
85+
86+
assertThat( validator.validate( new Foo( 15 ) ) ).containsOnlyViolations( violationOf( DecimalMin.class ) );
87+
assertNoViolations( validator.validate( new Foo( 16 ) ) );
88+
89+
assertThat( validator.validate( new Foo( 15.00001 ) ) ).containsOnlyViolations( violationOf( DecimalMin.class ) );
90+
assertNoViolations( validator.validate( new Foo( 15.01 ) ) );
91+
92+
assertThat( validator.validate( new Foo( BigDecimal.valueOf( 15.00001 ) ) ) ).containsOnlyViolations( violationOf( DecimalMin.class ) );
93+
assertNoViolations( validator.validate( new Foo( BigDecimal.valueOf( 15.01 ) ) ) );
94+
}
95+
6496
@Test(expectedExceptions = IllegalArgumentException.class)
6597
public void testInitializeDecimalMinWithInvalidValue() {
6698
ConstraintAnnotationDescriptor.Builder<DecimalMin> descriptorBuilder = new ConstraintAnnotationDescriptor.Builder<>( DecimalMin.class );

0 commit comments

Comments
 (0)