Author: niallp
Date: Tue Dec 12 09:02:56 2006
New Revision: 486233

URL: http://svn.apache.org/viewvc?view=rev&rev=486233
Log:
VALIDATOR-215 - add new generic code validator 

Added:
    
jakarta/commons/proper/validator/trunk/src/share/org/apache/commons/validator/routines/CodeValidator.java
   (with props)
    
jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/routines/CodeValidatorTest.java
   (with props)
Modified:
    jakarta/commons/proper/validator/trunk/xdocs/changes.xml

Added: 
jakarta/commons/proper/validator/trunk/src/share/org/apache/commons/validator/routines/CodeValidator.java
URL: 
http://svn.apache.org/viewvc/jakarta/commons/proper/validator/trunk/src/share/org/apache/commons/validator/routines/CodeValidator.java?view=auto&rev=486233
==============================================================================
--- 
jakarta/commons/proper/validator/trunk/src/share/org/apache/commons/validator/routines/CodeValidator.java
 (added)
+++ 
jakarta/commons/proper/validator/trunk/src/share/org/apache/commons/validator/routines/CodeValidator.java
 Tue Dec 12 09:02:56 2006
@@ -0,0 +1,328 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.validator.routines;
+
+import java.io.Serializable;
+
+import org.apache.commons.validator.routines.checkdigit.CheckDigit;
+
+/**
+ * Generic <b>Code Validation</b> providing format, minimum/maximum
+ * length and [EMAIL PROTECTED] CheckDigit} validations.
+ * <p>
+ * Performs the following validations on a code:
+ * <ul>
+ *   <li>Check the <i>format</i> of the code using a <i>regular 
expression.</i> (if specified)</li>
+ *   <li>Check the <i>minimum</i> and <i>maximum</i> length  (if specified) of 
the <i>parsed</i> code
+ *      (i.e. parsed by the <i>regular expression</i>).</li>
+ *   <li>Performs [EMAIL PROTECTED] CheckDigit} validation on the parsed code 
(if specified).</li>
+ * </ul>
+ * <p>
+ * Configure the validator with the appropriate regular expression, 
minimum/maximum length
+ * and [EMAIL PROTECTED] CheckDigit} validator and then call one of the two 
validation
+ * methods provided:</p>
+ *    <ul>
+ *       <li><code>boolean isValid(code)</code></li>
+ *       <li><code>String validate(code)</code></li>
+ *    </ul>
+ * <p>
+ * Codes often include <i>format</i> characters - such as hyphens - to make 
them
+ * more easily human readable. These can be removed prior to length and check 
digit
+ * validation by  specifying them as a <i>non-capturing</i> group in the 
regular
+ * expression (i.e. use the <code>(?:   )</code> notation).
+ *
+ * @version $Revision$ $Date$
+ * @since Validator 1.4
+ */
+public final class CodeValidator implements Serializable {
+
+    private RegexValidator regexValidator;
+    private int minLength = -1;
+    private int maxLength = -1;
+    private CheckDigit checkdigit;
+
+    /**
+     * Default Constructor.
+     */
+    public CodeValidator() {
+    }
+
+    /**
+     * Construct a code validator with a specified regular
+     * expression and [EMAIL PROTECTED] CheckDigit}.
+     *
+     * @param regex The format regular expression
+     * @param checkdigit The check digit validation routine
+     */
+    public CodeValidator(String regex, CheckDigit checkdigit) {
+        this(regex, -1, -1, checkdigit);
+    }
+
+    /**
+     * Construct a code validator with a specified regular
+     * expression, length and [EMAIL PROTECTED] CheckDigit}.
+     *
+     * @param regex The format regular expression.
+     * @param length The length of the code
+     *  (sets the mimimum/maximum to the same)
+     * @param checkdigit The check digit validation routine
+     */
+    public CodeValidator(String regex, int length, CheckDigit checkdigit) {
+        this(regex, length, length, checkdigit);
+    }
+
+    /**
+     * Construct a code validator with a specified regular
+     * expression, minimum/maximum length and [EMAIL PROTECTED] CheckDigit} 
validation.
+     *
+     * @param regex The regular expression validator
+     * @param minLength The minimum length of the code
+     * @param maxLength The maximum length of the code
+     * @param checkdigit The check digit validation routine
+     */
+    public CodeValidator(String regex, int minLength, int maxLength,
+            CheckDigit checkdigit) {
+        setRegex(regex);
+        setMinLength(minLength);
+        setMaxLength(maxLength);
+        setCheckDigit(checkdigit);
+    }
+
+    /**
+     * Construct a code validator with a specified regular expression,
+     * validator and [EMAIL PROTECTED] CheckDigit} validation.
+     *
+     * @param regexValidator The format regular expression validator
+     * @param checkdigit The check digit validation routine.
+     */
+    public CodeValidator(RegexValidator regexValidator, CheckDigit checkdigit) 
{
+        this(regexValidator, -1, -1, checkdigit);
+    }
+
+    /**
+     * Construct a code validator with a specified regular expression,
+     * validator, length and [EMAIL PROTECTED] CheckDigit} validation.
+     *
+     * @param regexValidator The format regular expression validator
+     * @param length The length of the code
+     *  (sets the mimimum/maximum to the same value)
+     * @param checkdigit The check digit validation routine
+     */
+    public CodeValidator(RegexValidator regexValidator, int length, CheckDigit 
checkdigit) {
+        this(regexValidator, length, length, checkdigit);
+    }
+
+    /**
+     * Construct a code validator with a specified regular expression
+     * validator, minimum/maximum length and [EMAIL PROTECTED] CheckDigit} 
validation.
+     *
+     * @param regexValidator The format regular expression validator
+     * @param minLength The minimum length of the code
+     * @param maxLength The maximum length of the code
+     * @param checkdigit The check digit validation routine
+     */
+    public CodeValidator(RegexValidator regexValidator, int minLength, int 
maxLength,
+            CheckDigit checkdigit) {
+        setRegexValidator(regexValidator);
+        setMinLength(minLength);
+        setMaxLength(maxLength);
+        setCheckDigit(checkdigit);
+    }
+
+    /**
+     * Return the check digit validation routine.
+     * <p>
+     * <b>N.B.</b> Optional, if not set no Check Digit
+     * validation will be performed on the code.
+     *
+     * @return The check digit validation routine
+     */
+    public CheckDigit getCheckDigit() {
+        return checkdigit;
+    }
+
+    /**
+     * Set the check digit validation routine.
+     * <p>
+     * <b>N.B.</b> Optional, if not set no Check Digit
+     * validation will be performed on the code.
+     *
+     * @param checkdigit The check digit validation routine
+     */
+    public void setCheckDigit(CheckDigit checkdigit) {
+        this.checkdigit = checkdigit;
+    }
+
+    /**
+     * Convenience method that sets the minimum and
+     * maximum length to the same value.
+     *
+     * @param length The length of the code
+     */
+    public void setLength(int length) {
+        setMinLength(length);
+        setMaxLength(length);
+    }
+
+    /**
+     * Return the minimum length of the code.
+     * <p>
+     * <b>N.B.</b> Optional, if less than zero the
+     * minimum length will not be checked.
+     *
+     * @return The minimum length of the code or
+     * <code>-1</code> if the code has no minimum length
+     */
+    public int getMinLength() {
+        return minLength;
+    }
+
+    /**
+     * Set the minimum length of the code.
+     * <p>
+     * <b>N.B.</b> Optional, if less than zero the
+     * minimum length will not be checked.
+     *
+     * @param minLength The minimum length of the code or
+     * <code>-1</code> if the code has no minimum length
+     */
+    public void setMinLength(int minLength) {
+        this.minLength = minLength;
+    }
+
+    /**
+     * Return the maximum length of the code.
+     * <p>
+     * <b>N.B.</b> Optional, if less than zero the
+     * maximum length will not be checked.
+     *
+     * @return The maximum length of the code or
+     * <code>-1</code> if the code has no maximum length
+     */
+    public int getMaxLength() {
+        return maxLength;
+    }
+
+    /**
+     * Set the maximum length of the code.
+     * <p>
+     * <b>N.B.</b> Optional, if less than zero the
+     * maximum length will not be checked.
+     *
+     * @param maxLength The maximum length of the code or
+     * <code>-1</code> if the code has no maximum length
+     */
+    public void setMaxLength(int maxLength) {
+        this.maxLength = maxLength;
+    }
+
+    /**
+     * Return the <i>regular expression</i> validator.
+     * <p>
+     * <b>N.B.</b> Optional, if not set no regular
+     * expression validation will be performed on the code.
+     *
+     * @return The regular expression validator
+     */
+    public RegexValidator getRegexValidator() {
+        return regexValidator;
+    }
+
+    /**
+     * Set the <i>regular expression</i> used to validate
+     * the <i>format</i> of the code.
+     * <p>
+     * This is a convenience method which creates a
+     * [EMAIL PROTECTED] RegexValidator} with the specified regular
+     * expression.
+     * <p>
+     * <b>N.B.</b> Optional, if not set no regular
+     * expression validation will be performed on the code.
+     *
+     * @param regex The format regular expression.
+     */
+    public void setRegex(String regex) {
+        if (regex != null && regex.length() > 0) {
+            setRegexValidator(new RegexValidator(regex));
+        } else {
+            setRegexValidator(null);
+        }
+    }
+
+    /**
+     * Set the <i>regular expression</i> validator.
+     * <p>
+     * <b>N.B.</b> Optional, if not set no regular
+     * expression validation will be performed on the code.
+     *
+     * @param regexValidator The regular expression validator
+     */
+    public void setRegexValidator(RegexValidator regexValidator) {
+        this.regexValidator = regexValidator;
+    }
+
+    /**
+     * Validate the code returning either <code>true</code>
+     * or <code>false</code>.
+     *
+     * @param input The code to validate
+     * @return <code>true</code> if valid, otherwise
+     * <code>false</code>
+     */
+    public boolean isValid(String input) {
+        return (validate(input) != null);
+    }
+
+    /**
+     * Validate the code returning either the valid code or
+     * <code>null</code> if invalid.
+     *
+     * @param input The code to validate
+     * @return The code if valid, otherwise <code>null</code>
+     * if invalid
+     */
+    public Object validate(String input) {
+
+        String code = (input == null ? null : input.trim());
+        if (code != null && code.length() == 0) {
+            return null;
+        }
+
+        // validate/reformat using regular expression
+        if (regexValidator != null) {
+            code = regexValidator.validate(code);
+            if (code == null) {
+                return null;
+            }
+        }
+
+        // check the length
+        if ((minLength >= 0 && code.length() < minLength) ||
+            (maxLength >= 0 && code.length() > maxLength)) {
+            return null;
+        }
+
+        // validate the check digit
+        if (checkdigit != null && !checkdigit.isValid(code)) {
+            return null;
+        }
+
+        return code;
+
+    }
+
+}

