package org.mvel2.tests.core; import junit.framework.TestCase; import org.mvel2.PropertyAccessor; import org.mvel2.tests.core.res.Base; import org.mvel2.tests.core.res.Foo; public class PropertyAccessUnitTest extends TestCase { Base base = new Base(); public void testPropertyRead() { assertEquals("cat", PropertyAccessor.get("data", base)); } public void testDeepPropertyRead() { assertEquals("dog", PropertyAccessor.get("foo.bar.name", base)); } public void testWrite() { PropertyAccessor.set(base, "foo.bar.name", "cat"); assertEquals("cat", PropertyAccessor.get("foo.bar.name", base)); PropertyAccessor.set(base, "foo.bar.name", "dog"); } public void testCollectionsAccess() { PropertyAccessor.set(base, "funMap['foo'].bar.name", "cat"); assertEquals("cat", PropertyAccessor.get("funMap['foo'].bar.name", base)); } public void testMethodInvoke() { assertEquals("WOOF", PropertyAccessor.get("foo.toUC('woof')", base)); } public void testMethodInvoke2() { assertEquals("happyBar", PropertyAccessor.get("foo.happy()", base)); } public void testMapDirect() { assertTrue(PropertyAccessor.get("funMap['foo']", base) instanceof Foo); } public void testArrayAccess() { String[] a = new String[]{"foo", "bar",}; assertEquals("foo", PropertyAccessor.get("[0]", a)); } public void testArrayAccess2() { assertEquals("poo", PropertyAccessor.get("[0][0]", new Object[]{new String[]{"poo"}})); } public void testStaticMethodAccess() { assertEquals(String.class, PropertyAccessor.get("forName('java.lang.String')", Class.class)); } }