package org.test4j.junit.filter.finder;
import java.util.List;
import mockit.Mock;
import org.junit.Test;
import org.test4j.junit.Test4J;
import org.test4j.junit.annotations.DataFrom;
public class FilterCondictionTest extends Test4J {
@Test
@DataFrom("dataForFilterPatterns")
public void testSetFilterPatterns(String[] patterns, String[] positionPatterns, String[] negationPatterns)
throws Exception {
FilterCondiction filter = reflector.newInstance(FilterCondiction.class);
new MockUp<FilterCondiction>() {
/**
* 这里不测试正则表达式的转换,表达式转换另测
*
* @param input
* @return
*/
@Mock
public String convertToRegular(String input) {
return input;
}
};
reflector.invoke(filter, "setFilterPatterns", new Object[] { patterns });
List<String> position = filter.getPositiveFilters();
List<String> negation = filter.getNegationFilters();
want.list(position).reflectionEq(positionPatterns);
want.list(negation).reflectionEq(negationPatterns);
}
public static DataIterator dataForFilterPatterns() {
return new DataIterator() {
{
data(null, new String[] {}, new String[] {});
data(new String[] { "a", "!b" }, new String[] { "a" }, new String[] { "b" });
data(new String[] { " ", " ! " }, new String[] {}, new String[] {});
data(new String[] { " a ", " ! b " }, new String[] { "a" }, new String[] { "b" });
data(new String[] { null, "!c.b.a", "a.b.c", " " }, new String[] { "a.b.c" },
new String[] { "c.b.a" });
}
};
}
@Test
@DataFrom("dataForConvertToRegular")
public void testConvertToRegular(String input, String pattern) throws Exception {
FilterCondiction filter = reflector.newInstance(FilterCondiction.class);
String result = reflector.invoke(filter, "convertToRegular", new Object[] { input });
want.string(result).isEqualTo(pattern);
}
public static DataIterator dataForConvertToRegular() {
return new DataIterator() {
{
data("", ".*");
data(null, ".*");
data("a.b.c", "a\\.b\\.c");
data("a*", "a.*");
data("a?", "a.");
}
};
}
@Test
public void testFilterPattern() throws Exception {
boolean matched = "a.b.cTest".matches("\\..*Test");
want.bool(matched).isEqualTo(false);
matched = "a.b.cTest".matches("b");
want.bool(matched).isEqualTo(false);
matched = "ppp.MyTest".matches("\\..*Test");
want.bool(matched).isEqualTo(false);
}
}