package org.kefirsf.bb.proc; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.kefirsf.bb.UrlCollection; import static org.junit.Assert.*; /** * Tests for a URL processor pattern element. * * @author kefir */ @RunWith(Parameterized.class) public class ProcUrlTest extends AbstractProcUrlTest { @Parameterized.Parameters(name = "{0}") public static String[] urlCollection() { return UrlCollection.VALID; } @Parameterized.Parameter public String url; @Test public void testParse() throws NestingException { Source source = prepareSource(); Context context = new Context(); context.setSource(source); ProcUrl norm = new ProcUrl("a", false, false, false); ProcUrl ghost = new ProcUrl("b", true, false, false); assertFalse(norm.parse(context, null)); assertFalse(ghost.parse(context, null)); source.setOffset(PREFIX.length()); assertTrue(ghost.parse(context, null)); assertEquals(PREFIX.length(), source.getOffset()); assertTrue(norm.parse(context, null)); assertEquals(source.length() - SUFFIX.length(), source.getOffset()); } @Test public void testParseTerminator() throws NestingException { Context context = prepareContext(); Source source = context.getSource(); PatternConstant terminator = new PatternConstant(SUFFIX, false); ProcUrl norm = new ProcUrl("a", false, false, false); ProcUrl ghost = new ProcUrl("b", true, false, false); assertFalse(norm.parse(context, terminator)); assertFalse(ghost.parse(context, terminator)); source.setOffset(PREFIX.length()); assertTrue(ghost.parse(context, terminator)); assertEquals(PREFIX.length(), source.getOffset()); assertTrue(norm.parse(context, terminator)); assertEquals(source.length() - SUFFIX.length(), source.getOffset()); } @Test public void testIsNextIn() { Context context = prepareContext(); Source source = context.getSource(); ProcUrl element = new ProcUrl("a", false, false, false); assertFalse(element.isNextIn(context)); source.setOffset(PREFIX.length() - 1); assertFalse(element.isNextIn(context)); source.setOffset(PREFIX.length()); assertTrue(element.isNextIn(context)); source.setOffset(source.length() - SUFFIX.length()); assertFalse(element.isNextIn(context)); } @Test public void testFindIn() { Source source = prepareSource(); ProcUrl element = new ProcUrl("a", false, false, false); assertEquals(PREFIX.length(), element.findIn(source)); source.setOffset(PREFIX.length() - 1); assertEquals(PREFIX.length(), element.findIn(source)); source.setOffset(source.length() - SUFFIX.length()); assertEquals(-1, element.findIn(source)); } @Override protected String getValue() { return url; } }