Propchange: 
jakarta/commons/proper/validator/trunk/src/share/org/apache/commons/validator/routines/CodeValidator.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
jakarta/commons/proper/validator/trunk/src/share/org/apache/commons/validator/routines/CodeValidator.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: 
jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/routines/CodeValidatorTest.java
URL: 
http://svn.apache.org/viewvc/jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/routines/CodeValidatorTest.java?view=auto&rev=486233
==============================================================================
--- 
jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/routines/CodeValidatorTest.java
 (added)
+++ 
jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/routines/CodeValidatorTest.java
 Tue Dec 12 09:02:56 2006
@@ -0,0 +1,249 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.validator.routines;
+
+import org.apache.commons.validator.routines.checkdigit.EAN13CheckDigit;
+
+import junit.framework.TestCase;
+
+/**
+ * CodeValidatorTest.java.
+ *    
+ * @version $Revision$ $Date$
+ * @since Validator 1.4
+ */
+public class CodeValidatorTest extends TestCase {
+
+    /**
+     * Construct a test with the specified name.
+     * @param name The name of the test
+     */
+    public CodeValidatorTest(String name) {
+        super(name);
+    }
+
+    /**
+     * @see junit.framework.TestCase#setUp()
+     */
+    protected void setUp() throws Exception {
+        super.setUp();
+    }
+
+    /**
+     * @see junit.framework.TestCase#tearDown()
+     */
+    protected void tearDown() throws Exception {
+        super.tearDown();
+    }
+
+    /**
+     * Test Check Digit.
+     */
+    public void testCheckDigit() {
+        CodeValidator validator = new CodeValidator();
+        String invalidEAN = "9781930110992";
+        String validEAN   = "9781930110991";
+
+        // Test no CheckDigit (i.e. null)
+        assertNull("No CheckDigit", validator.getCheckDigit());
+        assertEquals("No CheckDigit invalid", invalidEAN, 
validator.validate(invalidEAN));
+        assertEquals("No CheckDigit valid",     validEAN, 
validator.validate(validEAN));
+        assertEquals("No CheckDigit (is) invalid",  true, 
validator.isValid(invalidEAN));
+        assertEquals("No CheckDigit (is) valid",    true, 
validator.isValid(validEAN));
+
+        // Use the EAN-13 check digit routine
+        validator.setCheckDigit(EAN13CheckDigit.INSTANCE);
+
+        assertNotNull("EAN CheckDigit", validator.getCheckDigit());
+        assertEquals("EAN CheckDigit invalid",       null, 
validator.validate(invalidEAN));
+        assertEquals("EAN CheckDigit valid",     validEAN, 
validator.validate(validEAN));
+        assertEquals("EAN CheckDigit (is) invalid", false, 
validator.isValid(invalidEAN));
+        assertEquals("EAN CheckDigit (is) valid",    true, 
validator.isValid(validEAN));
+        assertEquals("EAN CheckDigit ex",            null, 
validator.validate("978193011099X"));
+    }
+
+    /**
+     * Test the minimum/maximum length
+     */
+    public void testLength() {
+        CodeValidator validator = new CodeValidator();
+        String length_10  = "1234567890";
+        String length_11  = "12345678901";
+        String length_12  = "123456789012";
+        String length_20  = "12345678901234567890";
+        String length_21  = "123456789012345678901";
+        String length_22  = "1234567890123456789012";
+
+        assertEquals("No min", -1, validator.getMinLength());
+        assertEquals("No max", -1, validator.getMaxLength());
+
+        assertEquals("No Length 10", length_10, validator.validate(length_10));
+        assertEquals("No Length 11", length_11, validator.validate(length_11));
+        assertEquals("No Length 12", length_12, validator.validate(length_12));
+        assertEquals("No Length 20", length_20, validator.validate(length_20));
+        assertEquals("No Length 21", length_21, validator.validate(length_21));
+        assertEquals("No Length 22", length_22, validator.validate(length_22));
+        
+        validator.setMinLength(11);
+
+        assertEquals("Min 11 - min", 11, validator.getMinLength());
+        assertEquals("Min 11 - max", -1, validator.getMaxLength());
+        assertEquals("Min 11 - 10", null,      validator.validate(length_10));
+        assertEquals("Min 11 - 11", length_11, validator.validate(length_11));
+        assertEquals("Min 11 - 12", length_12, validator.validate(length_12));
+        assertEquals("Min 11 - 20", length_20, validator.validate(length_20));
+        assertEquals("Min 11 - 21", length_21, validator.validate(length_21));
+        assertEquals("Min 11 - 22", length_22, validator.validate(length_22));
+        
+        validator.setMinLength(-1);
+        validator.setMaxLength(21);
+        assertEquals("Max 21 - min", -1, validator.getMinLength());
+        assertEquals("Max 21 - max", 21, validator.getMaxLength());
+        assertEquals("Max 21 - 10", length_10, validator.validate(length_10));
+        assertEquals("Max 21 - 11", length_11, validator.validate(length_11));
+        assertEquals("Max 21 - 12", length_12, validator.validate(length_12));
+        assertEquals("Max 21 - 20", length_20, validator.validate(length_20));
+        assertEquals("Max 21 - 21", length_21, validator.validate(length_21));
+        assertEquals("Max 21 - 22", null,      validator.validate(length_22));
+        
+        validator.setMinLength(11);
+        assertEquals("Min 11 / Max 21 - min", 11, validator.getMinLength());
+        assertEquals("Min 11 / Max 21 - max", 21, validator.getMaxLength());
+        assertEquals("Min 11 / Max 21 - 10", null,      
validator.validate(length_10));
+        assertEquals("Min 11 / Max 21 - 11", length_11, 
validator.validate(length_11));
+        assertEquals("Min 11 / Max 21 - 12", length_12, 
validator.validate(length_12));
+        assertEquals("Min 11 / Max 21 - 20", length_20, 
validator.validate(length_20));
+        assertEquals("Min 11 / Max 21 - 21", length_21, 
validator.validate(length_21));
+        assertEquals("Min 11 / Max 21 - 22", null,      
validator.validate(length_22));
+
+        validator.setLength(11);
+        assertEquals("Exact 11 - min", 11, validator.getMinLength());
+        assertEquals("Exact 11 - max", 11, validator.getMaxLength());
+        assertEquals("Exact 11 - 10", null,      
validator.validate(length_10));
+        assertEquals("Exact 11 - 11", length_11, 
validator.validate(length_11));
+        assertEquals("Exact 11 - 12", null,      
validator.validate(length_12));
+    }
+
+    /**
+     * Test Regular Expression.
+     */
+    public void testRegex() {
+        CodeValidator validator = new CodeValidator();
+
+        String value2  = "12";
+        String value3  = "123";
+        String value4  = "1234";
+        String value5  = "12345";
+        String invalid = "12a4";
+
+        // No Regular Expression
+        assertNull("No Regex", validator.getRegexValidator());
+        assertEquals("No Regex 2", value2, validator.validate(value2));
+        assertEquals("No Regex 3", value3, validator.validate(value3));
+        assertEquals("No Regex 4", value4, validator.validate(value4));
+        assertEquals("No Regex 5", value5, validator.validate(value5));
+        assertEquals("No Regex invalid", invalid, validator.validate(invalid));
+
+        // Regular Expression
+        validator.setRegex("^([0-9]{3,4})$");
+        assertNotNull("No Regex", validator.getRegexValidator());
+        assertEquals("Regex 2", null,   validator.validate(value2));
+        assertEquals("Regex 3", value3, validator.validate(value3));
+        assertEquals("Regex 4", value4, validator.validate(value4));
+        assertEquals("Regex 5", null,   validator.validate(value5));
+        assertEquals("Regex invalid", null, validator.validate(invalid));
+
+        // Reformatted
+        validator.setRegexValidator(new 
RegexValidator("^([0-9]{3})(?:[-\\s])([0-9]{3})$"));
+        validator.setLength(6);
+        assertEquals("Reformat 123-456", "123456", 
validator.validate("123-456"));
+        assertEquals("Reformat 123 456", "123456", validator.validate("123 
456"));
+        assertEquals("Reformat 123456",  null,     
validator.validate("123456"));
+        assertEquals("Reformat 123.456", null,     
validator.validate("123.456"));
+
+        String regex = "^(?:([0-9]{3})(?:[-\\s])([0-9]{3}))|([0-9]{6})$";
+        validator.setRegex(regex);
+        assertEquals("Reformat 2 Regex",  "RegexValidator{" + regex + "}", 
validator.getRegexValidator().toString());
+        assertEquals("Reformat 2 123-456", "123456", 
validator.validate("123-456"));
+        assertEquals("Reformat 2 123 456", "123456", validator.validate("123 
456"));
+        assertEquals("Reformat 2 123456",  "123456", 
validator.validate("123456"));
+        validator.setRegex(null);
+        assertEquals("Reformat 2 Regex null",  null, 
validator.getRegexValidator());
+    }
+
+    /**
+     * Test Regular Expression.
+     */
+    public void testNoInput() {
+        CodeValidator validator = new CodeValidator();
+        assertEquals("Null",         null, validator.validate(null));
+        assertEquals("Zero Length",  null, validator.validate(""));
+        assertEquals("Spaces",       null, validator.validate("   "));
+        assertEquals("Trimmed",      "A",  validator.validate(" A  "));
+    }
+
+    /**
+     * Test Regular Expression.
+     */
+    public void testConstructors() {
+        CodeValidator validator = null;
+        RegexValidator regex = new RegexValidator("^[0-9]*$");
+
+        // Constructor 1
+        validator = new CodeValidator(regex, EAN13CheckDigit.INSTANCE);
+        assertEquals("Constructor 1 - regex",      regex, 
validator.getRegexValidator());
+        assertEquals("Constructor 1 - min length", -1, 
validator.getMinLength());
+        assertEquals("Constructor 1 - max length", -1, 
validator.getMaxLength());
+        assertEquals("Constructor 1 - check digit", EAN13CheckDigit.INSTANCE, 
validator.getCheckDigit());
+
+        // Constructor 2
+        validator = new CodeValidator(regex, 13, EAN13CheckDigit.INSTANCE);
+        assertEquals("Constructor 2 - regex",      regex, 
validator.getRegexValidator());
+        assertEquals("Constructor 2 - min length", 13, 
validator.getMinLength());
+        assertEquals("Constructor 2 - max length", 13, 
validator.getMaxLength());
+        assertEquals("Constructor 2 - check digit", EAN13CheckDigit.INSTANCE, 
validator.getCheckDigit());
+
+        // Constructor 3
+        validator = new CodeValidator(regex, 10, 20, EAN13CheckDigit.INSTANCE);
+        assertEquals("Constructor 3 - regex",      regex, 
validator.getRegexValidator());
+        assertEquals("Constructor 3 - min length", 10, 
validator.getMinLength());
+        assertEquals("Constructor 3 - max length", 20, 
validator.getMaxLength());
+        assertEquals("Constructor 3 - check digit", EAN13CheckDigit.INSTANCE, 
validator.getCheckDigit());
+
+        // Constructor 4
+        validator = new CodeValidator("^[0-9]*$", EAN13CheckDigit.INSTANCE);
+        assertEquals("Constructor 4 - regex",      "RegexValidator{^[0-9]*$}", 
validator.getRegexValidator().toString());
+        assertEquals("Constructor 4 - min length", -1, 
validator.getMinLength());
+        assertEquals("Constructor 4 - max length", -1, 
validator.getMaxLength());
+        assertEquals("Constructor 4 - check digit", EAN13CheckDigit.INSTANCE, 
validator.getCheckDigit());
+
+        // Constructor 5
+        validator = new CodeValidator("^[0-9]*$", 13, 
EAN13CheckDigit.INSTANCE);
+        assertEquals("Constructor 5 - regex",      "RegexValidator{^[0-9]*$}", 
validator.getRegexValidator().toString());
+        assertEquals("Constructor 5 - min length", 13, 
validator.getMinLength());
+        assertEquals("Constructor 5 - max length", 13, 
validator.getMaxLength());
+        assertEquals("Constructor 5 - check digit", EAN13CheckDigit.INSTANCE, 
validator.getCheckDigit());
+
+        // Constructor 6
+        validator = new CodeValidator("^[0-9]*$", 10, 20, 
EAN13CheckDigit.INSTANCE);
+        assertEquals("Constructor 6 - regex",      "RegexValidator{^[0-9]*$}", 
validator.getRegexValidator().toString());
+        assertEquals("Constructor 6 - min length", 10, 
validator.getMinLength());
+        assertEquals("Constructor 6 - max length", 20, 
validator.getMaxLength());
+        assertEquals("Constructor 6 - check digit", EAN13CheckDigit.INSTANCE, 
validator.getCheckDigit());
+    }
+
+}

Propchange: 
jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/routines/CodeValidatorTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/routines/CodeValidatorTest.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Modified: jakarta/commons/proper/validator/trunk/xdocs/changes.xml
URL: 
http://svn.apache.org/viewvc/jakarta/commons/proper/validator/trunk/xdocs/changes.xml?view=diff&rev=486233&r1=486232&r2=486233
==============================================================================
--- jakarta/commons/proper/validator/trunk/xdocs/changes.xml (original)
+++ jakarta/commons/proper/validator/trunk/xdocs/changes.xml Tue Dec 12 
09:02:56 2006
@@ -40,6 +40,11 @@
   <body>
 
     <release version="1.4-SNAPSHOT" date="in SVN" description="In progress">
+      <action dev="niallp" type="add" issue="VALIDATOR-215">
+          <b>Code Validator</b> - new generic code validator that validates 
format,
+          length and Check Digit for a code, see
+          <a 
href="apidocs/org/apache/commons/validator/routines/CodeValidator.html">CodeValidator</a>.
+      </action>
       <action dev="niallp" type="add" issue="VALIDATOR-214">
           <b>Regular Expression Validator</b> - new Regular Expression 
validator using JDK 1.4's Regex, see
           <a 
href="apidocs/org/apache/commons/validator/routines/RegexValidator.html">RegexValidator</a>.



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to