01: package org.mvel.tests.main;
02:
03: import junit.framework.TestCase;
04: import org.mvel.PropertyAccessor;
05: import org.mvel.tests.main.res.Base;
06: import org.mvel.tests.main.res.Foo;
07:
08: public class PropertyAccessUnitTest extends TestCase {
09: Base base = new Base();
10:
11: public void testPropertyRead() {
12: assertEquals("cat", PropertyAccessor.get("data", base));
13: }
14:
15: public void testDeepPropertyRead() {
16: assertEquals("dog", PropertyAccessor.get("foo.bar.name", base));
17: }
18:
19: public void testWrite() {
20: PropertyAccessor.set(base, "foo.bar.name", "cat");
21: assertEquals("cat", PropertyAccessor.get("foo.bar.name", base));
22: PropertyAccessor.set(base, "foo.bar.name", "dog");
23: }
24:
25: public void testCollectionsAccess() {
26: PropertyAccessor.set(base, "funMap['foo'].bar.name", "cat");
27: assertEquals("cat", PropertyAccessor.get(
28: "funMap['foo'].bar.name", base));
29: }
30:
31: public void testMethodInvoke() {
32: assertEquals("WOOF", PropertyAccessor.get("foo.toUC('woof')",
33: base));
34: }
35:
36: public void testMethodInvoke2() {
37: assertEquals("happyBar", PropertyAccessor.get("foo.happy()",
38: base));
39: }
40:
41: public void testMapDirect() {
42: assertTrue(PropertyAccessor.get("funMap['foo']", base) instanceof Foo);
43: }
44:
45: public void testArrayAccess() {
46: String[] a = new String[] { "foo", "bar", };
47: assertEquals("foo", PropertyAccessor.get("[0]", a));
48: }
49:
50: public void testArrayAccess2() {
51: assertEquals("poo", PropertyAccessor.get("[0][0]",
52: new Object[] { new String[] { "poo" } }));
53: }
54:
55: public void testStaticMethodAccess() {
56: assertEquals(String.class, PropertyAccessor.get(
57: "forName('java.lang.String')", Class.class));
58: }
59: }
|