/******************************************************************************* * Copyright 2017 Ivan Shubin http://galenframework.com * * 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.galenframework.tests.parser; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.is; import com.galenframework.parser.CommandLineParser; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; public class CommandLineParserTest { @Test(dataProvider="provideCommandLineSamples") public void shouldParse_commandLineToArguments(String text, String[] expectedArguments) { String[] arguments = CommandLineParser.parseCommandLine(text); assertThat(arguments, is(expectedArguments)); } @DataProvider public Object[][] provideCommandLineSamples() { return new Object[][]{ test("script -v 1 --data qwer --data \"\" -\\ \"qw er rt \"", args("script", "-v", "1", "--data", "qwer", "--data", "", "-\\", "qw er rt ")), test("script -v 1 --data qwer --data '' -\\ 'qw er rt '", args("script", "-v", "1", "--data", "qwer", "--data", "", "-\\", "qw er rt ")), test(" script -v 1 ", args("script", "-v", "1")), test("\"hello\" world", args("hello", "world")), test("script \"\\\"Hi \\\\ \\\"\"", args("script", "\"Hi \\ \"")), test("script '\\\'Hi \\\\ \\\''", args("script", "'Hi \\ '")), test("\"hello\\", args("hello\\")), test("\"hello\\nworld\\t\"", args("hello\nworld\t")), test("\"hello ' world\"", args("hello ' world")), test("'hello \" world'", args("hello \" world")), test("'hello \"' 'world'", args("hello \"", "world")) }; } private Object[] test(Object...args) { return args; } private String[] args(String...args) { return args; } }