// This software is released into the Public Domain. See copying.txt for details.
package org.openstreetmap.osmosis.core.cli;
import java.util.Arrays;
import java.util.logging.Level;
import org.junit.Assert;
import org.junit.Test;
import org.openstreetmap.osmosis.core.LogLevels;
import org.openstreetmap.osmosis.core.OsmosisRuntimeException;
/**
* Tests the CommandLineParser class.
*
* @author Brett Henderson
*/
public class CommandLineParserTest {
/**
* Validates the quiet option.
*/
@Test
public void testQuietOption() {
CommandLineParser commandLineParser;
commandLineParser = new CommandLineParser();
commandLineParser.parse(new String [] {});
Assert.assertEquals("Incorrect default log level.", Level.INFO,
LogLevels.getLogLevel(commandLineParser.getLogLevelIndex()));
commandLineParser = new CommandLineParser();
commandLineParser.parse(new String [] {"-q"});
Assert.assertEquals("Incorrect quiet log level.", Level.WARNING,
LogLevels.getLogLevel(commandLineParser.getLogLevelIndex()));
commandLineParser = new CommandLineParser();
commandLineParser.parse(new String [] {"-q", "1"});
Assert.assertEquals("Incorrect very quiet log level.", Level.SEVERE,
LogLevels.getLogLevel(commandLineParser.getLogLevelIndex()));
commandLineParser = new CommandLineParser();
commandLineParser.parse(new String [] {"-q", "2"});
Assert.assertEquals("Incorrect very very quiet log level.", Level.OFF,
LogLevels.getLogLevel(commandLineParser.getLogLevelIndex()));
}
/**
* Validates the verbose option.
*/
@Test
public void testVerboseOption() {
CommandLineParser commandLineParser;
commandLineParser = new CommandLineParser();
commandLineParser.parse(new String [] {});
Assert.assertEquals("Incorrect default log level.", Level.INFO,
LogLevels.getLogLevel(commandLineParser.getLogLevelIndex()));
commandLineParser = new CommandLineParser();
commandLineParser.parse(new String [] {"-v"});
Assert.assertEquals("Incorrect verbose log level.", Level.FINE,
LogLevels.getLogLevel(commandLineParser.getLogLevelIndex()));
commandLineParser = new CommandLineParser();
commandLineParser.parse(new String [] {"-v", "1"});
Assert.assertEquals("Incorrect very verbose log level.", Level.FINER,
LogLevels.getLogLevel(commandLineParser.getLogLevelIndex()));
commandLineParser = new CommandLineParser();
commandLineParser.parse(new String [] {"-v", "2"});
Assert.assertEquals("Incorrect very very verbose log level.", Level.FINEST,
LogLevels.getLogLevel(commandLineParser.getLogLevelIndex()));
commandLineParser = new CommandLineParser();
commandLineParser.parse(new String [] {"-v", "3"});
Assert.assertEquals(
"Incorrect very very very verbose log level.",
Level.FINEST,
LogLevels.getLogLevel(commandLineParser.getLogLevelIndex()));
}
/**
* Validates the quiet and verbose options in combination.
*/
@Test
public void testQuietAndVerboseOption() {
CommandLineParser commandLineParser;
commandLineParser = new CommandLineParser();
commandLineParser.parse(new String [] {});
Assert.assertEquals("Incorrect default log level.", Level.INFO,
LogLevels.getLogLevel(commandLineParser.getLogLevelIndex()));
commandLineParser = new CommandLineParser();
commandLineParser.parse(new String [] {"-v", "-q"});
Assert.assertEquals("Incorrect default log level.", Level.INFO,
LogLevels.getLogLevel(commandLineParser.getLogLevelIndex()));
commandLineParser = new CommandLineParser();
commandLineParser.parse(new String [] {"-v", "1", "-q", "1"});
Assert.assertEquals("Incorrect default log level.", Level.INFO,
LogLevels.getLogLevel(commandLineParser.getLogLevelIndex()));
commandLineParser = new CommandLineParser();
commandLineParser.parse(new String [] {"-v", "1", "-q", "2"});
Assert.assertEquals("Incorrect quiet log level.", Level.WARNING,
LogLevels.getLogLevel(commandLineParser.getLogLevelIndex()));
}
/**
* Validates the quiet and verbose options in combination.
*/
@Test
public void testPluginOption() {
CommandLineParser commandLineParser;
commandLineParser = new CommandLineParser();
commandLineParser.parse(new String [] {"-p", "plugin1", "-p", "plugin2"});
Assert.assertEquals(
"Incorrect plugin list.",
Arrays.asList("plugin1", "plugin2"),
commandLineParser.getPlugins());
}
/**
* Validates failure when an unknown option is specified.
*/
@Test (expected = OsmosisRuntimeException.class)
public void testUnknownOption() {
CommandLineParser commandLineParser;
commandLineParser = new CommandLineParser();
commandLineParser.parse(new String [] {"-a"});
}
}