package com.redhat.ceylon.common.tool; import junit.framework.Assert; import org.junit.Test; import com.redhat.ceylon.common.tool.OptionModel.ArgumentType; import com.redhat.ceylon.common.tool.example.TestExampleTool; public class ToolLoaderTest { @Test public void testExampleTool() throws Exception { final ToolModel<TestExampleTool> model = new TestingToolLoader().loadToolModel("example"); Assert.assertNotNull(model); Assert.assertEquals("example", model.getName()); final OptionModel<?> longOptionModel = model.getOption("long-name"); Assert.assertEquals("long-name", longOptionModel.getLongName()); Assert.assertEquals(TestExampleTool.class.getMethod("setLongName", boolean.class), longOptionModel.getArgument().getSetter()); Assert.assertEquals(longOptionModel, model.getOptionByShort('F')); Assert.assertEquals(null, longOptionModel.getArgument().getName()); Assert.assertEquals(ArgumentType.NOT_ALLOWED, longOptionModel.getArgumentType()); Assert.assertEquals(0, longOptionModel.getArgument().getMultiplicity().getMin()); Assert.assertEquals(1, longOptionModel.getArgument().getMultiplicity().getMax()); final OptionModel<?> shortOptionModel = model.getOption("short-name"); Assert.assertEquals("short-name", shortOptionModel.getLongName()); Assert.assertEquals(TestExampleTool.class.getMethod("setShortName", String.class), shortOptionModel.getArgument().getSetter()); Assert.assertEquals(shortOptionModel, model.getOptionByShort('b')); Assert.assertEquals("value", shortOptionModel.getArgument().getName()); Assert.assertEquals(ArgumentType.REQUIRED, shortOptionModel.getArgumentType()); Assert.assertEquals(0, shortOptionModel.getArgument().getMultiplicity().getMin()); Assert.assertEquals(1, shortOptionModel.getArgument().getMultiplicity().getMax()); final OptionModel<?> listOptionModel = model.getOption("list-option"); Assert.assertEquals("list-option", listOptionModel.getLongName()); Assert.assertEquals(null, listOptionModel.getShortName()); Assert.assertEquals("bars", listOptionModel.getArgument().getName()); Assert.assertEquals(ArgumentType.REQUIRED, listOptionModel.getArgumentType()); Assert.assertEquals(0, listOptionModel.getArgument().getMultiplicity().getMin()); Assert.assertEquals(Integer.MAX_VALUE, listOptionModel.getArgument().getMultiplicity().getMax()); final OptionModel<?> pureOptionModel = model.getOption("pure-option"); Assert.assertEquals("pure-option", pureOptionModel.getLongName()); Assert.assertEquals(null, pureOptionModel.getShortName()); Assert.assertEquals(null, pureOptionModel.getArgument().getName()); Assert.assertEquals(ArgumentType.NOT_ALLOWED, pureOptionModel.getArgumentType()); Assert.assertEquals(0, pureOptionModel.getArgument().getMultiplicity().getMin()); Assert.assertEquals(1, pureOptionModel.getArgument().getMultiplicity().getMax()); final OptionModel<?> verboseModel = model.getOption("verbose"); Assert.assertEquals("verbose", verboseModel.getLongName()); Assert.assertEquals(null, verboseModel.getShortName()); Assert.assertEquals("keys", verboseModel.getArgument().getName()); Assert.assertEquals(ArgumentType.OPTIONAL, verboseModel.getArgumentType()); Assert.assertEquals(0, verboseModel.getArgument().getMultiplicity().getMin()); Assert.assertEquals(1, verboseModel.getArgument().getMultiplicity().getMax()); Assert.assertEquals(1, model.getArguments().size()); final ArgumentModel<?> bazModel = model.getArguments().get(0); Assert.assertEquals(String.class, bazModel.getType()); } }