package uk.me.parabola.mkgmap.osmstyle.actions;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import org.junit.Test;
import uk.me.parabola.mkgmap.reader.osm.Element;
import uk.me.parabola.mkgmap.reader.osm.Way;
import uk.me.parabola.mkgmap.scan.SyntaxException;
/**
* @author Maxim Duester
*
*/
public class NotContainedFilterTest {
@Test(expected = SyntaxException.class)
public void testNoArg() {
NotContainedFilter filter = new NotContainedFilter("");
filter.doFilter("x", null);
}
@Test(expected = SyntaxException.class)
public void testOneArg() {
NotContainedFilter filter = new NotContainedFilter(";");
filter.doFilter("x", null);
}
@Test(expected = SyntaxException.class)
public void test2ndArgMissing() {
NotContainedFilter filter = new NotContainedFilter(":");
filter.doFilter("x", null);
}
@Test
public void test2ndArgNotContained() {
NotContainedFilter filter = new NotContainedFilter(";:ref");
Element el = stdElement();
String s = filter.doFilter("aa", el);
assertEquals(s, "aa");
}
@Test
public void test2ndArgContained() {
NotContainedFilter filter = new NotContainedFilter(":ref");
Element el = stdElement();
String s = filter.doFilter("x", el);
assertNull(s);
}
@Test
public void testNonDefaultDelimiterNotContained() {
NotContainedFilter filter = new NotContainedFilter("#:ref");
Element el = stdElement();
String s = filter.doFilter("x", el);
assertEquals(s, "x");
}
@Test
public void testNonDefaultDelimiterContained() {
NotContainedFilter filter = new NotContainedFilter("#:test");
Element el = stdElement();
el.addTag("test", "Aa#Bb#Cc#Dd");
String s = filter.doFilter("Cc", el);
assertNull(s);
}
@Test
public void testMissingTag(){
NotContainedFilter filter=new NotContainedFilter(":sometag");
Element el = stdElement();
String s=filter.doFilter("x", el);
assertEquals(s, "x");
}
private Element stdElement() {
Element el1 = new Way(1);
el1.addTag("ref", "x;y;z");
return el1;
}
}