소스 검색

Optional validator should pass null through to inner validator.

Change-Id: I9b8ad2dca5d93dae3c656c5334ff916604d8c826
Reviewed-on: http://gerrit.dmdirc.com/2635
Reviewed-by: Chris Smith <chris@dmdirc.com>
Automatic-Compile: DMDirc Build Manager
changes/51/2651/1
Greg Holmes 10 년 전
부모
커밋
b4e4ee1a30
2개의 변경된 파일18개의 추가작업 그리고 7개의 파일을 삭제
  1. 10
    4
      src/com/dmdirc/util/validators/OptionalValidator.java
  2. 8
    3
      test/com/dmdirc/util/validators/OptionalValidatorTest.java

+ 10
- 4
src/com/dmdirc/util/validators/OptionalValidator.java 파일 보기

19
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
  * SOFTWARE.
20
  * SOFTWARE.
21
  */
21
  */
22
-
23
 package com.dmdirc.util.validators;
22
 package com.dmdirc.util.validators;
24
 
23
 
25
 /**
24
 /**
27
  */
26
  */
28
 public class OptionalValidator implements Validator<String> {
27
 public class OptionalValidator implements Validator<String> {
29
 
28
 
30
-    /** The minimum value for this number. */
29
+    /**
30
+     * The validator to validate the optional setting.
31
+     */
31
     protected final Validator<String> validator;
32
     protected final Validator<String> validator;
32
 
33
 
33
     /**
34
     /**
48
         return validator;
49
         return validator;
49
     }
50
     }
50
 
51
 
51
-    /** {@inheritDoc} */
52
+    /**
53
+     * {@inheritDoc}
54
+     */
52
     @Override
55
     @Override
53
     public ValidationResponse validate(final String object) {
56
     public ValidationResponse validate(final String object) {
57
+        if (object == null) {
58
+            return validator.validate(object);
59
+        }
60
+
54
         final int colonIndex = object.indexOf(':');
61
         final int colonIndex = object.indexOf(':');
55
 
62
 
56
         if (colonIndex == -1) {
63
         if (colonIndex == -1) {
65
 
72
 
66
         return validator.validate(object);
73
         return validator.validate(object);
67
     }
74
     }
68
-
69
 }
75
 }

+ 8
- 3
test/com/dmdirc/util/validators/OptionalValidatorTest.java 파일 보기

19
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
  * SOFTWARE.
20
  * SOFTWARE.
21
  */
21
  */
22
-
23
 package com.dmdirc.util.validators;
22
 package com.dmdirc.util.validators;
24
 
23
 
25
 import org.junit.Test;
24
 import org.junit.Test;
35
         assertEquals(validator, instance.getValidator());
34
         assertEquals(validator, instance.getValidator());
36
     }
35
     }
37
 
36
 
37
+    @Test
38
+    public void testNullValue() {
39
+        final Validator<String> validator = new NotEmptyValidator();
40
+        final OptionalValidator instance = new OptionalValidator(validator);
41
+        assertTrue(instance.validate(null).isFailure());
42
+    }
43
+
38
     @Test
44
     @Test
39
     public void testNoSeparator() {
45
     public void testNoSeparator() {
40
         final ValidationResponse res = new OptionalValidator(new StringLengthValidator(0, 3))
46
         final ValidationResponse res = new OptionalValidator(new StringLengthValidator(0, 3))
63
         assertTrue(res.isFailure());
69
         assertTrue(res.isFailure());
64
         assertTrue(res.getFailureReason().contains("at most 2"));
70
         assertTrue(res.getFailureReason().contains("at most 2"));
65
     }
71
     }
66
-
67
-}
72
+}

Loading…
취소
저장