package org.springframework.binding.expression.el;
import java.util.HashMap;
import java.util.Map;
import javax.el.ELContext;
import junit.framework.TestCase;
import org.springframework.binding.collection.MapAdaptable;
public class MapAdaptableELResolverTests extends TestCase {
private ELContext context;
public void setUp() {
context = new DefaultELContext(new MapAdaptableELResolver(), null, null);
}
public void testGetType() {
Class<?> type = context.getELResolver().getType(context, new TestMapAdaptable(), "bar");
assertTrue(context.isPropertyResolved());
assertEquals(String.class, type);
}
public void testGetType_UnknownProperty() {
Class<?> type = context.getELResolver().getType(context, new TestMapAdaptable(), "foo");
assertTrue(context.isPropertyResolved());
assertEquals(null, type);
}
public void testGetValue() {
Object value = context.getELResolver().getValue(context, new TestMapAdaptable(), "bar");
assertTrue(context.isPropertyResolved());
assertEquals("bar", value);
}
public void testGetValue_UnknownProperty() {
Object value = context.getELResolver().getValue(context, new TestMapAdaptable(), "foo");
assertTrue(context.isPropertyResolved());
assertEquals(null, value);
}
public void testSetValue() {
MapAdaptable<String, String> testMap = new TestMapAdaptable();
context.getELResolver().setValue(context, testMap, "foo", "foo");
assertTrue(context.isPropertyResolved());
assertEquals("foo", testMap.asMap().get("foo"));
}
public void testSetValue_OverWrite() {
MapAdaptable<String, String> testMap = new TestMapAdaptable();
context.getELResolver().setValue(context, testMap, "bar", "foo");
assertTrue(context.isPropertyResolved());
assertEquals("foo", testMap.asMap().get("bar"));
}
private class TestMapAdaptable implements MapAdaptable<String, String> {
private Map<String, String> map = new HashMap<String, String>();
public TestMapAdaptable() {
map.put("bar", "bar");
}
public Map<String, String> asMap() {
return map;
}
}
}