package tc.oc.commons.reflect; import org.junit.Test; import tc.oc.commons.core.reflect.Delegates; import static org.junit.Assert.*; import static tc.oc.test.Assert.*; public class DelegatesTest { static class Thing { private static int staticField = 123; private static String staticMethod(int n) { return String.valueOf(n); } int instanceField; private Thing(int n) { instanceField = n; } } interface StaticFields { int staticField(); } interface StaticMethods { String staticMethod(int n); } interface Constructors { Thing create(int n); } @Test public void staticFieldDelegate() throws Exception { StaticFields p = Delegates.newStaticFieldDelegate(StaticFields.class, Thing.class); assertEquals(123, p.staticField()); } @Test public void staticMethodDelegate() throws Exception { StaticMethods p = Delegates.newStaticMethodDelegate(StaticMethods.class, Thing.class); assertEquals("123", p.staticMethod(123)); } @Test public void constructorDelegate() throws Exception { Constructors p = Delegates.newConstructorDelegate(Constructors.class, Thing.class); assertEquals(123, p.create(123).instanceField); } }