From Bavencoff@users.nuiton.org Thu Aug 8 15:12:30 2013 From: Bavencoff@users.nuiton.org To: nuiton-validator-commits@list.nuiton.org Subject: [Nuiton-validator-commits] r2599 - in trunk/src: main/java/org/nuiton/validator/xwork2/field test/java/org/nuiton/validator/model test/java/org/nuiton/validator/xwork2/field test/resources test/resources/org/nuiton/validator/model Date: Thu, 08 Aug 2013 15:12:30 +0200 Message-ID: <20130808131230.8286B18DDDA@nuiton.codelutin.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============8434967820921170131==" --===============8434967820921170131== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Author: Bavencoff Date: 2013-08-08 15:12:30 +0200 (Thu, 08 Aug 2013) New Revision: 2599 Url: http://nuiton.org/projects/nuiton-validator/repository/revisions/2599 Log: Add French SIREN validator. Move Luhn checksum in FrenchSiretFieldValidator to FieldValidatorUtil add Luhn checksum in FrenchFinessValidator Added: trunk/src/main/java/org/nuiton/validator/xwork2/field/FieldValidatorUtil.j= ava trunk/src/main/java/org/nuiton/validator/xwork2/field/FrenchSirenFieldVali= dator.java trunk/src/test/java/org/nuiton/validator/xwork2/field/FieldValidatorUtilTe= st.java trunk/src/test/java/org/nuiton/validator/xwork2/field/FrenchSirenFieldVali= datorTest.java Modified: trunk/src/main/java/org/nuiton/validator/xwork2/field/FrenchFinessFieldVal= idator.java trunk/src/main/java/org/nuiton/validator/xwork2/field/FrenchSiretFieldVali= dator.java trunk/src/test/java/org/nuiton/validator/model/Company.java trunk/src/test/java/org/nuiton/validator/xwork2/field/FrenchFinessFieldVal= idatorTest.java trunk/src/test/java/org/nuiton/validator/xwork2/field/FrenchSiretFieldVali= datorTest.java trunk/src/test/resources/org/nuiton/validator/model/Company-error-validati= on.xml trunk/src/test/resources/validators.xml Added: trunk/src/main/java/org/nuiton/validator/xwork2/field/FieldValidatorUt= il.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/src/main/java/org/nuiton/validator/xwork2/field/FieldValidatorUtil.= java (rev 0) +++ trunk/src/main/java/org/nuiton/validator/xwork2/field/FieldValidatorUtil.= java 2013-08-08 13:12:30 UTC (rev 2599) @@ -0,0 +1,99 @@ +package org.nuiton.validator.xwork2.field; + +/** + * Util tool for Field validator + *

