package net.sf.colossus.cmdline;
import junit.framework.TestCase;
/**
* JUnit test for cmdline package.
*
* @author David Ripton
*/
public class CmdLineTest extends TestCase
{
public void testEmptyOpts()
{
Opts opts = new Opts();
assertTrue(opts.getOptions().size() == 0);
assertEquals(opts.getOpt('a'), null);
}
public void testAddOption()
{
Opts opts = new Opts();
opts.addOption('v', "verbose", false, "log more stuff");
assertTrue(opts.getOptions().size() == 1);
Opt opt = opts.getOpt('v');
assertEquals(opt.getOptch(), 'v');
assertEquals(opt.getName(), "verbose");
assertEquals(opt.hasArg(), false);
assertEquals(opt.getHelp(), "log more stuff");
assertEquals(opt.toString(), "-v, --verbose, log more stuff");
opt = opts.getOpt("verbose");
assertEquals(opt.getOptch(), 'v');
assertEquals(opt.getName(), "verbose");
assertEquals(opt.hasArg(), false);
assertEquals(opt.getHelp(), "log more stuff");
assertEquals(opt.toString(), "-v, --verbose, log more stuff");
}
public void testAddOptionWithArg()
{
Opts opts = new Opts();
opts.addOption('m', "myname", true, "My player name");
assertTrue(opts.getOptions().size() == 1);
Opt opt = opts.getOpt('m');
assertEquals(opt.getOptch(), 'm');
assertEquals(opt.getName(), "myname");
assertEquals(opt.hasArg(), true);
assertEquals(opt.getHelp(), "My player name");
assertEquals(opt.toString(), "-m, --myname, + ARG, My player name");
opt = opts.getOpt("myname");
assertEquals(opt.getOptch(), 'm');
assertEquals(opt.getName(), "myname");
assertEquals(opt.hasArg(), true);
assertEquals(opt.getHelp(), "My player name");
assertEquals(opt.toString(), "-m, --myname, + ARG, My player name");
}
public void testParse()
{
Opts opts = new Opts();
opts.addOption('v', "verbose", false, "log more stuff");
opts.addOption('p', "port", true, "server port number");
String[] args = { "-p", "1234", "-v" };
CmdLine cl = opts.parse(args);
assertTrue(cl.optIsSet('p'));
assertTrue(cl.optIsSet("port"));
assertTrue(cl.optIsSet('v'));
assertTrue(cl.optIsSet("verbose"));
assertEquals(cl.getOptValue('p'), "1234");
assertEquals(cl.getOptValue("port"), "1234");
String[] args2 = { "--port", "1234", "--verbose" };
cl = opts.parse(args2);
assertTrue(cl.optIsSet('p'));
assertTrue(cl.optIsSet("port"));
assertTrue(cl.optIsSet('v'));
assertTrue(cl.optIsSet("verbose"));
assertEquals(cl.getOptValue('p'), "1234");
assertEquals(cl.getOptValue("port"), "1234");
String[] args3 = { "-p1234", "--verbose" };
cl = opts.parse(args3);
assertTrue(cl.optIsSet('p'));
assertTrue(cl.optIsSet("port"));
assertTrue(cl.optIsSet('v'));
assertTrue(cl.optIsSet("verbose"));
assertEquals(cl.getOptValue('p'), "1234");
assertEquals(cl.getOptValue("port"), "1234");
}
public void testLeftovers()
{
Opts opts = new Opts();
opts.addOption('v', "verbose", false, "log more stuff");
opts.addOption('p', "port", true, "server port number");
String[] args = { "-p", "1234", "-v", "hi", "mom" };
CmdLine cl = opts.parse(args);
assertTrue(cl.optIsSet('p'));
assertTrue(cl.optIsSet("port"));
assertTrue(cl.optIsSet('v'));
assertTrue(cl.optIsSet("verbose"));
assertEquals(cl.getOptValue('p'), "1234");
assertEquals(cl.getOptValue("port"), "1234");
assertEquals(cl.getLeftovers().size(), 2);
assertEquals(cl.getLeftovers().get(0), "hi");
assertEquals(cl.getLeftovers().get(1), "mom");
}
public void testCombinedNonArgOptions()
{
Opts opts = new Opts();
opts.addOption('v', "verbose", false, "log more stuff");
opts.addOption('z', "latest", false, "load latest savegame");
String[] args = { "-vz" };
CmdLine cl = opts.parse(args);
assertTrue(cl.optIsSet('v'));
assertTrue(cl.optIsSet("verbose"));
assertTrue(cl.optIsSet('z'));
assertTrue(cl.optIsSet("latest"));
assertEquals(cl.getLeftovers().size(), 0);
}
}