package de.neuland.jade4j.util;
import org.junit.Test;
import java.util.List;
import static de.neuland.jade4j.util.ArgumentSplitter.split;
import static org.junit.Assert.assertEquals;
/**
* @author dusan.zatkovsky, 2/9/15
*/
public class ArgumentSplitterTest {
private List<String> parameters;
@Test
public void testSplit() throws Exception {
List<String> args;
args = split("foo.faa('this is arg1'),'this is arg2'");
assertEquals(args.size(), 2);
assertEquals("foo.faa('this is arg1')", args.get(0));
assertEquals("'this is arg2'", args.get(1));
args = split("foo.faa ( 'this is arg1'), 'this is arg2'");
assertEquals(args.size(), 2);
assertEquals("foo.faa ( 'this is arg1')", args.get(0));
assertEquals("'this is arg2'", args.get(1));
args = split("foo.faa(\"this is arg1\"),\"this is arg2\"");
assertEquals(args.size(), 2);
assertEquals("foo.faa(\"this is arg1\")", args.get(0));
assertEquals("\"this is arg2\"", args.get(1));
args = split("foo.faa ( \"this is arg1\" ) , \"this is arg2\" ");
assertEquals(args.size(), 2);
assertEquals("foo.faa ( \"this is arg1\" )", args.get(0));
assertEquals("\"this is arg2\"", args.get(1));
args = split("1");
assertEquals(args.size(), 1);
assertEquals("1", args.get(0));
args = split("1,2,3");
assertEquals(args.size(), 3);
assertEquals("1", args.get(0));
assertEquals("2", args.get(1));
assertEquals("3", args.get(2));
args = split("1 , 2, 3");
assertEquals(args.size(), 3);
assertEquals("1", args.get(0));
assertEquals("2", args.get(1));
assertEquals("3", args.get(2));
args = split("1 , '2', 3");
assertEquals(args.size(), 3);
assertEquals("1", args.get(0));
assertEquals("'2'", args.get(1));
assertEquals("3", args.get(2));
args = split("'1' , '2', '3'");
assertEquals(args.size(), 3);
assertEquals("'1'", args.get(0));
assertEquals("'2'", args.get(1));
assertEquals("'3'", args.get(2));
args = split("bar(bazz, 'ba(z,z)'), 123");
assertEquals(args.size(), 2);
assertEquals("bar(bazz, 'ba(z,z)')", args.get(0));
assertEquals("123", args.get(1));
args = split("'aaa', bar(bazz, foo('ba(z,z)')), 123");
assertEquals(args.size(), 3);
assertEquals("'aaa'", args.get(0));
assertEquals("bar(bazz, foo('ba(z,z)'))", args.get(1));
assertEquals("123", args.get(2));
args = split("123, '1,2,3', \"a,b,c\"");
assertEquals(args.size(), 3);
assertEquals("123", args.get(0));
assertEquals("'1,2,3'", args.get(1));
assertEquals("\"a,b,c\"", args.get(2));
}
@Test
public void shouldRecognizeNumberOfParametersWhenUsingDoubleQuotesAndSingleQuotes() throws Exception {
whenSplitting("\"bla\",'blub',\"boo, hoo\"");
thenNumberOfParametersShouldBe(3);
}
@Test
public void shouldRecognizeDoubleQuotedParameterWhenUsingDoubleQuotesAndSingleQuotes() throws Exception {
whenSplitting("\"bla\",'blub',\"boo, hoo\"");
thenParametersAtIndexShouldBe(0, "\"bla\"");
}
@Test
public void shouldRecognizeSingleQuotedParametersWhenUsingDoubleQuotesAndSingleQuotes() throws Exception {
whenSplitting("\"bla\",'blub',\"boo, hoo\"");
thenParametersAtIndexShouldBe(1, "'blub'");
}
private void whenSplitting(String parameterStringToSplit) {
parameters = split(parameterStringToSplit);
}
private void thenNumberOfParametersShouldBe(int expectedNumberOfParameters) {
assertEquals(expectedNumberOfParameters, parameters.size());
}
private void thenParametersAtIndexShouldBe(int index, String expectedParameter) {
assertEquals(expectedParameter, parameters.get(index));
}
}