1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.validator.routines;
18
19 import static org.junit.jupiter.api.Assertions.assertEquals;
20 import static org.junit.jupiter.api.Assertions.assertFalse;
21 import static org.junit.jupiter.api.Assertions.assertNull;
22
23 import java.math.BigDecimal;
24 import java.util.Locale;
25
26 import org.junit.jupiter.api.AfterEach;
27 import org.junit.jupiter.api.BeforeEach;
28 import org.junit.jupiter.api.Test;
29
30
31
32
33 public class PercentValidatorTest {
34
35 protected PercentValidator validator;
36
37 @BeforeEach
38 protected void setUp() {
39 validator = new PercentValidator();
40 }
41
42
43
44
45 @AfterEach
46 protected void tearDown() {
47 validator = null;
48 }
49
50
51
52
53 @Test
54 public void testFormatType() {
55 assertEquals(2, PercentValidator.getInstance().getFormatType(), "Format Type A");
56 assertEquals(AbstractNumberValidator.PERCENT_FORMAT, PercentValidator.getInstance().getFormatType(), "Format Type B");
57 }
58
59
60
61
62 @Test
63 public void testInvalid() {
64 final BigDecimalValidator validator = PercentValidator.getInstance();
65
66
67 assertFalse(validator.isValid(null), "isValid() Null Value");
68 assertFalse(validator.isValid(""), "isValid() Empty Value");
69 assertNull(validator.validate(null), "validate() Null Value");
70 assertNull(validator.validate(""), "validate() Empty Value");
71
72
73 assertFalse(validator.isValid("12@", Locale.UK), "UK wrong symbol");
74 assertFalse(validator.isValid("(12%)", Locale.UK), "UK wrong negative");
75
76
77 assertFalse(validator.isValid("12@", Locale.US), "US wrong symbol");
78 assertFalse(validator.isValid("(12%)", Locale.US), "US wrong negative");
79 }
80
81
82
83
84 @Test
85 public void testValid() {
86
87 final Locale origDefault = Locale.getDefault();
88 Locale.setDefault(Locale.UK);
89
90 final BigDecimalValidator validator = PercentValidator.getInstance();
91 final BigDecimal expected = new BigDecimal("0.12");
92 final BigDecimal negative = new BigDecimal("-0.12");
93 final BigDecimal hundred = new BigDecimal("1.00");
94
95 assertEquals(expected, validator.validate("12%"), "Default locale");
96 assertEquals(negative, validator.validate("-12%"), "Default negtve");
97
98
99 assertEquals(expected, validator.validate("12%", Locale.UK), "UK locale");
100 assertEquals(negative, validator.validate("-12%", Locale.UK), "UK negative");
101 assertEquals(expected, validator.validate("12", Locale.UK), "UK No symbol");
102
103
104 assertEquals(expected, validator.validate("12%", Locale.US), "US locale");
105 assertEquals(negative, validator.validate("-12%", Locale.US), "US negative");
106 assertEquals(expected, validator.validate("12", Locale.US), "US No symbol");
107
108 assertEquals(hundred, validator.validate("100%"), "100%");
109
110
111 Locale.setDefault(origDefault);
112 }
113
114 }