package mil.nga.giat.geowave.core.cli.prefix; import java.util.HashMap; import java.util.Map; import org.junit.Test; import com.beust.jcommander.Parameter; import com.beust.jcommander.ParametersDelegate; import junit.framework.Assert; import mil.nga.giat.geowave.core.cli.annotations.PrefixParameter; public class JCommanderPropertiesTransformerTest { @Test public void testWithoutDelegate() { Args args = new Args(); args.passWord = "blah"; args.userName = "user"; JCommanderPropertiesTransformer transformer = new JCommanderPropertiesTransformer(); transformer.addObject(args); Map<String, String> props = new HashMap<String, String>(); transformer.transformToMap(props); Assert.assertEquals( 2, props.size()); Assert.assertEquals( "blah", props.get("password")); Assert.assertEquals( "user", props.get("username")); } @Test public void testWithDelegate() { DelegateArgs args = new DelegateArgs(); args.args.passWord = "blah"; args.args.userName = "user"; args.additional = "add"; JCommanderPropertiesTransformer transformer = new JCommanderPropertiesTransformer(); transformer.addObject(args); Map<String, String> props = new HashMap<String, String>(); transformer.transformToMap(props); Assert.assertEquals( 3, props.size()); Assert.assertEquals( "blah", props.get("password")); Assert.assertEquals( "user", props.get("username")); Assert.assertEquals( "add", props.get("additional")); } @Test public void testWithPrefix() { DelegatePrefixArgs args = new DelegatePrefixArgs(); args.args.passWord = "blah"; args.args.userName = "user"; args.additional = "add"; JCommanderPropertiesTransformer transformer = new JCommanderPropertiesTransformer(); transformer.addObject(args); Map<String, String> props = new HashMap<String, String>(); transformer.transformToMap(props); Assert.assertEquals( 3, props.size()); Assert.assertEquals( "blah", props.get("abc.password")); Assert.assertEquals( "user", props.get("abc.username")); Assert.assertEquals( "add", props.get("additional")); } public class Args { @Parameter(names = "--username") private String userName; @Parameter(names = "--password") private String passWord; } public class DelegateArgs { @ParametersDelegate private Args args = new Args(); @Parameter(names = "--additional") private String additional; } public class DelegatePrefixArgs { @ParametersDelegate @PrefixParameter(prefix = "abc") private Args args = new Args(); @Parameter(names = "--additional") private String additional; } }