+ * + * + * @author Sylvain Bavencoff + * @since 3.0 + * + */ + +/** + * @author Sylvain Bavencoff + */ +public class FieldValidatorUtil { + + /** + * Verifie la validite d'un numero en suivant l'algorithme Luhn tel que = d'ecrit + * dans wikipedia + *

+ * Algo: + * en fonction de la position du numero dans la sequence, + * on multiplie pas 1 (pour les impaires) ou par 2 pour les paires + * (1 etant le numero le plus a droite) + * On fait la somme de tous les chiffres qui resulte de ces multiplicati= ons + * (si un resultat etait 14, on ne fait pas +14 mais +1+4) + *

+ * Si le r=C3=A9sultat de cette somme donne un reste de 0 une fois divis= =C3=A9 par 10 + * le numero est valide. + * + * @param value une chaine composer que de chiffre + * @return vrai si on a reussi a valider le numero + */ + public static boolean luhnChecksum(String value) { + + char[] tab =3D value.toCharArray(); + int sum =3D 0; + + // on multiple alternativement par 1 ou par 2 les chiffres + // sachant que le chiffre le plus =C3=A0 droite est multipli=C3=A9 p= ar 1 + + // l'offset permet de savoir si le premier chiffre( le plus a gauche= ) doit etre + // multiplier par 1 ( offset =3D 0) + // multiplier par 2 (offset =3D 1) + int offset =3D (tab.length + 1) % 2; + + + for (int i =3D 0; i < tab.length; i++) { + + // recuperation de la valeur + int n =3D getDigit(tab[i]); + + // multiplication par 1 ou 2 en fonction de l'index et de l'offs= et + n *=3D (i + offset) % 2 + 1; + + // si une fois multiplie il est superieur a 9, il faut additionn= er + // toutes ces constituante, mais comme il ne peut pas etre super= ieur + // a 18, cela revient a retrancher 9 + if (n > 9) { + n -=3D 9; + } + + // on peut directement faire la somme + sum +=3D n; + } + + // 3eme phase on verifie que c'est bien un multiple de 10 + boolean result =3D sum % 10 =3D=3D 0; + + return result; + } + + + /** + * Converti un char en un entier '0' =3D> 0 et '9' =3D> 9, et 'A' =3D> 1= a 'Z' =3D> 36, + * les autres caractere sont aussi convertis pour que + * A|B|C|D|E|F|G|H|I|J + * K|L|M|N|O|P|Q|R|S|T + * U|V|W|X|Y|Z| | | | + * -+-+-+-+-+-+-+-+-+ + * 1|2|3|4|5|6|7|8|9|0. + * Pour les autres c'est un indedermine + * + * @param c le caractere qui doit etre converti + * @return le chiffre + */ + public static int getDigit(char c) { + int result =3D 0; + if (c >=3D '0' && c <=3D '9') { + result =3D c - '0'; + } else if (c >=3D 'A' && c <=3D 'Z') { + result =3D (c - 'A' + 1) % 10; + } else { + result =3D (c - 'a' + 1) % 10; + } + return result; + } +} Modified: trunk/src/main/java/org/nuiton/validator/xwork2/field/FrenchFinessF= ieldValidator.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/src/main/java/org/nuiton/validator/xwork2/field/FrenchFinessFieldVa= lidator.java 2013-07-23 15:54:55 UTC (rev 2598) +++ trunk/src/main/java/org/nuiton/validator/xwork2/field/FrenchFinessFieldVa= lidator.java 2013-08-08 13:12:30 UTC (rev 2599) @@ -37,9 +37,9 @@ */ public class FrenchFinessFieldValidator extends NuitonFieldValidatorSupport { =20 - protected static final String SIRET_REGEXP =3D "([0-9]{2}|2A|2B)0([0-9]{= 6})"; + protected static final String FINESS_REGEXP =3D "(0[1-9]|[1-9][0-9]|2A|2= B)0([0-9]{6})"; =20 - protected static final Pattern p =3D Pattern.compile(SIRET_REGEXP); + protected static final Pattern p =3D Pattern.compile(FINESS_REGEXP); =20 @Override protected void validateWhenNotSkip(Object object) throws ValidationExcep= tion { @@ -80,7 +80,7 @@ finess =3D finess.replaceAll(" ", ""); =20 Matcher m =3D p.matcher(finess); - if (!m.matches()) { + if (!m.matches() || ! FieldValidatorUtil.luhnChecksum(finess)) { addFieldError(fieldName, object); } } Added: trunk/src/main/java/org/nuiton/validator/xwork2/field/FrenchSirenField= Validator.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/src/main/java/org/nuiton/validator/xwork2/field/FrenchSirenFieldVal= idator.java (rev 0) +++ trunk/src/main/java/org/nuiton/validator/xwork2/field/FrenchSirenFieldVal= idator.java 2013-08-08 13:12:30 UTC (rev 2599) @@ -0,0 +1,80 @@ +package org.nuiton.validator.xwork2.field; + +import com.opensymphony.xwork2.validator.ValidationException; +import org.apache.commons.lang3.StringUtils; + +import java.lang.reflect.Array; +import java.util.Collection; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * Validator for French SIREN numbers + *

+ * Siret can be in: + *

  • String format: "442116703" + *
  • long, int: 442116703 + *
  • Array or Collection of something: [4,4,2,1,1,6,7,0,,3] or ["442","116= ","70", "3"] + * + * @author ylvain Bavencoff + * @since 3.0 + * Validation do the Luhn checksum too + */ + +public class FrenchSirenFieldValidator extends NuitonFieldValidatorSupport { + + protected static final String SIREN_REGEXP =3D "[0-9]{9}"; + + protected static final Pattern p =3D Pattern.compile(SIREN_REGEXP); + + @Override + public void validateWhenNotSkip(Object object) throws ValidationExceptio= n { + + String fieldName =3D getFieldName(); + Object value =3D getFieldValue(fieldName, object); + + if (value =3D=3D null) { + // no value defined + return; + } + String siren; + + if (value.getClass().isArray()) { + // le siren est stocker dans un tableau, par exemple un byte[] + siren =3D ""; + for (int i =3D 0; i < Array.getLength(value); i++) { + siren +=3D String.valueOf(Array.get(value, i)); + } + } else if (value instanceof Collection) { + // le siren est stocker dans une collection, + // ca doit pas arriver souvent :D, mais autant le gerer + siren =3D ""; + for (Object o : (Collection) value) { + siren +=3D String.valueOf(o); + } + } else { + // sinon dans tous les autres cas (String, int, long, BigInteger= ...) + // on prend le toString + siren =3D String.valueOf(value); + } + + if (StringUtils.isEmpty(siren)) { + // no value defined + return; + } + + // Remove any space + siren =3D siren.replaceAll(" ", ""); + + Matcher m =3D p.matcher(siren); + if (!m.matches() || ! FieldValidatorUtil.luhnChecksum(siren)) { + addFieldError(fieldName, object); + } + } + + @Override + public String getValidatorType() { + return "frenchSiret"; + } + +} Modified: trunk/src/main/java/org/nuiton/validator/xwork2/field/FrenchSiretFi= eldValidator.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/src/main/java/org/nuiton/validator/xwork2/field/FrenchSiretFieldVal= idator.java 2013-07-23 15:54:55 UTC (rev 2598) +++ trunk/src/main/java/org/nuiton/validator/xwork2/field/FrenchSiretFieldVal= idator.java 2013-08-08 13:12:30 UTC (rev 2599) @@ -89,7 +89,7 @@ siret =3D siret.replaceAll(" ", ""); =20 Matcher m =3D p.matcher(siret); - if (!m.matches() || !luhnChecksum(siret)) { + if (!m.matches() || ! FieldValidatorUtil.luhnChecksum(siret)) { addFieldError(fieldName, object); } } @@ -99,78 +99,4 @@ return "frenchSiret"; } =20 - /** - * Verifie la validite d'un numero en suivant l'algorithme Luhn tel que = d'ecrit - * dans wikipedia - *

    - * Algo: - * en fonction de la position du numero dans la sequence, - * on multiplie pas 1 (pour les impaires) ou par 2 pour les paires - * (1 etant le numero le plus a droite) - * On fait la somme de tous les chiffres qui resulte de ces multiplicati= ons - * (si un resultat etait 14, on ne fait pas +14 mais +1+4) - *

    - * Si le r=C3=A9sultat de cette somme donne un reste de 0 une fois divis= =C3=A9 par 10 - * le numero est valide. - * - * @param siret une chaine composer que de chiffre - * @return vrai si on a reussi a valider le numero - */ - public static boolean luhnChecksum(String siret) { - - char[] tab =3D siret.toCharArray(); - int sum =3D 0; - for (int i =3D tab.length - 1; i >=3D 0; i--) { - // recuperation de la valeur - int n =3D getDigit(tab[i]); - - // 1ere phase il faut faire la multiplication par 1 ou 2 - - // il faut faire x1 pour les paires et x2 sur les impaires. - // en prenant en compte que le numero siret le plus a droite est= le - // 1 et le plus a gauche le 14. - // mais comme en informatique on commence a 0 :D - // il faut faire +1 sur l'indice puis un simple module 2 + 1 - // nous convient - n *=3D (i + 1) % 2 + 1; - - // 2eme phase il faut faire l'addition - - // si une fois multiplie il est superieur a 9, il faut additionn= er - // toutes ces constituante, mais comme il ne peut pas etre super= ieur - // a 18, cela revient a retrancher 9 - if (n > 9) { - n -=3D 9; - } - - // on peut directement faire la somme - sum +=3D n; - } - - // 3eme phase on verifie que c'est bien un multiple de 10 - boolean result =3D sum % 10 =3D=3D 0; - - return result; - } - - - /** - * Converti un char en un entier '0' =3D> 0 et '9' =3D> 9, et 'A' =3D> 1= 0 a 'Z' =3D> 36, - * les autres caractere sont aussi convertis pour que 'a' =3D 10 et 'z' = =3D 36. - * Pour les autres c'est un indedermine - * - * @param c le caractere qui doit etre converti - * @return le chiffre - */ - public static int getDigit(char c) { - int result =3D 0; - if (c >=3D '0' && c <=3D '9') { - result =3D c - '0'; - } else if (c >=3D 'A' && c <=3D 'Z') { - result =3D c - 'A' + 10; - } else { - result =3D c - 'a' + 10; - } - return result; - } } Modified: trunk/src/test/java/org/nuiton/validator/model/Company.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/src/test/java/org/nuiton/validator/model/Company.java 2013-07-23 15= :54:55 UTC (rev 2598) +++ trunk/src/test/java/org/nuiton/validator/model/Company.java 2013-08-08 13= :12:30 UTC (rev 2599) @@ -33,10 +33,14 @@ =20 public static final String PROPERTY_SIRET =3D "siret"; =20 + public static final String PROPERTY_SIREN =3D "siren"; + protected String vat; =20 protected String siret; =20 + protected String siren; + public String getVat() { return vat; } @@ -52,4 +56,12 @@ public void setSiret(String siret) { this.siret =3D siret; } + + public String getSiren() { + return siren; + } + + public void setSiren(String siren) { + this.siren =3D siren; + } } Added: trunk/src/test/java/org/nuiton/validator/xwork2/field/FieldValidatorUt= ilTest.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/src/test/java/org/nuiton/validator/xwork2/field/FieldValidatorUtilT= est.java (rev 0) +++ trunk/src/test/java/org/nuiton/validator/xwork2/field/FieldValidatorUtilT= est.java 2013-08-08 13:12:30 UTC (rev 2599) @@ -0,0 +1,25 @@ +package org.nuiton.validator.xwork2.field; + +import org.junit.Assert; +import org.junit.Test; + +/** + * @author Sylvain Bavencoff + */ +public class FieldValidatorUtilTest extends Assert { + + @Test + public void TestLuhnChecksum() throws Exception { + // verification sur de vrai numero siret (ca doit passer :) + assertTrue(FieldValidatorUtil.luhnChecksum("44211670300038")); + assertTrue(FieldValidatorUtil.luhnChecksum("73282932000074")); + assertTrue(FieldValidatorUtil.luhnChecksum("2A0002879")); + + // verification avec les memes, en ne modifiant que le dernier chiff= re + // ca doit failer + assertFalse(FieldValidatorUtil.luhnChecksum("44211670300030")); + assertFalse(FieldValidatorUtil.luhnChecksum("73282932000070")); + assertFalse(FieldValidatorUtil.luhnChecksum("2A0002870")); + } + +} Modified: trunk/src/test/java/org/nuiton/validator/xwork2/field/FrenchFinessF= ieldValidatorTest.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/src/test/java/org/nuiton/validator/xwork2/field/FrenchFinessFieldVa= lidatorTest.java 2013-07-23 15:54:55 UTC (rev 2598) +++ trunk/src/test/java/org/nuiton/validator/xwork2/field/FrenchFinessFieldVa= lidatorTest.java 2013-08-08 13:12:30 UTC (rev 2599) @@ -42,13 +42,23 @@ assertNull(bean.getFiness()); =20 // Valid Finess - bean.setFiness("440123456"); + bean.setFiness("440012664"); assertFieldInError(HealthEstablishment.PROPERTY_FINESS, "healthEstab= lishment.finess.format", false); =20 // Valid Finess - bean.setFiness("2B0483714"); + bean.setFiness("310001177"); assertFieldInError(HealthEstablishment.PROPERTY_FINESS, "healthEstab= lishment.finess.format", + false); + + // Valid Finess + bean.setFiness("2A0002879"); + assertFieldInError(HealthEstablishment.PROPERTY_FINESS, "healthEstab= lishment.finess.format", + false); + + // Valid Finess + bean.setFiness("2B0000236"); + assertFieldInError(HealthEstablishment.PROPERTY_FINESS, "healthEstab= lishment.finess.format", false); =20 // not Valid Finess @@ -67,7 +77,7 @@ true); =20 // not Valid Finess - bean.setFiness("441123456"); + bean.setFiness("000123456"); assertFieldInError(HealthEstablishment.PROPERTY_FINESS, "healthEstab= lishment.finess.format", true); =20 @@ -81,5 +91,10 @@ assertFieldInError(HealthEstablishment.PROPERTY_FINESS, "healthEstab= lishment.finess.format", true); =20 + // not Valid Finess + bean.setFiness("440012666"); + assertFieldInError(HealthEstablishment.PROPERTY_FINESS, "healthEstab= lishment.finess.format", + true); + } } Added: trunk/src/test/java/org/nuiton/validator/xwork2/field/FrenchSirenField= ValidatorTest.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/src/test/java/org/nuiton/validator/xwork2/field/FrenchSirenFieldVal= idatorTest.java (rev 0) +++ trunk/src/test/java/org/nuiton/validator/xwork2/field/FrenchSirenFieldVal= idatorTest.java 2013-08-08 13:12:30 UTC (rev 2599) @@ -0,0 +1,67 @@ +package org.nuiton.validator.xwork2.field; + +import org.junit.Test; +import org.nuiton.validator.model.Company; + +/** + * @author Sylvain Bavencoff + */ +public class FrenchSirenFieldValidatorTest extends AbstractFieldValidatorTes= t { + + public FrenchSirenFieldValidatorTest() { + super(Company.class); + } + + @Test + @Override + public void testValidator() throws Exception { + + assertNull(bean.getSiren()); + + // Valid siren + bean.setSiren("751700782"); + assertFieldInError(Company.PROPERTY_SIREN, "company.siren.format", + false); + + // Valid siren + bean.setSiren("263903007"); + assertFieldInError(Company.PROPERTY_SIREN, "company.siren.format", + false); + + // Not Valid siren, because bad checksum + bean.setSiren("263903000"); + assertFieldInError(Company.PROPERTY_SIREN, "company.siren.format", + true); + + // Not valid siren + bean.setSiren("44211670"); + assertFieldInError(Company.PROPERTY_SIREN, "company.siren.format", + true); + + // Not valid siren + bean.setSiren("442116703000389"); + assertFieldInError(Company.PROPERTY_SIREN, "company.siren.format", + true); + + // Not valid siren + bean.setSiren("4421bf167"); + assertFieldInError(Company.PROPERTY_SIREN, "company.siren.format", + true); + + // Use requiredString for empty siren + bean.setSiren(""); + assertFieldInError(Company.PROPERTY_SIREN, "company.siren.format", + false); + + // Use required for null siren + bean.setSiren(null); + assertFieldInError(Company.PROPERTY_SIREN, "company.siren.format", + false); + + // Valid siren with spaces + bean.setSiren("535 198 188 "); + assertFieldInError(Company.PROPERTY_SIREN, "company.siren.format", + false); + + } +} \ No newline at end of file Modified: trunk/src/test/java/org/nuiton/validator/xwork2/field/FrenchSiretFi= eldValidatorTest.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/src/test/java/org/nuiton/validator/xwork2/field/FrenchSiretFieldVal= idatorTest.java 2013-07-23 15:54:55 UTC (rev 2598) +++ trunk/src/test/java/org/nuiton/validator/xwork2/field/FrenchSiretFieldVal= idatorTest.java 2013-08-08 13:12:30 UTC (rev 2599) @@ -37,18 +37,6 @@ } =20 @Test - public void TestLuhnChecksum() throws Exception { - // verification sur de vrai numero siret (ca doit passer :) - assertTrue(FrenchSiretFieldValidator.luhnChecksum("44211670300038")); - assertTrue(FrenchSiretFieldValidator.luhnChecksum("73282932000074")); - - // verification avec les memes, en ne modifiant que le dernier chiff= re - // ca doit failer - assertFalse(FrenchSiretFieldValidator.luhnChecksum("44211670300030")= ); - assertFalse(FrenchSiretFieldValidator.luhnChecksum("73282932000070")= ); - } - - @Test @Override public void testValidator() throws Exception { =20 Modified: trunk/src/test/resources/org/nuiton/validator/model/Company-error-v= alidation.xml =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/src/test/resources/org/nuiton/validator/model/Company-error-validat= ion.xml 2013-07-23 15:54:55 UTC (rev 2598) +++ trunk/src/test/resources/org/nuiton/validator/model/Company-error-validat= ion.xml 2013-08-08 13:12:30 UTC (rev 2599) @@ -32,6 +32,12 @@ =20 + + + company.siren.format + + + company.vat.format Modified: trunk/src/test/resources/validators.xml =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/src/test/resources/validators.xml 2013-07-23 15:54:55 UTC (rev 2598) +++ trunk/src/test/resources/validators.xml 2013-08-08 13:12:30 UTC (rev 2599) @@ -67,6 +67,7 @@ + =20 --===============8434967820921170131==--