// ============================================================================
//
// 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.mdm.repository.utils;
import static org.junit.Assert.*;
import org.junit.Rule;
import org.junit.Test;
import org.mockito.Mockito;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.rule.PowerMockRule;
@PrepareForTest({ ValidateUtil.class })
public class ValidateUtilTest {
@Rule
public PowerMockRule rule = new PowerMockRule();
String str = "aaaaabbbbbccccc"; //$NON-NLS-1$
@Test
public void testMatchCommonRegex() {
// single char is all right
assertTrue(ValidateUtil.matchCommonRegex("a")); //$NON-NLS-1$
// this char - in this middle or front will be all right
String ss[] = { "-" };//$NON-NLS-1$
for (String s : ss) {
String validStr1 = str + s + "a";//$NON-NLS-1$
String validStr2 = s + "a";//$NON-NLS-1$
boolean match1 = ValidateUtil.matchCommonRegex(validStr1);
boolean match2 = ValidateUtil.matchCommonRegex(validStr2);
assertTrue(match1);
assertFalse(match2);
}
String validStr3 = str + "a";
assertTrue(ValidateUtil.matchCommonRegex(validStr3));
// invalid char in this middle or back
String sep[] = { " ", "+", "*", "/", "\\", "(", ")", "[", "]", "{", "}", "|", "`", "~", "@", "$", "%", "^", "&" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$//$NON-NLS-11$ //$NON-NLS-12$ //$NON-NLS-13$ //$NON-NLS-14$ //$NON-NLS-15$ //$NON-NLS-16$ //$NON-NLS-17$ //$NON-NLS-18$ //$NON-NLS-19$
for (String s : sep) {
String invalidStr1 = str + s + "a"; //$NON-NLS-1$
String invalidStr2 = str + s;
boolean matchCommon1 = ValidateUtil.matchCommonRegex(invalidStr1);
boolean matchCommon2 = ValidateUtil.matchCommonRegex(invalidStr2);
assertFalse(matchCommon1);
assertFalse(matchCommon2);
System.out.println(matchCommon1 + "" + matchCommon2); //$NON-NLS-1$
}
// "#", "-", "." in the back
boolean match1 = ValidateUtil.matchCommonRegex(str + ss[0]);
assertFalse(match1);
}
@Test
public void testMatchCustomFormRegex() {
// single char is all right
assertTrue(ValidateUtil.matchCustomFormRegex("a")); //$NON-NLS-1$
// this three char in this middle or front will be all right
String ss[] = { "#", "." };//$NON-NLS-1$//$NON-NLS-2$
for (String s : ss) {
String validStr1 = str + s + "a";//$NON-NLS-1$
String validStr2 = s + "a";//$NON-NLS-1$
boolean match1 = ValidateUtil.matchCustomFormRegex(validStr1);
boolean match2 = ValidateUtil.matchCustomFormRegex(validStr2);
assertTrue(match1);
assertFalse(match2);
}
// invalid char in this middle or back
String sep[] = { " ", "+", "-", "*", "/", "\\", "(", ")", "[", "]", "{", "}", "|", "`", "~", "@", "$", "%", "^", "&" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$//$NON-NLS-11$ //$NON-NLS-12$ //$NON-NLS-13$ //$NON-NLS-14$ //$NON-NLS-15$ //$NON-NLS-16$ //$NON-NLS-17$ //$NON-NLS-18$ //$NON-NLS-19$ //$NON-NLS-20$
for (String s : sep) {
String invalidStr1 = str + s + "a"; //$NON-NLS-1$
String invalidStr2 = str + s;
boolean matchCommon1 = ValidateUtil.matchCustomFormRegex(invalidStr1);
boolean matchCommon2 = ValidateUtil.matchCustomFormRegex(invalidStr2);
assertFalse(matchCommon1);
assertFalse(matchCommon2);
System.out.println(matchCommon1 + "" + matchCommon2); //$NON-NLS-1$
}
// "#", "." in the back
boolean match1 = ValidateUtil.matchCustomFormRegex(str + ss[0]);
boolean match2 = ValidateUtil.matchCustomFormRegex(str + ss[1]);
assertFalse(match1);
assertFalse(match2);
}
@Test
public void testMatchViewProcessRegex() {
// single char is all right
assertTrue(ValidateUtil.matchViewProcessRegex("a")); //$NON-NLS-1$
// this three char in this middle or front will be all right
String ss[] = { "#", "." };//$NON-NLS-1$//$NON-NLS-2$
for (String s : ss) {
String validStr1 = str + s + "a";//$NON-NLS-1$
String validStr2 = s + "a";//$NON-NLS-1$
boolean match1 = ValidateUtil.matchViewProcessRegex(validStr1);
boolean match2 = ValidateUtil.matchViewProcessRegex(validStr2);
assertTrue(match1);
assertFalse(match2);
}
for (String s : ss) {
String validStr1 = str + s + "#";//$NON-NLS-1$
String validStr2 = s + "#";//$NON-NLS-1$
boolean match1 = ValidateUtil.matchViewProcessRegex(validStr1);
boolean match2 = ValidateUtil.matchViewProcessRegex(validStr2);
assertTrue(match1);
assertFalse(match2);
}
assertTrue(ValidateUtil.matchViewProcessRegex(str + "#")); //$NON-NLS-1$ //$NON-NLS-2$
// invalid char in this middle or back
String sep[] = { " ", "+", "-", "*", "/", "\\", "(", ")", "[", "]", "{", "}", "|", "`", "~", "@", "$", "%", "^", "&" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$//$NON-NLS-11$ //$NON-NLS-12$ //$NON-NLS-13$ //$NON-NLS-14$ //$NON-NLS-15$ //$NON-NLS-16$ //$NON-NLS-17$ //$NON-NLS-18$ //$NON-NLS-19$ //$NON-NLS-20$
for (String s : sep) {
String invalidStr1 = str + s + "a"; //$NON-NLS-1$
String invalidStr2 = str + s;
boolean matchCommon1 = ValidateUtil.matchCustomFormRegex(invalidStr1);
boolean matchCommon2 = ValidateUtil.matchCustomFormRegex(invalidStr2);
assertFalse(matchCommon1);
assertFalse(matchCommon2);
System.out.println(matchCommon1 + "" + matchCommon2); //$NON-NLS-1$
}
// "#", "." in the back
boolean match1 = ValidateUtil.matchCustomFormRegex(str + "."); //$NON-NLS-1$
assertFalse(match1);
}
@Test
public void testMatchSmartViewRegex() throws Exception {
PowerMockito.mockStatic(ValidateUtil.class);
PowerMockito.doCallRealMethod().when(ValidateUtil.class, "matchSmartViewRegex", Mockito.anyString());
Mockito.when(ValidateUtil.matchViewProcessRegex(Mockito.anyString())).thenReturn(true);
String smartViewProcess = "Smart_view_a";
boolean matchSmartViewRegex = ValidateUtil.matchSmartViewRegex(smartViewProcess);
assertTrue(matchSmartViewRegex);
PowerMockito.verifyStatic(Mockito.atLeastOnce());
ValidateUtil.matchViewProcessRegex(Mockito.anyString());
smartViewProcess = "Smart_view_a#b";
matchSmartViewRegex = ValidateUtil.matchSmartViewRegex(smartViewProcess);
assertTrue(matchSmartViewRegex);
PowerMockito.verifyStatic(Mockito.atLeastOnce());
ValidateUtil.matchViewProcessRegex(Mockito.anyString());
smartViewProcess = "Smart_view_a#b#c";
matchSmartViewRegex = ValidateUtil.matchSmartViewRegex(smartViewProcess);
assertFalse(matchSmartViewRegex);
PowerMockito.verifyStatic(Mockito.times(2));
ValidateUtil.matchViewProcessRegex(Mockito.anyString());
}
@Test
public void testMatchRoleRegex() {
// single char is all right
assertTrue(ValidateUtil.matchRoleRegex("a")); //$NON-NLS-1$
// this two char in this middle or front will be all right
String ss[] = { "#" };//$NON-NLS-1$
for (String s : ss) {
String validStr1 = str + s + "a";//$NON-NLS-1$
String validStr2 = s + "a";//$NON-NLS-1$
boolean match1 = ValidateUtil.matchRoleRegex(validStr1);
boolean match2 = ValidateUtil.matchRoleRegex(validStr2);
assertTrue(match1);
assertFalse(match2);
}
// invalid char in this middle or back
String sep[] = {
" ", "+", "-", ".", "*", "/", "\\", "(", ")", "[", "]", "{", "}", "|", "`", "~", "@", "$", "%", "^", "&", "*" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$//$NON-NLS-11$ //$NON-NLS-12$ //$NON-NLS-13$ //$NON-NLS-14$ //$NON-NLS-15$ //$NON-NLS-16$ //$NON-NLS-17$ //$NON-NLS-18$ //$NON-NLS-19$ //$NON-NLS-20$ //$NON-NLS-21$ //$NON-NLS-22$
for (String s : sep) {
String invalidStr1 = str + s + "a"; //$NON-NLS-1$
String invalidStr2 = str + s;
boolean matchCommon1 = ValidateUtil.matchRoleRegex(invalidStr1);
boolean matchCommon2 = ValidateUtil.matchRoleRegex(invalidStr2);
assertFalse(matchCommon1);
assertFalse(matchCommon2);
}
// "#" in the back
boolean match1 = ValidateUtil.matchRoleRegex(str + ss[0]);
assertFalse(match1);
}
}