All Downloads are FREE. Search and download functionalities are using the official Maven repository.

util.CommandLineTest Maven / Gradle / Ivy

There is a newer version: 20240707
Show newest version
// Copyright (C) 2003-2009 by Object Mentor, Inc. All rights reserved.
// Released under the terms of the CPL Common Public License version 1.0.
package util;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;

import org.junit.Test;

public class CommandLineTest {
  private CommandLine options;

  @Test
  public void testSimpleParsing() throws Exception {
    assertTrue(createOptionsAndParse("", ""));
    assertFalse(createOptionsAndParse("", "blah"));
  }

  @Test
  public void testOneRequiredArgument() throws Exception {
    assertFalse(createOptionsAndParse("arg1", ""));

    assertTrue(createOptionsAndParse("arg1", "blah"));
    assertEquals("blah", options.getArgument("arg1"));
  }

  @Test
  public void testThreeRequiredArguments() throws Exception {
    assertTrue(createOptionsAndParse("arg1 arg2 arg3", "tic tac toe"));
    assertEquals("tic", options.getArgument("arg1"));
    assertEquals("tac", options.getArgument("arg2"));
    assertEquals("toe", options.getArgument("arg3"));
  }

  @Test
  public void testOneSimpleOption() throws Exception {
    assertTrue(createOptionsAndParse("[-opt1]", ""));
    assertFalse(options.hasOption("opt1"));
    assertTrue(createOptionsAndParse("[-opt1]", "-opt1"));
    assertTrue(options.hasOption("opt1"));
  }

  @Test
  public void testOptionWithArgument() throws Exception {
    assertFalse(createOptionsAndParse("[-opt1 arg]", "-opt1"));

    assertTrue(createOptionsAndParse("[-opt1 arg]", "-opt1 blah"));
    assertTrue(options.hasOption("opt1"));
    String argument = options.getOptionArgument("opt1", "arg");
    assertNotNull(argument);
    assertEquals("blah", argument);
  }

  @Test
  public void testMultipleOptions(){
    options = new CommandLine("[-opt1 arg]");
    String[] args = new Option().split("-opt1 blah");
    assertTrue(options.parse(args));
    options.hasOption("opt1");
    assertEquals("blah", options.getOptionArgument("opt1", "arg"));
  }

  @Test
  public void testInvalidOption() throws Exception {
    assertFalse(createOptionsAndParse("", "-badArg"));
  }

  @Test
  public void testCombo() throws Exception {
    String descriptor = "[-opt1 arg1 arg2] [-opt2 arg1] [-opt3] arg1 arg2";

    assertFalse(createOptionsAndParse(descriptor, ""));
    assertFalse(createOptionsAndParse(descriptor, "a"));
    assertFalse(createOptionsAndParse(descriptor, "-opt1 a b c"));
    assertFalse(createOptionsAndParse(descriptor, "-opt2 a b"));
    assertFalse(createOptionsAndParse(descriptor, "-opt2 -opt3 a b"));
    assertFalse(createOptionsAndParse(descriptor, "-opt1 a -opt2 b -opt3 c d"));
    assertFalse(createOptionsAndParse(descriptor, "-opt1 a b -opt2 c -opt3 d e f"));

    assertTrue(createOptionsAndParse(descriptor, "a b"));
    assertTrue(createOptionsAndParse(descriptor, "-opt3 a b"));
    assertTrue(createOptionsAndParse(descriptor, "-opt2 a b c"));
    assertTrue(createOptionsAndParse(descriptor, "-opt1 a b c d"));
    assertTrue(createOptionsAndParse(descriptor, "-opt1 a b -opt2 c d e"));

    assertTrue(createOptionsAndParse(descriptor, "-opt1 a b -opt2 c -opt3 d e"));
    assertTrue(options.hasOption("opt1"));
    assertEquals("a", options.getOptionArgument("opt1", "arg1"));
    assertEquals("b", options.getOptionArgument("opt1", "arg2"));
    assertTrue(options.hasOption("opt2"));
    assertEquals("c", options.getOptionArgument("opt2", "arg1"));
    assertTrue(options.hasOption("opt3"));
    assertEquals("d", options.getArgument("arg1"));
    assertEquals("e", options.getArgument("arg2"));
  }

  private boolean createOptionsAndParse(String validOptions, String enteredOptions) {
    options = new CommandLine(validOptions);
    String[] args = new Option().split(enteredOptions);
    return options.parse(args);
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy