unit test & comments

This commit is contained in:
earayu 2018-09-21 19:41:52 +08:00
parent 1f469f6020
commit 700c0cb441
8 changed files with 133 additions and 2 deletions

View File

@ -5,6 +5,11 @@ package com.taobao.arthas.core.util.matcher;
*/
public class FalseMatcher<T> implements Matcher<T> {
/**
* always return false
* @param target
* @return true/false
*/
@Override
public boolean matching(T target) {
return false;

View File

@ -1,7 +1,7 @@
package com.taobao.arthas.core.util.matcher;
/**
* 正则表达式匹配
* regex matcher
* @author ralf0131 2017-01-06 13:16.
*/
public class RegexMatcher implements Matcher<String> {

View File

@ -5,6 +5,11 @@ package com.taobao.arthas.core.util.matcher;
*/
public final class TrueMatcher<T> implements Matcher<T> {
/**
* always return true
* @param target
* @return
*/
@Override
public boolean matching(T target) {
return true;

View File

@ -1,7 +1,7 @@
package com.taobao.arthas.core.util.matcher;
/**
* 通配符表达式匹配
* wildcard matcher
* @author ralf0131 2017-01-06 13:17.
*/
public class WildcardMatcher implements Matcher<String> {

View File

@ -0,0 +1,20 @@
package com.taobao.arthas.core.util.matcher;
import org.junit.Assert;
import org.junit.Test;
/**
* @author earayu
*/
public class EqualsMatcherTest {
@Test
public void testMatching(){
Assert.assertTrue(new EqualsMatcher<String>(null).matching(null));
Assert.assertTrue(new EqualsMatcher<String>("").matching(""));
Assert.assertTrue(new EqualsMatcher<String>("foobar").matching("foobar"));
Assert.assertFalse(new EqualsMatcher<String>("").matching(null));
Assert.assertFalse(new EqualsMatcher<String>("abc").matching("def"));
}
}

View File

@ -0,0 +1,19 @@
package com.taobao.arthas.core.util.matcher;
import org.junit.Assert;
import org.junit.Test;
/**
* @author earayu
*/
public class FalseMatcherTest {
@Test
public void testMatching(){
Assert.assertFalse(new FalseMatcher<String>().matching(null));
Assert.assertFalse(new FalseMatcher<Integer>().matching(1));
Assert.assertFalse(new FalseMatcher<String>().matching(""));
Assert.assertFalse(new FalseMatcher<String>().matching("foobar"));
}
}

View File

@ -0,0 +1,63 @@
package com.taobao.arthas.core.util.matcher;
import org.junit.Assert;
import org.junit.Test;
/**
* @author earayu
*/
public class RegexMatcherTest {
@Test
public void testMatchingWithNullInputs(){
Assert.assertFalse(new RegexMatcher(null).matching(null));
Assert.assertFalse(new RegexMatcher(null).matching("foobar"));
Assert.assertFalse(new RegexMatcher("foobar").matching(null));
Assert.assertTrue(new RegexMatcher("foobar").matching("foobar"));
}
/**
* test regux with . | * + ? \s \S \w \W and so on...
*/
@Test
public void testMatchingWithRegularGrammar(){
Assert.assertTrue(new RegexMatcher("foo?").matching("fo"));
Assert.assertTrue(new RegexMatcher("foo?").matching("foo"));
Assert.assertTrue(new RegexMatcher("foo.").matching("fooo"));
Assert.assertTrue(new RegexMatcher("foo*").matching("fooooo"));
Assert.assertTrue(new RegexMatcher("foo.*").matching("foobarbarbar"));
Assert.assertFalse(new RegexMatcher("foo+").matching("fo"));
Assert.assertTrue(new RegexMatcher("foo+").matching("fooooo"));
Assert.assertTrue(new RegexMatcher("foo\\s").matching("foo "));
Assert.assertFalse(new RegexMatcher("foo\\S").matching("foo "));
Assert.assertTrue(new RegexMatcher("foo\\w").matching("fooo"));
Assert.assertTrue(new RegexMatcher("foo\\W").matching("foo "));
Assert.assertFalse(new RegexMatcher("foo\\W").matching("fooo"));
Assert.assertTrue(new RegexMatcher("foo[1234]").matching("foo1"));
Assert.assertFalse(new RegexMatcher("foo[1234]").matching("foo5"));
Assert.assertTrue(new RegexMatcher("foo\\\\").matching("foo\\"));
Assert.assertTrue(new RegexMatcher("foo\\d").matching("foo5"));
Assert.assertTrue(new RegexMatcher("fo{1,3}").matching("fo"));
Assert.assertFalse(new RegexMatcher("fo{1,3}").matching("foooo"));
}
@Test
public void testMatchingComplexRegex(){
String ipAddressPattern = "((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)";
Assert.assertTrue(new RegexMatcher(ipAddressPattern).matching("1.1.1.1"));
Assert.assertFalse(new RegexMatcher(ipAddressPattern).matching("255.256.255.0"));
Assert.assertFalse(new RegexMatcher(ipAddressPattern).matching("1.1.1"));
Assert.assertTrue(new RegexMatcher("^foobar$").matching("foobar"));
Assert.assertFalse(new RegexMatcher("^foobar$").matching("\nfoobar"));
Assert.assertFalse(new RegexMatcher("^foobar$").matching("foobar\n"));
String emailAddressPattern = "[a-z\\d]+(\\.[a-z\\d]+)*@([\\da-z](-[\\da-z])?)+(\\.{1,2}[a-z]+)+";
Assert.assertTrue(new RegexMatcher(emailAddressPattern).matching("foo@bar.com"));
Assert.assertFalse(new RegexMatcher(emailAddressPattern).matching("asdfghjkl"));
}
}

View File

@ -0,0 +1,19 @@
package com.taobao.arthas.core.util.matcher;
import org.junit.Assert;
import org.junit.Test;
/**
* @author earayu
*/
public class TrueMatcherTest {
@Test
public void testMatching(){
Assert.assertTrue(new TrueMatcher<String>().matching(null));
Assert.assertTrue(new TrueMatcher<Integer>().matching(1));
Assert.assertTrue(new TrueMatcher<String>().matching(""));
Assert.assertTrue(new TrueMatcher<String>().matching("foobar"));
}
}