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 junit.framework.TestCase;
20
21 import java.util.Locale;
22 import java.math.BigDecimal;
23 /***
24 * Test Case for PercentValidator.
25 *
26 * @version $Revision: 478334 $ $Date: 2006-11-22 21:31:54 +0000 (Wed, 22 Nov 2006) $
27 */
28 public class PercentValidatorTest extends TestCase {
29
30 protected PercentValidator validator;
31
32 /***
33 * Main
34 * @param args arguments
35 */
36 public static void main(String[] args) {
37 junit.textui.TestRunner.run(PercentValidatorTest.class);
38 }
39
40 /***
41 * Constructor
42 * @param name test name
43 */
44 public PercentValidatorTest(String name) {
45 super(name);
46 }
47
48 protected void setUp() throws Exception {
49 super.setUp();
50 validator = new PercentValidator();
51 }
52
53 /***
54 * Tear down
55 * @throws Exception
56 */
57 protected void tearDown() throws Exception {
58 super.tearDown();
59 validator = null;
60 }
61
62 /***
63 * Test Format Type
64 */
65 public void testFormatType() {
66 assertEquals("Format Type A", 2, PercentValidator.getInstance().getFormatType());
67 assertEquals("Format Type B", PercentValidator.PERCENT_FORMAT, PercentValidator.getInstance().getFormatType());
68 }
69
70 /***
71 * Test Valid percentage values
72 */
73 public void testValid() {
74
75 Locale origDefault = Locale.getDefault();
76 Locale.setDefault(Locale.UK);
77
78 BigDecimalValidator validator = PercentValidator.getInstance();
79 BigDecimal expected = new BigDecimal("0.12");
80 BigDecimal negative = new BigDecimal("-0.12");
81 BigDecimal hundred = new BigDecimal("1.00");
82
83 assertEquals("Default locale", expected, validator.validate("12%"));
84 assertEquals("Default negtve", negative, validator.validate("-12%"));
85
86
87 assertEquals("UK locale", expected, validator.validate("12%", Locale.UK));
88 assertEquals("UK negative", negative, validator.validate("-12%", Locale.UK));
89 assertEquals("UK No symbol", expected, validator.validate("12", Locale.UK));
90
91
92 assertEquals("US locale", expected, validator.validate("12%", Locale.US));
93 assertEquals("US negative", negative, validator.validate("-12%", Locale.US));
94 assertEquals("US No symbol", expected, validator.validate("12", Locale.US));
95
96 assertEquals("100%", hundred, validator.validate("100%"));
97
98
99 Locale.setDefault(origDefault);
100 }
101
102 /***
103 * Test Invalid percentage values
104 */
105 public void testInvalid() {
106 BigDecimalValidator validator = PercentValidator.getInstance();
107
108
109 assertFalse("isValid() Null Value", validator.isValid(null));
110 assertFalse("isValid() Empty Value", validator.isValid(""));
111 assertNull("validate() Null Value", validator.validate(null));
112 assertNull("validate() Empty Value", validator.validate(""));
113
114
115 assertFalse("UK wrong symbol", validator.isValid("12@", Locale.UK));
116 assertFalse("UK wrong negative", validator.isValid("(12%)", Locale.UK));
117
118
119 assertFalse("US wrong symbol", validator.isValid("12@", Locale.US));
120 assertFalse("US wrong negative", validator.isValid("(12%)", Locale.US));
121 }
122
123 }