/*******************************************************************************
* Copyright (c) 2008, 2009 QNX Software Systems and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* QNX Software Systems - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.utils;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
public class CommandLineUtilTest extends TestCase {
public static Test suite() {
return new TestSuite(CommandLineUtilTest.class);
}
private String[] parse(String line) {
return CommandLineUtil.argumentsToArrayUnixStyle(line);
}
private String[] parseWin(String line) {
return CommandLineUtil.argumentsToArrayWindowsStyle(line);
}
private String[] parseU(String line) {
return CommandLineUtil.argumentsToArray(line);
}
public void testArgumentsToArraySimple() {
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 = parse("A=B C");
assertEquals(2, args.length);
assertEquals("A=B", args[0]);
assertEquals("C", args[1]);
}
public void testArgumentsToArraySpaces2() {
// [ A=B C ]
String[] args = parse(" A=B C ");
assertEquals(2, args.length);
assertEquals("A=B", args[0]);
assertEquals("C", args[1]);
}
public void testArgumentsToArrayDoubleQuotes() {
// [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 = parse("Arg=\"\\\"quoted\\\"\"");
assertEquals(1, args.length);
assertEquals("Arg=\"quoted\"", args[0]);
}
public void testArgumentsToArraySingleQuotes() {
// [Arg='"quoted"']
String[] args = parse("Arg='\"quoted\"'");
assertEquals(1, args.length);
assertEquals("Arg=\"quoted\"", args[0]);
}
public void testArgumentsToArrayQuote() {
// [\"]
String[] args = parse("\\\"");
assertEquals(1, args.length);
assertEquals("\"", args[0]);
}
public void testArgumentsToArrayQuotSpaces() {
// [ \"]
String[] args = parse(" \\\"");
assertEquals(1, args.length);
assertEquals("\"", args[0]);
}
public void testArgumentsToArrayOnlySpaces() {
// [" "]
String[] args = parse("\" \"");
assertEquals(1, args.length);
assertEquals(" ", args[0]);
}
public void testArgumentsToArrayJumbledString() {
// ["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 = parse(" x \"a b\"-c");
assertEquals(2, args.length);
assertEquals("x", args[0]);
assertEquals("a b-c", args[1]);
}
public void testArgumentsToArrayJumbledSQ() {
// [x' 'x y]
String[] args = parse("x' 'x y");
assertEquals(2, args.length);
assertEquals("x x", args[0]);
assertEquals("y", args[1]);
}
public void testArgumentsToArrayEmptyString() {
// [""]
String[] args = parse("\"\"");
assertEquals(1, args.length);
assertEquals("", args[0]);
}
public void testArgumentsToArrayEmptyString2() {
// ['']
String[] args = parse("''");
assertEquals(1, args.length);
assertEquals("", args[0]);
}
public void testArgumentsToArrayEmpty3() {
// ['' a]
String[] args = parse("'' a");
assertEquals(2, args.length);
assertEquals("", args[0]);
assertEquals("a", args[1]);
}
public void testArgumentsToArrayQuot1() {
// ['"']
String[] args = parse("'\"'");
assertEquals(1, args.length);
assertEquals("\"", args[0]);
}
public void testArgumentsToArrayQuot2() {
// ["\""]
String[] args = parse("\"\\\"\"");
assertEquals(1, args.length);
assertEquals("\"", args[0]);
}
public void testArgumentsToArrayNull() {
// []
String[] args = parse(null);
assertEquals(0, args.length);
}
public void testArgumentsToArrayEmpty() {
// []
String[] args = parse("");
assertEquals(0, args.length);
}
public void testArgumentsToArrayEmptySpaces() {
// [ ]
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]);
}
public void testArgumentsToArraySimpleWin() {
String[] args = parseWin("A=B C");
assertEquals(2, args.length);
assertEquals("A=B", args[0]);
assertEquals("C", args[1]);
}
public void testArgumentsToArrayWindowsFiles() {
String[] args = parseWin("my\\file\\path");
assertEquals(1, args.length);
assertEquals("my\\file\\path", args[0]);
}
public void testArgumentsToArrayWindowsSpaces() {
String[] args = parseWin("\"my\\file\\path space\"");
assertEquals(1, args.length);
assertEquals("my\\file\\path space", args[0]);
}
public void testArgumentsToArrayWindowsEmpty() {
String[] args = parseWin("\"\"");
assertEquals(1, args.length);
assertEquals("", args[0]);
}
public void testArgumentsToArrayWindowsQuotes() {
String[] args = parseWin("\\\"a b\\\"");
assertEquals(2, args.length);
assertEquals("\"a", args[0]);
assertEquals("b\"", args[1]);
}
public void testArgumentsToArraySimpleUniversal() {
String[] args = parseU("A=B C D");
assertEquals(3, args.length);
assertEquals("A=B", args[0]);
assertEquals("C", args[1]);
assertEquals("D", args[2]);
}
}