package edu.stanford.nlp.util; import org.junit.Before; import org.junit.Test; import java.util.Properties; import static org.junit.Assert.*; /** * A small test for the {@link ArgumentParser} class for loading command line options * * @author Gabor Angeli */ public class ArgumentParserTest { public static class StaticClass { @ArgumentParser.Option(name="option.static") public static int staticOption = -1; } public static class NonstaticClass { @ArgumentParser.Option(name="option.nonstatic") public int staticOption = -1; } public static class MixedClass { @ArgumentParser.Option(name="option.static") public static int staticOption = -1; @ArgumentParser.Option(name="option.nonstatic") public int nonstaticOption = -1; } @Before public void setUp() { StaticClass.staticOption = -1; MixedClass.staticOption = -1; } @Test public void testFillStaticField() { assertEquals(-1, StaticClass.staticOption); ArgumentParser.fillOptions(StaticClass.class, new String[]{"-option.static", "42"}); assertEquals(42, StaticClass.staticOption); } @Test public void testFillStaticFieldFromProperties() { assertEquals(-1, StaticClass.staticOption); Properties props = new Properties(); props.setProperty("option.static", "42"); ArgumentParser.fillOptions(StaticClass.class, props); assertEquals(42, StaticClass.staticOption); } @Test public void fillNonstaticField() { NonstaticClass x = new NonstaticClass(); assertEquals(-1, x.staticOption); ArgumentParser.fillOptions(x, new String[]{"-option.nonstatic", "42"}); assertEquals(42, x.staticOption); } @Test public void fillNonstaticFieldFromProperties() { NonstaticClass x = new NonstaticClass(); assertEquals(-1, x.staticOption); Properties props = new Properties(); props.setProperty("option.nonstatic", "42"); ArgumentParser.fillOptions(x, props); assertEquals(42, x.staticOption); } @Test public void fillMixedFieldsInstanceGiven() { MixedClass x = new MixedClass(); assertEquals(-1, MixedClass.staticOption); assertEquals(-1, x.nonstaticOption); ArgumentParser.fillOptions(x, new String[]{"-option.nonstatic", "42", "-option.static", "43"}); assertEquals(43, MixedClass.staticOption); assertEquals(42, x.nonstaticOption); } @Test public void fillMixedFieldsNoInstanceGiven() { MixedClass x = new MixedClass(); assertEquals(-1, MixedClass.staticOption); assertEquals(-1, x.nonstaticOption); ArgumentParser.fillOptions(MixedClass.class, new String[]{"-option.nonstatic", "42", "-option.static", "43"}); assertEquals(43, MixedClass.staticOption); assertEquals(-1, x.nonstaticOption); } }