/**
* Tests the command specification parser.
*/
public void testCommandSpec() throws Exception
{
CommandSpec cmd;
Properties props = new Properties();
props.setProperty("123", "def");
cmd = new CommandSpec("c:\\go 123abc");
assertEqual(new String[] {"c:\\go", "123abc"}, cmd.getCommand(props));
cmd = new CommandSpec("\"c:\\go\" 123 abc");
assertEqual(new String[] {"c:\\go", "123", "abc"}, cmd.getCommand(props));
cmd = new CommandSpec("\"c:\\go\" ${123} abc");
assertEqual(new String[] {"c:\\go", "def", "abc"}, cmd.getCommand(props));
cmd = new CommandSpec("c:\\go \"123 abc\"");
assertEqual(new String[] {"c:\\go", "123 abc"}, cmd.getCommand(props));
cmd = new CommandSpec("c:\\go \"\\\"123;abc\"");
assertEqual(new String[] {"c:\\go", "\"123;abc"}, cmd.getCommand(props));
cmd = new CommandSpec("c:\\go 123\";\"abc");
assertEqual(new String[] {"c:\\go", "123;abc"}, cmd.getCommand(props));
cmd = new CommandSpec("c:\\go 123\\\\;a*bc 123${123} \"Hello there\" \"\"");
assertEqual(new String[] {"c:\\go", "123\\"}, cmd.getCommand(props));
assertEquals("123def", cmd.trigger("I know my abc's", props));
assertEquals("123def", cmd.trigger("I know my bc's", props));
assertEquals("123def", cmd.trigger("I know my aaabc's", props));
assertEquals("", cmd.trigger("This is a Hello there test", props));
}