1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.commons.ognl.test;
21
22 import org.apache.commons.ognl.test.objects.Indexed;
23 import org.apache.commons.ognl.test.objects.Root;
24 import org.junit.runner.RunWith;
25 import org.junit.runners.Parameterized;
26 import org.junit.runners.Parameterized.Parameters;
27
28 import java.util.ArrayList;
29 import java.util.Collection;
30
31 @RunWith(value = Parameterized.class)
32 public class IndexedPropertyTest
33 extends OgnlTestCase
34 {
35
36 private static Indexed INDEXED = new Indexed();
37
38 private static Root ROOT = new Root();
39
40 private static Object[][] TESTS = {
41
42 { INDEXED, "getValues", INDEXED.getValues() },
43 { INDEXED, "[\"values\"]", INDEXED.getValues() },
44 { INDEXED.getValues(), "[0]", INDEXED.getValues()[0] },
45 { INDEXED, "getValues()[0]", INDEXED.getValues()[0] },
46 { INDEXED, "values[0]", INDEXED.getValues( 0 ) },
47 { INDEXED, "values[^]", INDEXED.getValues( 0 ) },
48 { INDEXED, "values[|]", INDEXED.getValues( 1 ) },
49 { INDEXED, "values[$]", INDEXED.getValues( 2 ) },
50 { INDEXED, "values[1]", "bar" + "xxx", "xxxx" + "xxx", "xxxx" + "xxx" },
51 { INDEXED, "values[1]", "xxxx" + "xxx" },
52 { INDEXED, "setValues(2, \"xxxx\")", null },
53 { INDEXED, "getTitle(list.size)", "Title count 3" }, { INDEXED, "source.total", 1 },
54 { ROOT, "indexer.line[index]", "line:1" }, { INDEXED, "list[2].longValue()", (long) 3 },
55 { ROOT, "map.value.id", (long) 1 }, { INDEXED, "property['hoodak']", null, "random string", "random string" } };
56
57
58
59
60
61 @Parameters
62 public static Collection<Object[]> data()
63 {
64 Collection<Object[]> data = new ArrayList<Object[]>(TESTS.length);
65 for ( int i = 0; i < TESTS.length; i++ )
66 {
67 Object[] tmp = new Object[6];
68 tmp[0] = TESTS[i][1];
69 tmp[1] = TESTS[i][0];
70 tmp[2] = TESTS[i][1];
71
72 switch ( TESTS[i].length )
73 {
74 case 3:
75 tmp[3] = TESTS[i][2];
76 break;
77
78 case 4:
79 tmp[3] = TESTS[i][2];
80 tmp[4] = TESTS[i][3];
81 break;
82
83 case 5:
84 tmp[3] = TESTS[i][2];
85 tmp[4] = TESTS[i][3];
86 tmp[5] = TESTS[i][4];
87 break;
88
89 default:
90 throw new RuntimeException( "don't understand TEST format with length " + TESTS[i].length );
91 }
92
93 data.add( tmp );
94 }
95 return data;
96 }
97
98
99
100
101
102 public IndexedPropertyTest( String name, Object root, String expressionString, Object expectedResult,
103 Object setValue, Object expectedAfterSetResult )
104 {
105 super( name, root, expressionString, expectedResult, setValue, expectedAfterSetResult );
106 }
107 }