package net.bitpot.railways.parser.route; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import java.util.Arrays; import java.util.Collection; import java.util.List; import static org.junit.Assert.assertEquals; /** * @author Basil Gren * on 09.12.2014. */ @RunWith(Parameterized.class) public class RouteActionParseTest { private String myActionStr; private RouteActionChunk[] expectedChunks; public RouteActionParseTest(String routeStr, RouteActionChunk[] chunks) { myActionStr = routeStr; expectedChunks = chunks; } @Parameterized.Parameters public static Collection<Object[]> createParseLineData() { return Arrays.asList(new Object[][]{ {"api/users#edit", new RouteActionChunk[]{ chunkContainer("api/users#"), chunkAction("edit")} }, {"api/users", new RouteActionChunk[]{ chunkContainer("api/users")} }, {"", new RouteActionChunk[] {}} }); } private static RouteActionChunk chunkContainer(String text) { return new RouteActionChunk(text, RouteActionChunk.CONTAINER, 0); } private static RouteActionChunk chunkAction(String text) { return new RouteActionChunk(text, RouteActionChunk.ACTION, 0); } @Test public void testParseRoute() { List<TextChunk> chunks = RouteActionParser.getInstance() .parse(myActionStr); assertEquals("Chunk lists have the same length", expectedChunks.length, chunks.size()); for(int i = 0; i < chunks.size(); i++) { TextChunk expectedChunk = expectedChunks[i]; TextChunk chunk = chunks.get(i); assertEquals("Chunk types are the same", expectedChunk.getType(), chunk.getType()); assertEquals("Chunk text is the same", expectedChunk.getText(), chunk.getText()); } } }