001 /*
002 * $Id: NestedMethodTest.java 1188000 2011-10-23 23:10:24Z mcucchiara $
003 * Licensed to the Apache Software Foundation (ASF) under one
004 * or more contributor license agreements. See the NOTICE file
005 * distributed with this work for additional information
006 * regarding copyright ownership. The ASF licenses this file
007 * to you under the Apache License, Version 2.0 (the
008 * "License"); you may not use this file except in compliance
009 * with the License. You may obtain a copy of the License at
010 *
011 * http://www.apache.org/licenses/LICENSE-2.0
012 *
013 * Unless required by applicable law or agreed to in writing,
014 * software distributed under the License is distributed on an
015 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
016 * KIND, either express or implied. See the License for the
017 * specific language governing permissions and limitations
018 * under the License.
019 */
020 package org.apache.commons.ognl.test;
021
022 import org.apache.commons.ognl.test.objects.Component;
023 import org.junit.Test;
024 import org.junit.runner.RunWith;
025 import org.junit.runners.Parameterized;
026 import org.junit.runners.Parameterized.Parameters;
027
028 import java.util.ArrayList;
029 import java.util.Collection;
030
031 @RunWith(value = Parameterized.class)
032 public class NestedMethodTest
033 extends OgnlTestCase
034 {
035
036 private static Component COMPONENT = new Component();
037
038 private static Object[][] TESTS = {
039 // Expression in a method call argument
040 { COMPONENT, "toDisplay.pictureUrl", COMPONENT.getToDisplay().getPictureUrl() },
041 { COMPONENT, "page.createRelativeAsset(toDisplay.pictureUrl)",
042 COMPONENT.getPage().createRelativeAsset( COMPONENT.getToDisplay().getPictureUrl() ) }, };
043
044 /*
045 * =================================================================== Public static methods
046 * ===================================================================
047 */
048 @Parameters
049 public static Collection<Object[]> data()
050 {
051 Collection<Object[]> data = new ArrayList<Object[]>(TESTS.length);
052 for ( int i = 0; i < TESTS.length; i++ )
053 {
054 Object[] tmp = new Object[6];
055 tmp[0] = TESTS[i][1];
056 tmp[1] = TESTS[i][0];
057 tmp[2] = TESTS[i][1];
058
059 switch ( TESTS[i].length )
060 {
061 case 3:
062 tmp[3] = TESTS[i][2];
063 break;
064
065 case 4:
066 tmp[3] = TESTS[i][2];
067 tmp[4] = TESTS[i][3];
068 break;
069
070 case 5:
071 tmp[3] = TESTS[i][2];
072 tmp[4] = TESTS[i][3];
073 tmp[5] = TESTS[i][4];
074 break;
075
076 default:
077 throw new RuntimeException( "don't understand TEST format with length " + TESTS[i].length );
078 }
079
080 data.add( tmp );
081 }
082 return data;
083 }
084
085 /*
086 * =================================================================== Constructors
087 * ===================================================================
088 */
089 public NestedMethodTest( String name, Object root, String expressionString, Object expectedResult, Object setValue,
090 Object expectedAfterSetResult )
091 {
092 super( name, root, expressionString, expectedResult, setValue, expectedAfterSetResult );
093 }
094
095 @Test
096
097 @Override
098 public void runTest()
099 throws Exception
100 {
101 super.runTest();
102 }
103
104 }