001    /**
002     * Copyright 2005-2011 The Kuali Foundation
003     *
004     * Licensed under the Educational Community License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of the License at
007     *
008     * http://www.opensource.org/licenses/ecl2.php
009     *
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     * See the License for the specific language governing permissions and
014     * limitations under the License.
015     */
016    package org.kuali.rice.krad.datadictionary.validation.fieldlevel;
017    
018    import org.junit.Before;
019    import org.junit.Test;
020    import org.kuali.rice.kns.datadictionary.validation.fieldlevel.FixedPointValidationPattern;
021    import org.kuali.rice.krad.datadictionary.validation.ValidationPattern;
022    import org.kuali.rice.test.BaseRiceTestCase;
023    
024    import static org.junit.Assert.assertFalse;
025    import static org.junit.Assert.assertTrue;
026    
027    /**
028     * FixedPointValidationPatternTest tests {@link FixedPointValidationPattern}
029     *
030     * <p>Valid negative and positive fixed point numbers should match</p>
031     *
032     * @author Kuali Rice Team (rice.collab@kuali.org)
033     */
034    public class FixedPointValidationPatternTest extends BaseRiceTestCase {
035        // Unlike its superclass, FixedPointValidationPattern does not use Spring.
036        FixedPointValidationPattern pattern;
037    
038        @Before
039        public final void setUp() throws Exception {
040    
041            pattern = new FixedPointValidationPattern();
042            pattern.setPrecision(2);
043            pattern.setScale(1);
044        }
045    
046    
047        @Test public final void testDefaultAllows_empty() {
048            assertFalse(pattern.matches(""));
049        }
050    
051        @Test public final void testDefaultAllows_positive1() {
052            assertTrue(pattern.matches(".1"));
053        }
054    
055        @Test public final void testDefaultAllows_positive2() {
056            assertTrue(pattern.matches("0.1"));
057        }
058    
059        @Test public final void testDefaultAllows_positive3() {
060            assertTrue(pattern.matches("1.1"));
061        }
062    
063        @Test public final void testDefaultAllows_positive4() {
064            assertTrue(pattern.matches("1"));
065        }
066    
067        @Test public final void testDefaultAllows_positive5() {
068            assertTrue(pattern.matches("1.0"));
069        }
070    
071    
072        @Test public final void testDefaultAllows_negative1() {
073            assertFalse(pattern.matches("-.1"));
074        }
075    
076        @Test public final void testDefaultAllows_negative2() {
077            assertFalse(pattern.matches("-0.1"));
078        }
079    
080        @Test public final void testDefaultAllows_negative3() {
081            assertFalse(pattern.matches("-1.1"));
082        }
083    
084        @Test public final void testDefaultAllows_negative4() {
085            assertFalse(pattern.matches("-1"));
086        }
087    
088        @Test public final void testDefaultAllows_negative5() {
089            assertFalse(pattern.matches("-1.0"));
090        }
091    
092    
093        @Test public final void testDefaultAllows_invalid1() {
094            assertFalse(pattern.matches("-."));
095        }
096    
097        @Test public final void testDefaultAllows_invalid2() {
098            assertFalse(pattern.matches("1."));
099        }
100    
101        @Test public final void testDefaultAllows_invalid3() {
102            assertFalse(pattern.matches("-1."));
103        }
104    
105        @Test public final void testDefaultAllows_invalid4() {
106            assertFalse(pattern.matches("12."));
107        }
108    
109        @Test public final void testDefaultAllows_invalid5() {
110            assertFalse(pattern.matches("1245678901234567890123.23"));
111        }
112    
113        @Test public final void testDefaultAllows_invalid6() {
114            assertFalse(pattern.matches("123"));
115        }
116    
117        @Test public final void testAllowNegative_positive1() {
118            assertTrue(pattern.matches(".1"));
119        }
120    
121        @Test public final void testAllowNegative_positive2() {
122            pattern.setAllowNegative(true);
123    
124            assertTrue(pattern.matches("0.1"));
125        }
126    
127        @Test public final void testAllowNegative_positive3() {
128            pattern.setAllowNegative(true);
129    
130            assertTrue(pattern.matches("1.1"));
131        }
132    
133        @Test public final void testAllowNegative_positive4() {
134            pattern.setAllowNegative(true);
135    
136            assertTrue(pattern.matches("1"));
137        }
138    
139        @Test public final void testAllowNegative_positive5() {
140            pattern.setAllowNegative(true);
141    
142            assertTrue(pattern.matches("1.0"));
143        }
144    
145    
146        @Test public final void testAllowNegative_negative1() {
147            pattern.setAllowNegative(true);
148    
149            assertTrue(pattern.matches("-.1"));
150        }
151    
152        @Test public final void testAllowNegative_negative2() {
153            pattern.setAllowNegative(true);
154    
155            assertTrue(pattern.matches("-0.1"));
156        }
157    
158        @Test public final void testAllowNegative_negative3() {
159            pattern.setAllowNegative(true);
160    
161            assertTrue(pattern.matches("-1.1"));
162        }
163    
164        @Test public final void testAllowNegative_negative4() {
165            pattern.setAllowNegative(true);
166    
167            assertTrue(pattern.matches("-1"));
168        }
169    
170        @Test public final void testAllowNegative_negative5() {
171            pattern.setAllowNegative(true);
172    
173            assertTrue(pattern.matches("-1.0"));
174        }
175    
176    
177        @Test public final void testAllowNegative_invalid1() {
178            pattern.setAllowNegative(true);
179    
180            assertFalse(pattern.matches("-."));
181        }
182    
183        @Test public final void testAllowNegative_invalid2() {
184            pattern.setAllowNegative(true);
185    
186            assertFalse(pattern.matches("1."));
187        }
188    
189        @Test public final void testAllowNegative_invalid3() {
190            pattern.setAllowNegative(true);
191    
192            assertFalse(pattern.matches("-1."));
193        }
194    
195        @Test public final void testAllowNegative_invalid4() {
196            pattern.setAllowNegative(true);
197    
198            assertFalse(pattern.matches("-12."));
199        }
200    
201        @Test public final void testAllowNegative_invalid5() {
202            pattern.setAllowNegative(true);
203    
204            assertFalse(pattern.matches("-1.23"));
205        }
206    
207        @Test public final void testAllowNegative_invalid6() {
208            pattern.setAllowNegative(true);
209    
210            assertFalse(pattern.matches("123."));
211        }
212    
213        @Test public final void testAllowNegative_invalid7() {
214            pattern.setAllowNegative(true);
215    
216            assertFalse(pattern.matches(".123"));
217        }
218        
219        @Test(expected=ValidationPattern.ValidationPatternException.class)
220        public final void testZero_Percision_And_Scale_invalid8() {
221            //what happens when precision & scale are not set in DD
222            pattern.setPrecision(0);
223            pattern.setScale(0);
224            pattern.completeValidation();
225        }
226        
227        @Test(expected=ValidationPattern.ValidationPatternException.class)
228        public final void testPrecision_Less_Than_Scale_invalid9() {
229            pattern.setPrecision(1);
230            pattern.setScale(3);
231            pattern.completeValidation();
232        }
233        
234        @Test(expected=ValidationPattern.ValidationPatternException.class)
235        public final void testPrecision_And_Scale_Negative_invalid10() {
236            pattern.setPrecision(-3);
237            pattern.setScale(-1);
238            pattern.completeValidation();
239        }
240    
241    }