diff options
Diffstat (limited to 'platform/util/testSrc/com/intellij/execution/configurations/CommandLineTokenizerTest.java')
-rw-r--r-- | platform/util/testSrc/com/intellij/execution/configurations/CommandLineTokenizerTest.java | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/platform/util/testSrc/com/intellij/execution/configurations/CommandLineTokenizerTest.java b/platform/util/testSrc/com/intellij/execution/configurations/CommandLineTokenizerTest.java new file mode 100644 index 000000000000..276ca549eb30 --- /dev/null +++ b/platform/util/testSrc/com/intellij/execution/configurations/CommandLineTokenizerTest.java @@ -0,0 +1,60 @@ +/* + * Copyright 2000-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.execution.configurations; + +import junit.framework.TestCase; + +public class CommandLineTokenizerTest extends TestCase { + public void testBasic() throws Exception { + assertTokens("a b", "a", "b"); + assertTokens("\"a b\"", "a b"); + assertTokens("a\" b\"", "a b"); + assertTokens("\"a b", "a b"); + assertTokens("a b\"", "a", "b"); + assertTokens("a b\" c", "a", "b c"); + assertTokens("\"a b\" c \"d e\"", "a b", "c", "d e"); + } + + public void testEscape() throws Exception { + assertTokens("a\\ b", true, "a b"); + assertTokens("a\\ b", false, "a\\", "b"); + + assertTokens("\"a\\ b\"", true, "a\\ b"); + assertTokens("\"a\\ b\"", false, "a\\ b"); + + assertTokens("a\\ ", true, "a "); + assertTokens("a\\ ", false, "a\\"); + + assertTokens("\\\"", "\""); + assertTokens("\"\\\" a \\\"\"", "\" a \""); + assertTokens("\\\"a b\\\"", "\"a", "b\""); + assertTokens("\\\"a\\ b\\\"", true, "\"a b\""); + assertTokens("\\\"a\\ b\\\"", false, "\"a\\", "b\""); + } + + private static void assertTokens(String cmd, String... tokens) { + assertTokens(cmd, false, tokens); + } + + private static void assertTokens(String cmd, boolean handleEscapedWhitespaces, String... tokens) { + CommandLineTokenizer tokenizer = new CommandLineTokenizer(cmd, handleEscapedWhitespaces); + + assertEquals(tokens.length, tokenizer.countTokens()); + for (String token : tokens) { + assertEquals(token, tokenizer.nextToken()); + } + } +} |