/
OptionalPrimitivesValueExtractorTest.java
97 lines (80 loc) · 2.76 KB
/
OptionalPrimitivesValueExtractorTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
/*
* 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.engine.valuehandling;
import static org.hibernate.validator.testutil.ConstraintViolationAssert.assertCorrectConstraintTypes;
import static org.hibernate.validator.testutil.ConstraintViolationAssert.assertNumberOfViolations;
import static org.hibernate.validator.testutil.ConstraintViolationAssert.assertThat;
import static org.hibernate.validator.testutil.ConstraintViolationAssert.pathWith;
import static org.hibernate.validator.testutils.ValidatorUtil.getValidator;
import java.util.OptionalDouble;
import java.util.OptionalInt;
import java.util.OptionalLong;
import java.util.Set;
import javax.validation.ConstraintViolation;
import javax.validation.Validator;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.Min;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
/**
* @author Guillaume Smet
*/
public class OptionalPrimitivesValueExtractorTest {
private Validator validator;
@BeforeClass
public void setup() {
validator = getValidator();
}
@Test
public void testOptionalInt() {
Set<ConstraintViolation<Foo>> constraintViolations = validator.validate( Foo.valid() );
assertNumberOfViolations( constraintViolations, 0 );
constraintViolations = validator.validate( Foo.empty() );
assertNumberOfViolations( constraintViolations, 0 );
constraintViolations = validator.validate( Foo.invalid() );
assertThat( constraintViolations ).containsOnlyPaths(
pathWith().property( "optionalInt" ),
pathWith().property( "optionalDouble" ),
pathWith().property( "optionalLong" )
);
assertCorrectConstraintTypes( constraintViolations, Min.class, DecimalMin.class, Min.class );
}
private static class Foo {
@Min(value = 5)
private final OptionalInt optionalInt;
@DecimalMin(value = "5")
private final OptionalDouble optionalDouble;
@Min(value = 16)
private final OptionalLong optionalLong;
private Foo(OptionalInt optionalInt, OptionalDouble optionalDouble, OptionalLong optionalLong) {
this.optionalInt = optionalInt;
this.optionalDouble = optionalDouble;
this.optionalLong = optionalLong;
}
private static Foo valid() {
return new Foo(
OptionalInt.of( 7 ),
OptionalDouble.of( 8D ),
OptionalLong.of( 19L )
);
}
private static Foo invalid() {
return new Foo(
OptionalInt.of( 3 ),
OptionalDouble.of( 2D ),
OptionalLong.of( 10L )
);
}
private static Foo empty() {
return new Foo(
OptionalInt.empty(),
OptionalDouble.empty(),
OptionalLong.empty()
);
}
}
}