001    /*
002     * $Id: InheritedMethodsTest.java 1103095 2011-05-14 13:18:29Z simonetripodi $
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    /**
021     * 
022     */
023    package org.apache.commons.ognl.test;
024    
025    import junit.framework.TestCase;
026    import org.apache.commons.ognl.Node;
027    import org.apache.commons.ognl.Ognl;
028    import org.apache.commons.ognl.OgnlContext;
029    import org.apache.commons.ognl.test.objects.BaseBean;
030    import org.apache.commons.ognl.test.objects.FirstBean;
031    import org.apache.commons.ognl.test.objects.Root;
032    import org.apache.commons.ognl.test.objects.SecondBean;
033    
034    /**
035     * Tests functionality of casting inherited method expressions.
036     */
037    public class InheritedMethodsTest
038        extends TestCase
039    {
040    
041        private static Root ROOT = new Root();
042    
043        public void test_Base_Inheritance()
044            throws Exception
045        {
046            OgnlContext context = (OgnlContext) Ognl.createDefaultContext( null );
047            String expression = "map.bean.name";
048            BaseBean first = new FirstBean();
049            BaseBean second = new SecondBean();
050    
051            ROOT.getMap().put( "bean", first );
052    
053            Node node = Ognl.compileExpression( context, ROOT, expression );
054    
055            assertEquals( first.getName(), node.getAccessor().get( context, ROOT ) );
056    
057            ROOT.getMap().put( "bean", second );
058    
059            assertEquals( second.getName(), node.getAccessor().get( context, ROOT ) );
060        }
061    }