|
|
|
@ -30,17 +30,18 @@ import static org.junit.Assert.*; |
|
|
|
* Unit tests for {@link MethodBasedEvaluationContext}. |
|
|
|
* Unit tests for {@link MethodBasedEvaluationContext}. |
|
|
|
* |
|
|
|
* |
|
|
|
* @author Stephane Nicoll |
|
|
|
* @author Stephane Nicoll |
|
|
|
|
|
|
|
* @author Juergen Hoeller |
|
|
|
* @author Sergey Podgurskiy |
|
|
|
* @author Sergey Podgurskiy |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public class MethodBasedEvaluationContextTests { |
|
|
|
public class MethodBasedEvaluationContextTests { |
|
|
|
|
|
|
|
|
|
|
|
private final ParameterNameDiscoverer paramDiscover = new DefaultParameterNameDiscoverer(); |
|
|
|
private final ParameterNameDiscoverer paramDiscover = new DefaultParameterNameDiscoverer(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
@Test |
|
|
|
public void simpleArguments() { |
|
|
|
public void simpleArguments() { |
|
|
|
Method method = ReflectionUtils.findMethod(SampleMethods.class, "hello", |
|
|
|
Method method = ReflectionUtils.findMethod(SampleMethods.class, "hello", String.class, Boolean.class); |
|
|
|
String.class, Boolean.class); |
|
|
|
MethodBasedEvaluationContext context = createEvaluationContext(method, "test", true); |
|
|
|
MethodBasedEvaluationContext context = createEvaluationContext(method, new Object[] {"test", true}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assertEquals("test", context.lookupVariable("a0")); |
|
|
|
assertEquals("test", context.lookupVariable("a0")); |
|
|
|
assertEquals("test", context.lookupVariable("p0")); |
|
|
|
assertEquals("test", context.lookupVariable("p0")); |
|
|
|
@ -51,16 +52,21 @@ public class MethodBasedEvaluationContextTests { |
|
|
|
assertEquals(true, context.lookupVariable("flag")); |
|
|
|
assertEquals(true, context.lookupVariable("flag")); |
|
|
|
|
|
|
|
|
|
|
|
assertNull(context.lookupVariable("a2")); |
|
|
|
assertNull(context.lookupVariable("a2")); |
|
|
|
|
|
|
|
assertNull(context.lookupVariable("p2")); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
@Test |
|
|
|
public void nullArgument() { |
|
|
|
public void nullArgument() { |
|
|
|
Method method = ReflectionUtils.findMethod(SampleMethods.class, "hello", |
|
|
|
Method method = ReflectionUtils.findMethod(SampleMethods.class, "hello", String.class, Boolean.class); |
|
|
|
String.class, Boolean.class); |
|
|
|
MethodBasedEvaluationContext context = createEvaluationContext(method, null, null); |
|
|
|
MethodBasedEvaluationContext context = createEvaluationContext(method, new Object[] {null, null}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assertNull(context.lookupVariable("a0")); |
|
|
|
assertNull(context.lookupVariable("a0")); |
|
|
|
assertNull(context.lookupVariable("p0")); |
|
|
|
assertNull(context.lookupVariable("p0")); |
|
|
|
|
|
|
|
assertNull(context.lookupVariable("foo")); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assertNull(context.lookupVariable("a1")); |
|
|
|
|
|
|
|
assertNull(context.lookupVariable("p1")); |
|
|
|
|
|
|
|
assertNull(context.lookupVariable("flag")); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
@Test |
|
|
|
@ -68,39 +74,58 @@ public class MethodBasedEvaluationContextTests { |
|
|
|
Method method = ReflectionUtils.findMethod(SampleMethods.class, "hello", Boolean.class, String[].class); |
|
|
|
Method method = ReflectionUtils.findMethod(SampleMethods.class, "hello", Boolean.class, String[].class); |
|
|
|
MethodBasedEvaluationContext context = createEvaluationContext(method, new Object[] {null}); |
|
|
|
MethodBasedEvaluationContext context = createEvaluationContext(method, new Object[] {null}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assertNull(context.lookupVariable("a0")); |
|
|
|
assertNull(context.lookupVariable("p0")); |
|
|
|
assertNull(context.lookupVariable("p0")); |
|
|
|
|
|
|
|
assertNull(context.lookupVariable("flag")); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assertNull(context.lookupVariable("a1")); |
|
|
|
assertNull(context.lookupVariable("p1")); |
|
|
|
assertNull(context.lookupVariable("p1")); |
|
|
|
|
|
|
|
assertNull(context.lookupVariable("vararg")); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
@Test |
|
|
|
public void varArgNull() { |
|
|
|
public void varArgNull() { |
|
|
|
Method method = ReflectionUtils.findMethod(SampleMethods.class, "hello", Boolean.class, String[].class); |
|
|
|
Method method = ReflectionUtils.findMethod(SampleMethods.class, "hello", Boolean.class, String[].class); |
|
|
|
MethodBasedEvaluationContext context = createEvaluationContext(method, new Object[] {null, null}); |
|
|
|
MethodBasedEvaluationContext context = createEvaluationContext(method, null, null); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assertNull(context.lookupVariable("a0")); |
|
|
|
assertNull(context.lookupVariable("p0")); |
|
|
|
assertNull(context.lookupVariable("p0")); |
|
|
|
|
|
|
|
assertNull(context.lookupVariable("flag")); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assertNull(context.lookupVariable("a1")); |
|
|
|
assertNull(context.lookupVariable("p1")); |
|
|
|
assertNull(context.lookupVariable("p1")); |
|
|
|
|
|
|
|
assertNull(context.lookupVariable("vararg")); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
@Test |
|
|
|
public void varArgSingle() { |
|
|
|
public void varArgSingle() { |
|
|
|
Method method = ReflectionUtils.findMethod(SampleMethods.class, "hello", Boolean.class, String[].class); |
|
|
|
Method method = ReflectionUtils.findMethod(SampleMethods.class, "hello", Boolean.class, String[].class); |
|
|
|
MethodBasedEvaluationContext context = createEvaluationContext(method, new Object[] {null, "hello"}); |
|
|
|
MethodBasedEvaluationContext context = createEvaluationContext(method, null, "hello"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assertNull(context.lookupVariable("a0")); |
|
|
|
assertNull(context.lookupVariable("p0")); |
|
|
|
assertNull(context.lookupVariable("p0")); |
|
|
|
|
|
|
|
assertNull(context.lookupVariable("flag")); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assertEquals("hello", context.lookupVariable("a1")); |
|
|
|
assertEquals("hello", context.lookupVariable("p1")); |
|
|
|
assertEquals("hello", context.lookupVariable("p1")); |
|
|
|
|
|
|
|
assertEquals("hello", context.lookupVariable("vararg")); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
@Test |
|
|
|
public void varArgMultiple() { |
|
|
|
public void varArgMultiple() { |
|
|
|
Method method = ReflectionUtils.findMethod(SampleMethods.class, "hello", Boolean.class, String[].class); |
|
|
|
Method method = ReflectionUtils.findMethod(SampleMethods.class, "hello", Boolean.class, String[].class); |
|
|
|
MethodBasedEvaluationContext context = createEvaluationContext(method, |
|
|
|
MethodBasedEvaluationContext context = createEvaluationContext(method, null, "hello", "hi"); |
|
|
|
new Object[] {null, new String[]{"hello", "hi"}}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assertNull(context.lookupVariable("a0")); |
|
|
|
assertNull(context.lookupVariable("p0")); |
|
|
|
assertNull(context.lookupVariable("p0")); |
|
|
|
assertArrayEquals(new String[]{"hello", "hi"}, (String[]) context.lookupVariable("p1")); |
|
|
|
assertNull(context.lookupVariable("flag")); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assertArrayEquals(new Object[] {"hello", "hi"}, (Object[]) context.lookupVariable("a1")); |
|
|
|
|
|
|
|
assertArrayEquals(new Object[] {"hello", "hi"}, (Object[]) context.lookupVariable("p1")); |
|
|
|
|
|
|
|
assertArrayEquals(new Object[] {"hello", "hi"}, (Object[]) context.lookupVariable("vararg")); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private MethodBasedEvaluationContext createEvaluationContext(Method method, Object[] args) { |
|
|
|
private MethodBasedEvaluationContext createEvaluationContext(Method method, Object... args) { |
|
|
|
return new MethodBasedEvaluationContext(this, method, args, this.paramDiscover); |
|
|
|
return new MethodBasedEvaluationContext(this, method, args, this.paramDiscover); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -112,9 +137,7 @@ public class MethodBasedEvaluationContextTests { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private void hello(Boolean flag, String... vararg){ |
|
|
|
private void hello(Boolean flag, String... vararg){ |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |