// ============================================================================
//
// Copyright (C) 2006-2016 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.dataquality.email.checkerImpl;
import static org.junit.Assert.*;
import org.junit.Test;
/**
* created by qiongli on 2014年12月26日 Detailled comment
*
*/
public class LocalPartRegexCheckerImplTest {
LocalPartRegexCheckerImpl localPartCheck;
/**
* Test method for {@link org.talend.dataquality.email.checkerImpl.LocalPartRegexCheckerImpl#check(java.lang.String)}.
*/
@Test
public void testCheck_validate() {
String regularPattern = "a9w"; //$NON-NLS-1$
localPartCheck = new LocalPartRegexCheckerImpl(regularPattern, true, false);
String email = "a1w@sina.com"; //$NON-NLS-1$
assertTrue(localPartCheck.check(email));
String email2 = "c1aw@sina.com"; //$NON-NLS-1$
assertTrue(localPartCheck.check(email2));
}
@Test
public void testCheck_validate_translation() {
String regularPattern = "*"; //$NON-NLS-1$
localPartCheck = new LocalPartRegexCheckerImpl(regularPattern, true, false);
String email = ";a9.w.-@sina.com"; //$NON-NLS-1$
assertFalse(localPartCheck.check(email));
assertTrue(localPartCheck.check("a@cc.com")); //$NON-NLS-1$
regularPattern = "a.9w9"; //$NON-NLS-1$
localPartCheck = new LocalPartRegexCheckerImpl(regularPattern, true, false);
email = "c.1de2@sina.com"; //$NON-NLS-1$
assertTrue(localPartCheck.check(email));
email = "c1de2.-@sina.com"; //$NON-NLS-1$
assertFalse(localPartCheck.check(email));
regularPattern = "a?9w"; //$NON-NLS-1$
localPartCheck = new LocalPartRegexCheckerImpl(regularPattern, true, false);
email = "c-3de@sina.com"; //$NON-NLS-1$
assertTrue(localPartCheck.check(email));
email = "c-3de-@sina.com"; //$NON-NLS-1$
assertFalse(localPartCheck.check(email));
regularPattern = "9a*"; //$NON-NLS-1$
localPartCheck = new LocalPartRegexCheckerImpl(regularPattern, true, false);
email = "6b8@qq.com"; //$NON-NLS-1$
assertTrue(email + " should match with " + regularPattern, localPartCheck.check(email)); //$NON-NLS-1$
email = "9a@qq.com"; //$NON-NLS-1$
assertTrue(email + " should match with " + regularPattern, localPartCheck.check(email)); //$NON-NLS-1$
email = "6b88uu@qq.com"; //$NON-NLS-1$
assertTrue(email + " should match with " + regularPattern, localPartCheck.check(email)); //$NON-NLS-1$
regularPattern = "9a?"; //$NON-NLS-1$
localPartCheck = new LocalPartRegexCheckerImpl(regularPattern, true, false);
email = "6b8@qq.com"; //$NON-NLS-1$
assertTrue(email + " should match with " + regularPattern, localPartCheck.check(email)); //$NON-NLS-1$
email = "9a@qq.com"; //$NON-NLS-1$
assertFalse(email + " should not match with " + regularPattern, localPartCheck.check(email)); //$NON-NLS-1$
email = "6b88uu@qq.com"; //$NON-NLS-1$
assertFalse(email + " should not match with " + regularPattern, localPartCheck.check(email)); //$NON-NLS-1$
}
/**
* Test method for {@link org.talend.dataquality.email.checkerImpl.LocalPartRegexCheckerImpl#check(java.lang.String)}.
*/
@Test
public void testCheck_invalid() {
String regularPattern = "a1w"; //$NON-NLS-1$
localPartCheck = new LocalPartRegexCheckerImpl(regularPattern, true, false);
String email = "a_1bc@sina.com"; //$NON-NLS-1$
assertFalse(localPartCheck.check(email));
email = "c1-aw@sina.com"; //$NON-NLS-1$
assertFalse(localPartCheck.check(email));
}
@Test
public void testCheck_valid_1() {
String regularPattern = "a1w<talend.c>"; //$NON-NLS-1$
localPartCheck = new LocalPartRegexCheckerImpl(regularPattern, true, false);
String email = "a1wtalend.c@sina.com"; //$NON-NLS-1$
assertTrue(localPartCheck.check(email));
}
@Test
public void testCheck_invalid_2() {
String regularPattern = "a1w<talend.c>"; //$NON-NLS-1$
localPartCheck = new LocalPartRegexCheckerImpl(regularPattern, true, false);
String email2 = "c1aw@sina.com"; //$NON-NLS-1$
assertFalse(localPartCheck.check(email2));
}
@Test
public void testCheck_invalid_null() {
String regularPattern = "a1w"; //$NON-NLS-1$
localPartCheck = new LocalPartRegexCheckerImpl(regularPattern, true, false);
String email2 = null;
assertFalse(localPartCheck.check(email2));
localPartCheck = new LocalPartRegexCheckerImpl(null, true, false);
email2 = "c1aw@sina.com"; //$NON-NLS-1$
assertFalse(localPartCheck.check(email2));
}
@Test
public void testCheck_casesenstive() {
String regularPattern = "a9w"; //$NON-NLS-1$
localPartCheck = new LocalPartRegexCheckerImpl(regularPattern, true, true);
String email = "c2qw@sina.com"; //$NON-NLS-1$
assertTrue(localPartCheck.check(email));
regularPattern = "A9W"; //$NON-NLS-1$
localPartCheck = new LocalPartRegexCheckerImpl(regularPattern, true, true);
assertFalse(localPartCheck.check(email));
String email2 = "C2QW@sina.com"; //$NON-NLS-1$
assertTrue(localPartCheck.check(email2));
// no case sensitive
localPartCheck = new LocalPartRegexCheckerImpl(regularPattern, true, false);
String email3 = "c2qw@sina.com"; //$NON-NLS-1$
assertTrue(localPartCheck.check(email2));
}
@Test
public void testTranslateToRegex() {
localPartCheck = new LocalPartRegexCheckerImpl("", true, false); //$NON-NLS-1$
String regularPattern = "w.<tal.end>"; //$NON-NLS-1$
String convertedPattern = localPartCheck.translateToRegex(regularPattern);
String expectedRegex = "[a-z]+\\.tal.end"; //$NON-NLS-1$
assertEquals(expectedRegex, convertedPattern);
regularPattern = "<tal>w<end>"; //$NON-NLS-1$
convertedPattern = localPartCheck.translateToRegex(regularPattern);
expectedRegex = "tal[a-z]+end"; //$NON-NLS-1$
assertEquals(expectedRegex, convertedPattern);
regularPattern = "<tal>?<end>*"; //$NON-NLS-1$
convertedPattern = localPartCheck.translateToRegex(regularPattern);
expectedRegex = "tal[^\\s\\p{Cntrl}\\(\\)<>@,;:'\\\\\\\"\\.\\[\\]]end[^\\s\\p{Cntrl}\\(\\)<>@,;:'\\\\\\\"\\.\\[\\]]*"; //$NON-NLS-1$
assertEquals(expectedRegex, convertedPattern);
regularPattern = "<tal>?<+end>*"; //$NON-NLS-1$
convertedPattern = localPartCheck.translateToRegex(regularPattern);
expectedRegex = "tal[^\\s\\p{Cntrl}\\(\\)<>@,;:'\\\\\\\"\\.\\[\\]]+end[^\\s\\p{Cntrl}\\(\\)<>@,;:'\\\\\\\"\\.\\[\\]]*"; //$NON-NLS-1$
assertEquals(expectedRegex, convertedPattern);
regularPattern = "<tal>?<\\+end>*"; //$NON-NLS-1$
convertedPattern = localPartCheck.translateToRegex(regularPattern);
expectedRegex = "tal[^\\s\\p{Cntrl}\\(\\)<>@,;:'\\\\\\\"\\.\\[\\]]\\+end[^\\s\\p{Cntrl}\\(\\)<>@,;:'\\\\\\\"\\.\\[\\]]*"; //$NON-NLS-1$
assertEquals(expectedRegex, convertedPattern);
regularPattern = "a<[._-]?>w"; //$NON-NLS-1$
convertedPattern = localPartCheck.translateToRegex(regularPattern);
expectedRegex = "[a-z][._-]?[a-z]+"; //$NON-NLS-1$
assertEquals(expectedRegex, convertedPattern);
regularPattern = "a.<[._w-]?>w<tat?>"; //$NON-NLS-1$
convertedPattern = localPartCheck.translateToRegex(regularPattern);
expectedRegex = "[a-z]\\.[._w-]?[a-z]+tat?"; //[a-z]\.\[\._w\-\]\?[a-z]+tat\? //$NON-NLS-1$
assertEquals(expectedRegex, convertedPattern);
}
}