package works.cirno.mocha.parameter.name; import org.junit.Assert; import org.junit.Test; import works.cirno.mocha.InvokeTarget; /** * */ public class AnnotationParameterAnalyzerTest { private ThreadLocal<AnnotationParameterAnalyzer> analyzer = new ThreadLocal<AnnotationParameterAnalyzer>() { @Override protected AnnotationParameterAnalyzer initialValue() { return new AnnotationParameterAnalyzer(); } }; @Test public void testNamedArguments1() throws Exception { AnnotationParameterAnalyzer analyzer = this.analyzer.get(); Class<?> controllerClass = TestController.class; Object controller = controllerClass.newInstance(); InvokeTarget target = new InvokeTarget(null, controller, "method1"); Parameter[] parameters = analyzer.getParameters(target); Assert.assertEquals(0, parameters.length); } @Test public void testNamedArguments2() throws Exception { AnnotationParameterAnalyzer analyzer = this.analyzer.get(); Class<?> controllerClass = TestController.class; Object controller = controllerClass.newInstance(); InvokeTarget target = new InvokeTarget(null, controller, "method2"); Parameter[] parameters = analyzer.getParameters(target); Assert.assertEquals(3, parameters.length); Assert.assertEquals("name", parameters[0].getName()); Assert.assertEquals("id", parameters[1].getName()); Assert.assertEquals("uuid", parameters[2].getName()); } @Test public void testNamedArguments3() throws Exception { AnnotationParameterAnalyzer analyzer = this.analyzer.get(); Class<?> controllerClass = TestController.class; Object controller = controllerClass.newInstance(); InvokeTarget target = new InvokeTarget(null, controller, "method3"); Parameter[] parameters = analyzer.getParameters(target); Assert.assertEquals(3, parameters.length); Assert.assertEquals("name", parameters[0].getName()); Assert.assertEquals("id", parameters[1].getName()); Assert.assertEquals("uuid", parameters[2].getName()); } @Test public void testNamedArguments4() throws Exception { AnnotationParameterAnalyzer analyzer = this.analyzer.get(); Class<?> controllerClass = TestController.class; Object controller = controllerClass.newInstance(); InvokeTarget target = new InvokeTarget(null, controller, "method4"); Parameter[] parameters = analyzer.getParameters(target); Assert.assertEquals(3, parameters.length); Assert.assertEquals("name", parameters[0].getName()); Assert.assertEquals("id", parameters[1].getName()); Assert.assertEquals("uuid", parameters[2].getName()); } }