Activated through rename to *Tests, and added method call interaction tests
Issue: SPR-7831
This commit is contained in:
parent
640d8cb67f
commit
3bed6cfc7c
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
* Copyright 2002-2013 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -16,10 +16,6 @@
|
|||
|
||||
package org.springframework.expression.spel;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
|
@ -27,6 +23,7 @@ import java.util.List;
|
|||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.core.MethodParameter;
|
||||
import org.springframework.core.convert.ConversionService;
|
||||
import org.springframework.core.convert.TypeDescriptor;
|
||||
|
@ -36,6 +33,8 @@ import org.springframework.expression.Expression;
|
|||
import org.springframework.expression.TypeConverter;
|
||||
import org.springframework.expression.spel.support.StandardEvaluationContext;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
/**
|
||||
* Expression evaluation where the TypeConverter plugged in is the
|
||||
* {@link org.springframework.core.convert.support.GenericConversionService}.
|
||||
|
@ -43,7 +42,7 @@ import org.springframework.expression.spel.support.StandardEvaluationContext;
|
|||
* @author Andy Clement
|
||||
* @author Dave Syer
|
||||
*/
|
||||
public class ExpressionTestsUsingCoreConversionService extends ExpressionTestCase {
|
||||
public class ExpressionWithConversionTests extends ExpressionTestCase {
|
||||
|
||||
private static List<String> listOfString = new ArrayList<String>();
|
||||
private static TypeDescriptor typeDescriptorForListOfString = null;
|
||||
|
@ -61,8 +60,8 @@ public class ExpressionTestsUsingCoreConversionService extends ExpressionTestCas
|
|||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
ExpressionTestsUsingCoreConversionService.typeDescriptorForListOfString = new TypeDescriptor(ExpressionTestsUsingCoreConversionService.class.getDeclaredField("listOfString"));
|
||||
ExpressionTestsUsingCoreConversionService.typeDescriptorForListOfInteger = new TypeDescriptor(ExpressionTestsUsingCoreConversionService.class.getDeclaredField("listOfInteger"));
|
||||
ExpressionWithConversionTests.typeDescriptorForListOfString = new TypeDescriptor(ExpressionWithConversionTests.class.getDeclaredField("listOfString"));
|
||||
ExpressionWithConversionTests.typeDescriptorForListOfInteger = new TypeDescriptor(ExpressionWithConversionTests.class.getDeclaredField("listOfInteger"));
|
||||
}
|
||||
|
||||
|
||||
|
@ -133,45 +132,37 @@ public class ExpressionTestsUsingCoreConversionService extends ExpressionTestCas
|
|||
|
||||
}
|
||||
|
||||
public static class Foo {
|
||||
|
||||
private Collection<Foo> foos;
|
||||
|
||||
public final String value;
|
||||
|
||||
public Foo(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public void setFoos(Collection<Foo> foos) {
|
||||
this.foos = foos;
|
||||
}
|
||||
|
||||
public Collection<Foo> getFoos() {
|
||||
return this.foos;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testConvert() {
|
||||
Foo root = new Foo("bar");
|
||||
StandardEvaluationContext context = new StandardEvaluationContext(root);
|
||||
|
||||
Collection<String> foos = Collections.singletonList("baz");
|
||||
|
||||
// property access, works
|
||||
StandardEvaluationContext context = new StandardEvaluationContext(root);
|
||||
|
||||
// property access
|
||||
Expression expression = parser.parseExpression("foos");
|
||||
expression.setValue(context, foos);
|
||||
Foo baz = root.getFoos().iterator().next();
|
||||
assertEquals("baz", baz.value);
|
||||
|
||||
// method call, fails (ClassCastException)
|
||||
// method call
|
||||
expression = parser.parseExpression("setFoos(#foos)");
|
||||
context.setVariable("foos", foos);
|
||||
expression.getValue(context);
|
||||
baz = root.getFoos().iterator().next();
|
||||
assertEquals("baz", baz.value);
|
||||
|
||||
// method call with result from method call
|
||||
expression = parser.parseExpression("setFoos(getFoosAsStrings())");
|
||||
expression.getValue(context);
|
||||
baz = root.getFoos().iterator().next();
|
||||
assertEquals("baz", baz.value);
|
||||
|
||||
// method call with result from method call
|
||||
expression = parser.parseExpression("setFoos(getFoosAsObjects())");
|
||||
expression.getValue(context);
|
||||
baz = root.getFoos().iterator().next();
|
||||
assertEquals("baz", baz.value);
|
||||
}
|
||||
|
||||
|
||||
|
@ -193,4 +184,32 @@ public class ExpressionTestsUsingCoreConversionService extends ExpressionTestCas
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
public static class Foo {
|
||||
|
||||
public final String value;
|
||||
|
||||
private Collection<Foo> foos;
|
||||
|
||||
public Foo(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public void setFoos(Collection<Foo> foos) {
|
||||
this.foos = foos;
|
||||
}
|
||||
|
||||
public Collection<Foo> getFoos() {
|
||||
return this.foos;
|
||||
}
|
||||
|
||||
public Collection<String> getFoosAsStrings() {
|
||||
return Collections.singletonList("baz");
|
||||
}
|
||||
|
||||
public Collection<?> getFoosAsObjects() {
|
||||
return Collections.singletonList("baz");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue