package org.jooby.internal.reqparam; import static org.junit.Assert.assertEquals; import org.jooby.internal.parser.StaticMethodParser; import org.junit.Test; import com.google.inject.TypeLiteral; public class StaticMethodParserTest { public static class Value { private String val; private Value(final String val) { this.val = val; } public static Value valueOf(final String val) { return new Value(val); } @Override public String toString() { return val; } } public static class ValueOfNoStatic { public ValueOfNoStatic valueOf() { return new ValueOfNoStatic(); } } public static class ValueOfNoPublic { @SuppressWarnings("unused") private static ValueOfNoStatic valueOf() { return new ValueOfNoStatic(); } } public static class ValueOfNoPublicNoStatic { ValueOfNoStatic valueOf() { return new ValueOfNoStatic(); } } @Test public void defaults() throws Exception { new StaticMethodParser("valueOf"); } @Test(expected = NullPointerException.class) public void nullArg() throws Exception { new StaticMethodParser(null); } @Test public void matches() throws Exception { assertEquals(true, new StaticMethodParser("valueOf").matches(TypeLiteral.get(Value.class))); assertEquals(false, new StaticMethodParser("valueOf").matches(TypeLiteral.get(ValueOfNoStatic.class))); assertEquals(false, new StaticMethodParser("valueOf").matches(TypeLiteral.get(ValueOfNoPublic.class))); assertEquals(false, new StaticMethodParser("valueOf").matches(TypeLiteral.get(ValueOfNoPublicNoStatic.class))); } }