Skip to content

Commit 90553da

Browse files
authored
Merge pull request #37 from avaje/feature/tests-double-minMax
Add tests for DecimalMax DecimalMin with double values
2 parents 2c0f12b + e8509e0 commit 90553da

File tree

4 files changed

+111
-12
lines changed

4 files changed

+111
-12
lines changed

blackbox-test/src/test/java/example/jakarta/JMyMinNumbers.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,32 @@
1010
@Valid
1111
public class JMyMinNumbers {
1212

13+
private static final BigDecimal VALID = new BigDecimal("20");
14+
1315
@DecimalMin("10.50")
1416
final BigDecimal price;
1517

1618
@DecimalMin(value = "9.30", inclusive = false)
1719
final BigDecimal priceInc;
1820

21+
@DecimalMin("9.50")
22+
final double dmin;
23+
24+
@DecimalMin(value = "8.30", inclusive = false)
25+
final double dminInc;
26+
1927
public JMyMinNumbers(BigDecimal price, BigDecimal priceInc) {
2028
this.price = price;
2129
this.priceInc = priceInc;
30+
this.dmin = 20;
31+
this.dminInc = 20;
32+
}
33+
34+
public JMyMinNumbers(double dmin, double dminInc) {
35+
this.price = VALID;
36+
this.priceInc = VALID;
37+
this.dmin = dmin;
38+
this.dminInc = dminInc;
2239
}
2340

2441
public BigDecimal price() {
@@ -29,4 +46,12 @@ public BigDecimal priceInc() {
2946
return priceInc;
3047
}
3148

49+
50+
public double dmin() {
51+
return dmin;
52+
}
53+
54+
public double dminInc() {
55+
return dminInc;
56+
}
3257
}

blackbox-test/src/test/java/example/jakarta/JMyMinNumbersTest.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,12 @@ void valid() {
2525
validator.validate(bean);
2626
}
2727

28+
@Test
29+
void validDouble() {
30+
var bean = new JMyMinNumbers(20d, 20d);
31+
validator.validate(bean);
32+
}
33+
2834
@Test
2935
void decimalMin() {
3036
var violation = one(new JMyMinNumbers(ONE, valid));
@@ -49,6 +55,30 @@ void decimalMaxExclusiveDE() {
4955
assertThat(violation.message()).isEqualTo("muss größer 9.30 sein");
5056
}
5157

58+
@Test
59+
void doubleDecimalMin() {
60+
var violation = one(new JMyMinNumbers(1d, 20d));
61+
assertThat(violation.message()).isEqualTo("must be greater than or equal to 9.50");
62+
}
63+
64+
@Test
65+
void doubleDecimalMinDE() {
66+
var violation = one(new JMyMinNumbers(1d, 20d), Locale.GERMAN);
67+
assertThat(violation.message()).isEqualTo("muss größer oder gleich 9.50 sein");
68+
}
69+
70+
@Test
71+
void doubleDecimalMinExclusive() {
72+
var violation = one(new JMyMinNumbers(20d, 1d));
73+
assertThat(violation.message()).isEqualTo("must be greater than 8.30");
74+
}
75+
76+
@Test
77+
void doubleDecimalMaxExclusiveDE() {
78+
var violation = one(new JMyMinNumbers(20d, 1d), Locale.GERMAN);
79+
assertThat(violation.message()).isEqualTo("muss größer 8.30 sein");
80+
}
81+
5282
ConstraintViolation one(Object any) {
5383
return one(any, Locale.ENGLISH);
5484
}

blackbox-test/src/test/java/example/jakarta/JMyNumbers.java

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import jakarta.validation.Valid;
44
import jakarta.validation.constraints.DecimalMax;
5-
import jakarta.validation.constraints.Digits;
65

76
import java.math.BigDecimal;
87

@@ -15,13 +14,24 @@ public class JMyNumbers {
1514
@DecimalMax(value = "9.30", inclusive = false)
1615
final BigDecimal priceInc;
1716

18-
@Digits(integer = 5, fraction = 3)
19-
final String someDigits;
17+
@DecimalMax("9.50")
18+
final double dprice;
2019

21-
public JMyNumbers(BigDecimal price, BigDecimal priceInc, String someDigits) {
20+
@DecimalMax(value = "8.30", inclusive = false)
21+
final double dpriceInc;
22+
23+
public JMyNumbers(BigDecimal price, BigDecimal priceInc) {
2224
this.price = price;
2325
this.priceInc = priceInc;
24-
this.someDigits = someDigits;
26+
this.dprice = 1d;
27+
this.dpriceInc = 1d;
28+
}
29+
30+
public JMyNumbers(double dprice, double dpriceInc) {
31+
this.price = BigDecimal.ONE;
32+
this.priceInc = BigDecimal.ONE;
33+
this.dprice = dprice;
34+
this.dpriceInc = dpriceInc;
2535
}
2636

2737
public BigDecimal price() {
@@ -32,7 +42,11 @@ public BigDecimal priceInc() {
3242
return priceInc;
3343
}
3444

35-
public String someDigits() {
36-
return someDigits;
45+
public double dprice() {
46+
return dprice;
47+
}
48+
49+
public double dpriceInc() {
50+
return dpriceInc;
3751
}
3852
}

blackbox-test/src/test/java/example/jakarta/JMyNumbersTest.java

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,34 +19,64 @@ class JMyNumbersTest {
1919

2020
@Test
2121
void valid() {
22-
var bean = new JMyNumbers(ONE, ONE, "12345.123");
22+
var bean = new JMyNumbers(ONE, ONE);
23+
validator.validate(bean);
24+
}
25+
26+
@Test
27+
void validDouble() {
28+
var bean = new JMyNumbers(1d, 1d);
2329
validator.validate(bean);
2430
}
2531

2632
@Test
2733
void decimalMax() {
28-
var violation = one(new JMyNumbers(new BigDecimal("11"), ONE, "12345.123"));
34+
var violation = one(new JMyNumbers(new BigDecimal("11"), ONE));
2935
assertThat(violation.message()).isEqualTo("must be less than or equal to 10.50");
3036
}
3137

3238
@Test
3339
void decimalMaxDE() {
34-
var violation = one(new JMyNumbers(new BigDecimal("11"), ONE, "12345.123"), Locale.GERMAN);
40+
var violation = one(new JMyNumbers(new BigDecimal("11"), ONE), Locale.GERMAN);
3541
assertThat(violation.message()).isEqualTo("muss kleiner oder gleich 10.50 sein");
3642
}
3743

3844
@Test
3945
void decimalMaxExclusive() {
40-
var violation = one(new JMyNumbers(ONE, new BigDecimal("11"), "12345.123"));
46+
var violation = one(new JMyNumbers(ONE, new BigDecimal("11")));
4147
assertThat(violation.message()).isEqualTo("must be less than 9.30");
4248
}
4349

4450
@Test
4551
void decimalMaxExclusiveDE() {
46-
var violation = one(new JMyNumbers(ONE, new BigDecimal("11"), "12345.123"), Locale.GERMAN);
52+
var violation = one(new JMyNumbers(ONE, new BigDecimal("11")), Locale.GERMAN);
4753
assertThat(violation.message()).isEqualTo("muss kleiner 9.30 sein");
4854
}
4955

56+
@Test
57+
void doubleDecimalMax() {
58+
var violation = one(new JMyNumbers(11d, 1d));
59+
assertThat(violation.message()).isEqualTo("must be less than or equal to 9.50");
60+
}
61+
62+
@Test
63+
void doubleDecimalMaxDE() {
64+
var violation = one(new JMyNumbers(11d, 1d), Locale.GERMAN);
65+
assertThat(violation.message()).isEqualTo("muss kleiner oder gleich 9.50 sein");
66+
}
67+
68+
@Test
69+
void doubleDecimalMaxExclusive() {
70+
var violation = one(new JMyNumbers(1d, 11d));
71+
assertThat(violation.message()).isEqualTo("must be less than 8.30");
72+
}
73+
74+
@Test
75+
void doubleDecimalMaxExclusiveDE() {
76+
var violation = one(new JMyNumbers(1d, 11d), Locale.GERMAN);
77+
assertThat(violation.message()).isEqualTo("muss kleiner 8.30 sein");
78+
}
79+
5080
ConstraintViolation one(Object any) {
5181
return one(any, Locale.ENGLISH);
5282
}

0 commit comments

Comments
 (0)