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 import org.junitpioneer.jupiter.DefaultLocale;
30
31
32
33
34 class PercentValidatorTest {
35
36 protected PercentValidator validator;
37 private Locale originalLocale;
38
39 @BeforeEach
40 protected void setUp() {
41 originalLocale = Locale.getDefault();
42 validator = new PercentValidator();
43 }
44
45
46
47
48 @AfterEach
49 protected void tearDown() {
50 Locale.setDefault(originalLocale);
51 validator = null;
52 }
53
54
55
56
57 @Test
58 void testFormatType() {
59 assertEquals(2, PercentValidator.getInstance().getFormatType(), "Format Type A");
60 assertEquals(AbstractNumberValidator.PERCENT_FORMAT, PercentValidator.getInstance().getFormatType(), "Format Type B");
61 }
62
63
64
65
66 @Test
67 void testInvalid() {
68 final BigDecimalValidator validator = PercentValidator.getInstance();
69
70
71 assertFalse(validator.isValid(null), "isValid() Null Value");
72 assertFalse(validator.isValid(""), "isValid() Empty Value");
73 assertNull(validator.validate(null), "validate() Null Value");
74 assertNull(validator.validate(""), "validate() Empty Value");
75
76
77 assertFalse(validator.isValid("12@", Locale.UK), "UK wrong symbol");
78 assertFalse(validator.isValid("(12%)", Locale.UK), "UK wrong negative");
79
80
81 assertFalse(validator.isValid("12@", Locale.US), "US wrong symbol");
82 assertFalse(validator.isValid("(12%)", Locale.US), "US wrong negative");
83 }
84
85
86
87
88 @Test
89 @DefaultLocale("en-GB")
90 void testValid() {
91 final BigDecimalValidator validator = PercentValidator.getInstance();
92 final BigDecimal expected = new BigDecimal("0.12");
93 final BigDecimal negative = new BigDecimal("-0.12");
94 final BigDecimal hundred = new BigDecimal("1.00");
95
96 assertEquals(expected, validator.validate("12%"), "Default locale");
97 assertEquals(negative, validator.validate("-12%"), "Default negative");
98
99
100 assertEquals(expected, validator.validate("12%", Locale.UK), "UK locale");
101 assertEquals(negative, validator.validate("-12%", Locale.UK), "UK negative");
102 assertEquals(expected, validator.validate("12", Locale.UK), "UK No symbol");
103
104
105 assertEquals(expected, validator.validate("12%", Locale.US), "US locale");
106 assertEquals(negative, validator.validate("-12%", Locale.US), "US negative");
107 assertEquals(expected, validator.validate("12", Locale.US), "US No symbol");
108
109 assertEquals(hundred, validator.validate("100%"), "100%");
110 }
111
112 }