/* * Cobertura - http://cobertura.sourceforge.net/ * * Copyright (C) 2005 Grzegorz Lukasik * * Note: This file is dual licensed under the GPL and the Apache * Source License (so that it can be used from both the main * Cobertura classes and the ant tasks). * * Cobertura is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published * by the Free Software Foundation; either version 2 of the License, * or (at your option) any later version. * * Cobertura is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Cobertura; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * USA */ package net.sourceforge.cobertura.util; import java.io.File; import java.io.IOException; import junit.framework.TestCase; /** * @author Grzegorz Lukasik */ public class CommandLineBuilderTest extends TestCase { private String[] testArguments( String[] args) throws Exception { CommandLineBuilder builder = new CommandLineBuilder(); for( int i=0; i<args.length; i++) builder.addArg( args[i]); builder.saveArgs(); File cmdFile = new File(builder.getCommandLineFile()); assertTrue( cmdFile.isAbsolute()); assertTrue( cmdFile.isFile()); String[] result = CommandLineBuilder.preprocessCommandLineArguments( new String[] { "--commandsfile", builder.getCommandLineFile()}); builder.dispose(); return result; } public void testExample() throws Exception { CommandLineBuilder builder = new CommandLineBuilder(); builder.addArg("--someoption"); builder.addArg("optionValue"); builder.saveArgs(); String[] args = CommandLineBuilder.preprocessCommandLineArguments( new String[] { "--commandsfile", builder.getCommandLineFile()}); assertEquals( "--someoption", args[0]); assertEquals( "optionValue", args[1]); builder.dispose(); } public void testExample_2() throws Exception { CommandLineBuilder builder = new CommandLineBuilder(); builder.addArg("--someoption", "optionValue"); builder.saveArgs(); String[] args = CommandLineBuilder.preprocessCommandLineArguments( new String[] { "--commandsfile", builder.getCommandLineFile()}); assertEquals( "--someoption", args[0]); assertEquals( "optionValue", args[1]); builder.dispose(); } private void assertEquals(String[] first, String[] second) { assertEquals(first.length, second.length); for (int i = 0; i < first.length; i++) { assertEquals(first[i], second[i]); } } public void testManyOptions() throws Exception { String[] options = new String[100000]; for( int i=0; i<options.length; i++) { options[i] = "myOption" + i; } String[] args = testArguments( options); assertEquals( options, args); } public void testVariousOptions() throws Exception { String[] options = { "hello", " one", "two ", " three , ", "\"'xx", " ", "file .java", "f.java", "#@()39340*(@0$#&%^@#&4098353856_*(_@735/896_udsknbfdvzxvkasd DSFWBXfqw']][.,=---3\\]];", "null", "!@#$%^&*()_+-={}|[]\\:\";'<>?,./'" }; String[] args = testArguments( options); assertEquals( options, args); } public void testEmptyOptions() throws Exception { String[] args = testArguments( new String[0]); assertEquals( new String[0], args); } public void testInvalidArguments() throws Exception { CommandLineBuilder builder = new CommandLineBuilder(); try { builder.addArg(null); fail( "NullPointerException expected"); } catch( NullPointerException ex) {} try { builder.addArg( "someArgument", null); fail( "NullPointerException expected"); } catch( NullPointerException ex) {} try { builder.addArg( null, "someValue"); fail( "NullPointerException expected"); } catch( NullPointerException ex) {} try { CommandLineBuilder.preprocessCommandLineArguments(null); fail( "NullPointerException expected"); } catch( NullPointerException ex) {} try { CommandLineBuilder.preprocessCommandLineArguments(new String[] { "Hello", null }); fail( "NullPointerException expected"); } catch( NullPointerException ex) {} try { CommandLineBuilder.preprocessCommandLineArguments(new String[] { "--commandsfile", "hello", null }); fail( "NullPointerException expected"); } catch( NullPointerException ex) {} } public void testCommandsFileOption() throws Exception { String[] args = { "Hello", "world" }; String[] result = CommandLineBuilder.preprocessCommandLineArguments( args); assertSame( args, result); try { args = new String[]{ "Hello", "--commandsfile" }; CommandLineBuilder.preprocessCommandLineArguments( args); fail( "IllegalArgumentException expected"); } catch( IllegalArgumentException ex) {} try { args = new String[]{ "Hello", "--commandsfile", "hello.cmd" }; CommandLineBuilder.preprocessCommandLineArguments( args); fail( "IO Exception expected"); } catch( IOException ex) {} } }