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
;
}
}