1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

[223695] - updated to add more cases

This commit is contained in:
Alena Laskavaia 2008-11-04 18:57:00 +00:00
parent e7b542359a
commit 37ec649c07
2 changed files with 63 additions and 45 deletions

View file

@ -9,17 +9,22 @@ public class CommandLineUtilTest extends TestCase {
public static Test suite() {
return new TestSuite(CommandLineUtilTest.class);
}
private String[] parse(String line) {
return CommandLineUtil.argumentsToArray(line);
}
public void testArgumentsToArraySimple() {
// [A=B C]
String[] args = CommandLineUtil.argumentsToArray("A=B C");
String[] args = parse("A=B C");
assertEquals(2, args.length);
assertEquals("A=B", args[0]);
assertEquals("C", args[1]);
}
public void testArgumentsToArraySpaces() {
// [A=B C]
String[] args = CommandLineUtil.argumentsToArray("A=B C");
String[] args = parse("A=B C");
assertEquals(2, args.length);
assertEquals("A=B", args[0]);
assertEquals("C", args[1]);
@ -27,7 +32,7 @@ public class CommandLineUtilTest extends TestCase {
public void testArgumentsToArraySpaces2() {
// [ A=B C ]
String[] args = CommandLineUtil.argumentsToArray(" A=B C ");
String[] args = parse(" A=B C ");
assertEquals(2, args.length);
assertEquals("A=B", args[0]);
assertEquals("C", args[1]);
@ -35,56 +40,56 @@ public class CommandLineUtilTest extends TestCase {
public void testArgumentsToArrayDoubleQuotes() {
// [Arg="a b c"]
String[] args = CommandLineUtil.argumentsToArray("Arg=\"a b c\"");
String[] args = parse("Arg=\"a b c\"");
assertEquals(1, args.length);
assertEquals("Arg=a b c", args[0]);
}
public void testArgumentsToArrayDoubleQuotes2() {
// [Arg="\"quoted\""]
String[] args = CommandLineUtil.argumentsToArray("Arg=\"\\\"quoted\\\"\"");
String[] args = parse("Arg=\"\\\"quoted\\\"\"");
assertEquals(1, args.length);
assertEquals("Arg=\"quoted\"", args[0]);
}
public void testArgumentsToArraySingleQuotes() {
// [Arg='"quoted"']
String[] args = CommandLineUtil.argumentsToArray("Arg='\"quoted\"'");
String[] args = parse("Arg='\"quoted\"'");
assertEquals(1, args.length);
assertEquals("Arg=\"quoted\"", args[0]);
}
public void testArgumentsToArrayQuote() {
// [\"]
String[] args = CommandLineUtil.argumentsToArray("\\\"");
String[] args = parse("\\\"");
assertEquals(1, args.length);
assertEquals("\"", args[0]);
}
public void testArgumentsToArrayQuotSpaces() {
// [ \"]
String[] args = CommandLineUtil.argumentsToArray(" \\\"");
String[] args = parse(" \\\"");
assertEquals(1, args.length);
assertEquals("\"", args[0]);
}
public void testArgumentsToArrayOnlySpaces() {
// [" "]
String[] args = CommandLineUtil.argumentsToArray("\" \"");
String[] args = parse("\" \"");
assertEquals(1, args.length);
assertEquals(" ", args[0]);
}
public void testArgumentsToArrayJumbledString() {
// ["a b"-c]
String[] args = CommandLineUtil.argumentsToArray("\"a b\"-c");
String[] args = parse("\"a b\"-c");
assertEquals(1, args.length);
assertEquals("a b-c", args[0]);
}
public void testArgumentsToArrayJumbledString2() {
// [x "a b"-c]
String[] args = CommandLineUtil.argumentsToArray(" x \"a b\"-c");
String[] args = parse(" x \"a b\"-c");
assertEquals(2, args.length);
assertEquals("x", args[0]);
assertEquals("a b-c", args[1]);
@ -92,7 +97,7 @@ public class CommandLineUtilTest extends TestCase {
public void testArgumentsToArrayJumbledSQ() {
// [x' 'x y]
String[] args = CommandLineUtil.argumentsToArray("x' 'x y");
String[] args = parse("x' 'x y");
assertEquals(2, args.length);
assertEquals("x x", args[0]);
assertEquals("y", args[1]);
@ -100,21 +105,21 @@ public class CommandLineUtilTest extends TestCase {
public void testArgumentsToArrayEmptyString() {
// [""]
String[] args = CommandLineUtil.argumentsToArray("\"\"");
String[] args = parse("\"\"");
assertEquals(1, args.length);
assertEquals("", args[0]);
}
public void testArgumentsToArrayEmptyString2() {
// ['']
String[] args = CommandLineUtil.argumentsToArray("''");
String[] args = parse("''");
assertEquals(1, args.length);
assertEquals("", args[0]);
}
public void testArgumentsToArrayEmpty3() {
// ['' a]
String[] args = CommandLineUtil.argumentsToArray("'' a");
String[] args = parse("'' a");
assertEquals(2, args.length);
assertEquals("", args[0]);
assertEquals("a", args[1]);
@ -122,31 +127,43 @@ public class CommandLineUtilTest extends TestCase {
public void testArgumentsToArrayQuot1() {
// ['"']
String[] args = CommandLineUtil.argumentsToArray("'\"'");
String[] args = parse("'\"'");
assertEquals(1, args.length);
assertEquals("\"", args[0]);
}
public void testArgumentsToArrayQuot2() {
// ["\""]
String[] args = CommandLineUtil.argumentsToArray("\"\\\"\"");
String[] args = parse("\"\\\"\"");
assertEquals(1, args.length);
assertEquals("\"", args[0]);
}
public void testArgumentsToArrayNull() {
// []
String[] args = CommandLineUtil.argumentsToArray(null);
String[] args = parse(null);
assertEquals(0, args.length);
}
public void testArgumentsToArrayEmpty() {
// []
String[] args = CommandLineUtil.argumentsToArray("");
String[] args = parse("");
assertEquals(0, args.length);
}
public void testArgumentsToArrayEmptySpaces() {
// [ ]
String[] args = CommandLineUtil.argumentsToArray(" ");
String[] args = parse(" ");
assertEquals(0, args.length);
}
public void testArgumentsToArrayTabs() {
// [a b]
String[] args = parse("a \tb");
assertEquals(2, args.length);
assertEquals("a", args[0]);
}
public void testArgumentsToArrayNL() {
// ["a\nb"]
String[] args = parse("\"a\\nb\"");
assertEquals(1, args.length);
assertEquals("a\nb", args[0]);
}
}

View file

@ -39,32 +39,34 @@ public class CommandLineUtil {
int state = INITIAL;
for (int i = 0; i < array.length; i++) {
char c = array[i];
switch (state) {
case IN_ARG:
// fall through
case INITIAL:
switch (c) {
case ' ':
if (state == INITIAL) break; // ignore extra spaces
// add argument
state = INITIAL;
String arg = buffer.toString();
buffer = new StringBuilder();
aList.add(arg);
break;
case '\\':
state = ESCAPED;
break;
case '\'':
state = IN_SINGLE_QUOTES;
break;
case '\"':
state = IN_DOUBLE_QUOTES;
break;
default:
state = IN_ARG;
buffer.append(c);
break;
if (Character.isWhitespace(c)) {
if (state == INITIAL) break; // ignore extra spaces
// add argument
state = INITIAL;
String arg = buffer.toString();
buffer = new StringBuilder();
aList.add(arg);
} else {
switch (c) {
case '\\':
state = ESCAPED;
break;
case '\'':
state = IN_SINGLE_QUOTES;
break;
case '\"':
state = IN_DOUBLE_QUOTES;
break;
default:
state = IN_ARG;
buffer.append(c);
break;
}
}
break;
case IN_DOUBLE_QUOTES:
@ -97,7 +99,7 @@ public class CommandLineUtil {
buffer.append(c);
break;
case 'n':
buffer.append('\n');
buffer.append("\n"); //$NON-NLS-1$
break;
default:
buffer.append('\\');
@ -118,5 +120,4 @@ public class CommandLineUtil {
}
return aList.toArray(new String[aList.size()]);
}
}