/*
 * Copyright (c) 2007 NTT DATA Corporation
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package jp.terasoluna.fw.beans;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.beanutils.WrapDynaBean;
import org.apache.commons.jxpath.JXPathContext;
import org.apache.commons.jxpath.JXPathException;

import jp.terasoluna.utlib.LogUTUtil;
import jp.terasoluna.utlib.UTUtil;
import junit.framework.TestCase;

/**
 * {@link jp.terasoluna.fw.beans.JXPathIndexedBeanWrapperImpl} 僋儔僗偺僽儔僢僋儃僢僋僗僥僗僩丅
 * 
 * <p>
 * <h4>亂僋儔僗偺奣梫亃</h4>
 * JavaBean偺攝楍丒僐儗僋僔儑儞宆懏惈偵傾僋僙僗偱偒傞僋儔僗丅<br>
 * 慜採忦審丗
 * <p>
 * 
 * @see jp.terasoluna.fw.beans.JXPathIndexedBeanWrapperImpl
 */
public class JXPathIndexedBeanWrapperImplTest01 extends TestCase {

    /**
     * 偙偺僥僗僩働乕僗傪幚峴偡傞堊偺
     * GUI 傾僾儕働乕僔儑儞傪婲摦偡傞丅
     * 
     * @param args java 僐儅儞僪偵愝掕偝傟偨僷儔儊乕僞
     */
    public static void main(String[] args) {
        junit.swingui.TestRunner.run(JXPathIndexedBeanWrapperImplTest01.class);
    }

    /**
     * 弶婜壔張棟傪峴偆丅
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     * @see junit.framework.TestCase#setUp()
     */
    @Override
    protected void setUp() throws Exception {
        super.setUp();
    }

    /**
     * 廔椆張棟傪峴偆丅
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     * @see junit.framework.TestCase#tearDown()
     */
    @Override
    protected void tearDown() throws Exception {
        super.tearDown();
    }

    /**
     * 僐儞僗僩儔僋僞丅
     * 
     * @param name 偙偺僥僗僩働乕僗偺柤慜丅
     */
    public JXPathIndexedBeanWrapperImplTest01(String name) {
        super(name);
    }

    /**
     * testJXPathIndexedBeanWrapperImpl01()
     * <br><br>
     * 
     * (惓忢宯)
     * <br>
     * 娤揰丗A
     * <br><br>
     * 擖椡抣丗(堷悢) obj:not null<br>
     *         (忬懺) this.context:null<br>
     *         
     * <br>
     * 婜懸抣丗(忬懺曄壔) this.context:堷悢偱愝掕偝傟偨抣丅<br>
     *         
     * <br>
     * 僞乕僎僢僩偲側傞JavaBean傪context懏惈偵愝掕偡傞僐儞僗僩儔僋僞偺僥僗僩丅惓忢働乕僗丅
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testJXPathIndexedBeanWrapperImpl01() throws Exception {
        // 慜張棟
        Object obj = new Object();

        // 僥僗僩幚巤
        JXPathIndexedBeanWrapperImpl bw 
            = new JXPathIndexedBeanWrapperImpl(obj);

        // 敾掕
        JXPathContext context = 
            (JXPathContext) UTUtil.getPrivateField(bw, "context");
        assertSame(obj, context.getContextBean());
    }

    /**
     * testJXPathIndexedBeanWrapperImpl02()
     * <br><br>
     * 
     * (堎忢宯)
     * <br>
     * 娤揰丗G
     * <br><br>
     * 擖椡抣丗(堷悢) obj:null<br>
     *         (忬懺) this.context:null<br>
     *         
     * <br>
     * 婜懸抣丗(忬懺曄壔) 椺奜:IllegalArgumentException("TargetBean is null!")<br>
     *         (忬懺曄壔) 儘僌:儘僌儗儀儖丗僄儔乕<br>
     *                    TargetBean is null!<br>
     *         
     * <br>
     * 堷悢偺JavaBean偑Null偺応崌偺僥僗僩丅椺奜傪搳偘傞丅
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testJXPathIndexedBeanWrapperImpl02() throws Exception {
        // 慜張棟
        try {
            new JXPathIndexedBeanWrapperImpl(null);
            fail();
        } catch (IllegalArgumentException e) {
            // 敾掕
            assertEquals("TargetBean is null!", e.getMessage());
            assertTrue(LogUTUtil.checkError("TargetBean is null!"));
        }
    }

    /**
     * testGetIndexedPropertyValuesJavaBean01()
     * <br><br>
     * 
     * (堎忢宯)
     * <br>
     * 娤揰丗G
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:null<br>
     *         (忬懺) this.context:not null<br>
     *         
     * <br>
     * 婜懸抣丗(忬懺曄壔) 椺奜:IllegalArgumentException("PropertyName is empty!")<br>
     *         (忬懺曄壔) 儘僌:儘僌儗儀儖丗僄儔乕PropertyName is empty!<br>
     *         
     * <br>
     * 堷悢偺僾儘僷僥傿柤偑Null偺僥僗僩丅
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesJavaBean01() throws Exception {
        // 慜張棟
        JXPathIndexedBeanWrapperImpl bw 
            = new JXPathIndexedBeanWrapperImpl(new Object());
        
        // 僥僗僩幚巤
        try {
            bw.getIndexedPropertyValues(null);
            fail();
        } catch (IllegalArgumentException e) {
            // 敾掕
            assertEquals("PropertyName is empty!", e.getMessage());
            assertTrue(LogUTUtil.checkError("PropertyName is empty!"));
        }
    }

    /**
     * testGetIndexedPropertyValuesJavaBean02()
     * <br><br>
     * 
     * (堎忢宯)
     * <br>
     * 娤揰丗G
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:""乮嬻暥帤乯<br>
     *         (忬懺) this.context:not null<br>
     *         
     * <br>
     * 婜懸抣丗(忬懺曄壔) 椺奜:IllegalArgumentException("PropertyName is empty!")<br>
     *         (忬懺曄壔) 儘僌:儘僌儗儀儖丗僄儔乕PropertyName is empty!<br>
     *         
     * <br>
     * 堷悢偺僾儘僷僥傿柤偑嬻暥帤偺僥僗僩丅
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesJavaBean02() throws Exception {
        // 慜張棟
        JXPathIndexedBeanWrapperImpl bw 
        = new JXPathIndexedBeanWrapperImpl(new Object());
    
        // 僥僗僩幚巤
        try {
            bw.getIndexedPropertyValues("");
            fail();
        } catch (IllegalArgumentException e) {
            // 敾掕
            assertEquals("PropertyName is empty!", e.getMessage());
            assertTrue(LogUTUtil.checkError("PropertyName is empty!"));
        }
    }

    /**
     * testGetIndexedPropertyValuesJavaBean03()
     * <br><br>
     * 
     * (堎忢宯)
     * <br>
     * 娤揰丗G
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:"."(僪僢僩侾偮乯<br>
     *         (忬懺) this.context:not null<br>
     *         
     * <br>
     * 婜懸抣丗(忬懺曄壔) 椺奜:IllegalArgumentException<br>
     *                    丂儊僢僙乕僕丗Property name is null or blank.<br>
     *                    丂尨場椺奜丗JXPathException<br>
     *         (忬懺曄壔) 儘僌:儘僌儗儀儖丗僄儔乕<br>
     *                    Property name is null or blank.<br>
     *         
     * <br>
     * 晄惓側僾儘僷僥傿柤偑擖傟傜傟偨応崌偺僥僗僩丅
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesJavaBean03() throws Exception {
        // 慜張棟
        JXPathIndexedBeanWrapperImpl bw 
        = new JXPathIndexedBeanWrapperImpl(new Object());
    
        // 僥僗僩幚巤
        try {
            bw.getIndexedPropertyValues(".");
            fail();
        } catch (IllegalArgumentException e) {
            // 敾掕
            assertEquals("Property name is null or blank.", e.getMessage());
            assertTrue(LogUTUtil.checkError("Property name is null or blank."));
        }
    }

    /**
     * testGetIndexedPropertyValuesJavaBean04()
     * <br><br>
     * 
     * (堎忢宯)
     * <br>
     * 娤揰丗G
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:"/"<br>
     *         (忬懺) this.context:not null<br>
     *         
     * <br>
     * 婜懸抣丗(忬懺曄壔) 椺奜:IllegalArgumentException<br>
     *                    丂儊僢僙乕僕丗Invalid character has found within property name. 
     *                    '/' Cannot use [ / " ' ]<br>
     *                    丂尨場椺奜丗JXPathException<br>
     *         (忬懺曄壔) 儘僌:儘僌儗儀儖丗僄儔乕<br>
     *                    Invalid character has found within property name. 
     *                    '/' Cannot use [ / " ' ]<br>
     *         
     * <br>
     * 僾儘僷僥傿柤偵/乮僗儔僢僔儏乯偑擖偭偰偄傞僶僞乕儞
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesJavaBean04() throws Exception {
        // 慜張棟
        JXPathIndexedBeanWrapperImpl bw 
        = new JXPathIndexedBeanWrapperImpl(new Object());
    
        // 僥僗僩幚巤
        try {
            bw.getIndexedPropertyValues("/");
            fail();
        } catch (IllegalArgumentException e) {
            // 敾掕
            String expect = "Invalid character has found within property name. "
                + "'/' Cannot use [ / \" ' ]";
            assertEquals(expect, e.getMessage());
            assertTrue(LogUTUtil.checkError(expect));
        }
    }

    /**
     * testGetIndexedPropertyValuesJavaBean05()
     * <br><br>
     * 
     * (堎忢宯)
     * <br>
     * 娤揰丗G
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:"["<br>
     *         (忬懺) this.context:not null<br>
     *         
     * <br>
     * 婜懸抣丗(忬懺曄壔) 椺奜:IllegalArgumentException<br>
     *                    丂儊僢僙乕僕丗Cannot get Index. Invalid property name. '['<br>
     *                    丂尨場椺奜丗JXPathException<br>
     *         (忬懺曄壔) 儘僌:儘僌儗儀儖丗僄儔乕<br>
     *                    Cannot get Index. Invalid property name. '['<br>
     *         
     * <br>
     * 僾儘僷僥傿柤偵[乮攝楍偺婰崋乯偑擖偭偰偄傞僶僞乕儞
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesJavaBean05() throws Exception {
        // 慜張棟
        JXPathIndexedBeanWrapperImpl bw 
        = new JXPathIndexedBeanWrapperImpl(new Object());
    
        // 僥僗僩幚巤
        try {
            bw.getIndexedPropertyValues("[");
            fail();
        } catch (IllegalArgumentException e) {
            // 敾掕
            String expect = "Cannot get Index. Invalid property name. '['";
            assertEquals(expect, e.getMessage());
            assertTrue(LogUTUtil.checkError(expect));
        }
    }

    /**
     * testGetIndexedPropertyValuesJavaBean06()
     * <br><br>
     * 
     * (堎忢宯)
     * <br>
     * 娤揰丗G
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:"[a]"<br>
     *         (忬懺) this.context:not null<br>
     *         
     * <br>
     * 婜懸抣丗(忬懺曄壔) 椺奜:IllegalArgumentException<br>
     *                    丂儊僢僙乕僕丗Invalid character has found within property name. '[a]' Cannot use [ [] ]<br>
     *                    丂尨場椺奜丗JXPathException<br>
     *         (忬懺曄壔) 儘僌:儘僌儗儀儖丗僄儔乕<br>
     *                    Invalid character has found within property name. '[a]' Cannot use [ [] ]<br>
     *         
     * <br>
     * 僾儘僷僥傿柤偵]乮攝楍偺婰崋乯偑擖偭偰偄傞僶僞乕儞
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesJavaBean06() throws Exception {
        // 慜張棟
        JXPathIndexedBeanWrapperImpl bw 
        = new JXPathIndexedBeanWrapperImpl(new Object());
    
        // 僥僗僩幚巤
        try {
            bw.getIndexedPropertyValues("[a]");
            fail();
        } catch (IllegalArgumentException e) {
            // 敾掕
            String expect = "Invalid character has found within property name. '[a]' Cannot use [ [] ]";
            assertEquals(expect, e.getMessage());
            assertTrue(LogUTUtil.checkError(expect));
        }
    }

    /**
     * testGetIndexedPropertyValuesJavaBean07()
     * <br><br>
     * 
     * (惓忢宯)
     * <br>
     * 娤揰丗C
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:"property"<br>
     *         (忬懺) this.context:JavaBean乷<br>
     *                  (僾儘僷僥傿柤=抣)<br>
     *                  property=null<br>
     *                乸<br>
     *         
     * <br>
     * 婜懸抣丗(栠傝抣) Map<String, Object>:Map<String, Object><br>
     *                  property=null<br>
     *         
     * <br>
     * 亂JavaBean偺僥僗僩亃<br>
     * null抣偺抣傪庢摼偡傞僥僗僩丅(Object宆乯
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesJavaBean07() throws Exception {
        // 慜張棟
        JXPathIndexedBeanWrapperImpl_JavaBeanStub01 bean 
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub01();
        bean.setProperty(null);
        
        JXPathIndexedBeanWrapperImpl bw 
            = new JXPathIndexedBeanWrapperImpl(bean);

        // 僥僗僩幚巤 
        Map<String, Object> result = bw.getIndexedPropertyValues("property"); 

        // 敾掕
        assertEquals(1, result.size());
        assertNull(result.get("property"));
        assertNull(PropertyUtils.getProperty(bean, "property"));
        assertNull(BeanUtils.getProperty(bean, "property"));
    }
    
    /**
     * testGetIndexedPropertyValuesJavaBean07()
     * <br><br>
     * 
     * (惓忢宯)
     * <br>
     * 娤揰丗C
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:"property"<br>
     *         (忬懺) this.context:JavaBean乷<br>
     *                  (僾儘僷僥傿柤=抣)<br>
     *                  property=null<br>
     *                乸<br>
     *         
     * <br>
     * 婜懸抣丗(栠傝抣) Map<String, Object>:Map<String, Object><br>
     *                  property=null<br>
     *         
     * <br>
     * 亂JavaBean偺僥僗僩亃<br>
     * null抣偺抣傪庢摼偡傞僥僗僩丅(String宆乯
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesJavaBean07_2() throws Exception {
        // 慜張棟
        JXPathIndexedBeanWrapperImpl_JavaBeanStub01 bean 
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub01();
        bean.setProperty2(null);
        
        JXPathIndexedBeanWrapperImpl bw 
            = new JXPathIndexedBeanWrapperImpl(bean);

        // 僥僗僩幚巤 
        Map<String, Object> result = bw.getIndexedPropertyValues("property2"); 

        // 敾掕
        assertEquals(1, result.size());
        assertTrue(result.containsKey("property2"));
        assertNull(result.get("property2"));
        assertNull(PropertyUtils.getProperty(bean, "property2"));
        assertNull(BeanUtils.getProperty(bean, "property2"));
    }
    
    /**
     * testGetIndexedPropertyValuesJavaBean07()
     * <br><br>
     * 
     * (惓忢宯)
     * <br>
     * 娤揰丗C
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:"property"<br>
     *         (忬懺) this.context:JavaBean乷<br>
     *                  (僾儘僷僥傿柤=抣)<br>
     *                  property=null<br>
     *                乸<br>
     *         
     * <br>
     * 婜懸抣丗(栠傝抣) Map<String, Object>:Map<String, Object><br>
     *                  property=null<br>
     *         
     * <br>
     * 亂JavaBean偺僥僗僩亃<br>
     * null抣偺抣傪庢摼偡傞僥僗僩丅(Date宆乯
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesJavaBean07_3() throws Exception {
        // 慜張棟
        JXPathIndexedBeanWrapperImpl_JavaBeanStub01 bean 
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub01();
        bean.setProperty3(null);
        
        JXPathIndexedBeanWrapperImpl bw 
            = new JXPathIndexedBeanWrapperImpl(bean);

        // 僥僗僩幚巤 
        Map<String, Object> result = bw.getIndexedPropertyValues("property3"); 

        // 敾掕
        assertEquals(1, result.size());
        assertTrue(result.containsKey("property3"));
        assertNull(result.get("property3"));
        assertNull(PropertyUtils.getProperty(bean, "property3"));
        assertNull(BeanUtils.getProperty(bean, "property3"));
    }
    
    /**
     * testGetIndexedPropertyValuesJavaBean07()
     * <br><br>
     * 
     * (惓忢宯)
     * <br>
     * 娤揰丗C
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:"property"<br>
     *         (忬懺) this.context:JavaBean乷<br>
     *                  (僾儘僷僥傿柤=抣)<br>
     *                  property=null<br>
     *                乸<br>
     *         
     * <br>
     * 婜懸抣丗(栠傝抣) Map<String, Object>:Map<String, Object><br>
     *                  property=null<br>
     *         
     * <br>
     * 亂JavaBean偺僥僗僩亃<br>
     * null抣偺抣傪庢摼偡傞僥僗僩丅(List宆乯
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesJavaBean07_4() throws Exception {
        // 慜張棟
        JXPathIndexedBeanWrapperImpl_JavaBeanStub01 bean 
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub01();
        bean.setProperty4(null);
        
        JXPathIndexedBeanWrapperImpl bw 
            = new JXPathIndexedBeanWrapperImpl(bean);

        // 僥僗僩幚巤 
        Map<String, Object> result = bw.getIndexedPropertyValues("property4"); 

        // 敾掕
        assertEquals(1, result.size());
        assertTrue(result.containsKey("property4"));
        assertNull(result.get("property4"));
        assertNull(PropertyUtils.getProperty(bean, "property4"));
        assertNull(BeanUtils.getProperty(bean, "property4"));
    }
    
    /**
     * testGetIndexedPropertyValuesJavaBean07()
     * <br><br>
     * 
     * (惓忢宯)
     * <br>
     * 娤揰丗C
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:"property"<br>
     *         (忬懺) this.context:JavaBean乷<br>
     *                  (僾儘僷僥傿柤=抣)<br>
     *                  property=null<br>
     *                乸<br>
     *         
     * <br>
     * 婜懸抣丗(栠傝抣) Map<String, Object>:Map<String, Object><br>
     *                  property=null<br>
     *         
     * <br>
     * 亂JavaBean偺僥僗僩亃<br>
     * null抣偺抣傪庢摼偡傞僥僗僩丅(int[]宆乯
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesJavaBean07_5() throws Exception {
        // 慜張棟
        JXPathIndexedBeanWrapperImpl_JavaBeanStub01 bean 
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub01();
        bean.setProperty5(null);
        
        JXPathIndexedBeanWrapperImpl bw 
            = new JXPathIndexedBeanWrapperImpl(bean);

        // 僥僗僩幚巤 
        Map<String, Object> result = bw.getIndexedPropertyValues("property5"); 

        // 敾掕
        assertEquals(1, result.size());
        assertTrue(result.containsKey("property5"));
        assertNull(result.get("property5"));
        assertNull(PropertyUtils.getProperty(bean, "property5"));
        assertNull(BeanUtils.getProperty(bean, "property5"));
    }
    
    /**
     * testGetIndexedPropertyValuesJavaBean07()
     * <br><br>
     * 
     * (惓忢宯)
     * <br>
     * 娤揰丗C
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:"property"<br>
     *         (忬懺) this.context:JavaBean乷<br>
     *                  (僾儘僷僥傿柤=抣)<br>
     *                  property=new ArrayList()<br>
     *                乸<br>
     *         
     * <br>
     * 婜懸抣丗(栠傝抣) Map<String, Object>:Map<String, Object><br>
     *                  <br>
     *         
     * <br>
     * 亂JavaBean偺僥僗僩亃<br>
     * 嬻偺儕僗僩抣傪庢摼偡傞僥僗僩丅
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesJavaBean07_6() throws Exception {
        // 慜張棟
        JXPathIndexedBeanWrapperImpl_JavaBeanStub01 bean 
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub01();
        bean.setProperty4(new ArrayList());
        
        JXPathIndexedBeanWrapperImpl bw 
            = new JXPathIndexedBeanWrapperImpl(bean);

        // 僥僗僩幚巤 
        Map<String, Object> result = bw.getIndexedPropertyValues("property4"); 

        // 敾掕
        assertEquals(0, result.size());
    }
    
    /**
     * testGetIndexedPropertyValuesJavaBean07()
     * <br><br>
     * 
     * (惓忢宯)
     * <br>
     * 娤揰丗C
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:"property"<br>
     *         (忬懺) this.context:JavaBean乷<br>
     *                  (僾儘僷僥傿柤=抣)<br>
     *                  property=new int[]<br>
     *                乸<br>
     *         
     * <br>
     * 婜懸抣丗(栠傝抣) Map<String, Object>:Map<String, Object><br>
     *                  <br>
     *         
     * <br>
     * 亂JavaBean偺僥僗僩亃<br>
     * 嬻偺int攝楍傪庢摼偡傞僥僗僩丅
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesJavaBean07_7() throws Exception {
        // 慜張棟
        JXPathIndexedBeanWrapperImpl_JavaBeanStub01 bean 
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub01();
        bean.setProperty5(new int[]{});
        
        JXPathIndexedBeanWrapperImpl bw 
            = new JXPathIndexedBeanWrapperImpl(bean);

        // 僥僗僩幚巤 
        Map<String, Object> result = bw.getIndexedPropertyValues("property5"); 

        // 敾掕
        assertEquals(0, result.size());
    }
    
    /**
     * testGetIndexedPropertyValuesJavaBean07()
     * <br><br>
     * 
     * (惓忢宯)
     * <br>
     * 娤揰丗C
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:"property"<br>
     *         (忬懺) this.context:JavaBean乷<br>
     *                  (僾儘僷僥傿柤=抣)<br>
     *                  property=null<br>
     *                乸<br>
     *         
     * <br>
     * 婜懸抣丗(栠傝抣) Map<String, Object>:Map<String, Object><br>
     *                  property=null<br>
     *         
     * <br>
     * 亂JavaBean偺僥僗僩亃<br>
     * null抣偺抣傪庢摼偡傞僥僗僩丅(List宆乯
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesJavaBean07_8() throws Exception {
        // 慜張棟
        JXPathIndexedBeanWrapperImpl_JavaBeanStub01 bean 
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub01();
        bean.setObjectArray(null);
        
        JXPathIndexedBeanWrapperImpl bw 
            = new JXPathIndexedBeanWrapperImpl(bean);

        // 僥僗僩幚巤 
        Map<String, Object> result = bw.getIndexedPropertyValues("objectArray"); 

        // 敾掕
        assertEquals(1, result.size());
        assertTrue(result.containsKey("objectArray"));
        assertNull(result.get("objectArray"));
        assertNull(PropertyUtils.getProperty(bean, "objectArray"));
        assertNull(BeanUtils.getProperty(bean, "objectArray"));
    }

    /**
     * testGetIndexedPropertyValuesJavaBean08()
     * <br><br>
     * 
     * (惓忢宯)
     * <br>
     * 娤揰丗C
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:"foo"<br>
     *         (忬懺) this.context:JavaBean乷<br>
     *                  乮僾儘僷僥傿柤=抣乯<br>
     *                丂foo="test"<br>
     *                乸<br>
     *         
     * <br>
     * 婜懸抣丗(栠傝抣) Map<String, Object>:Map<String, Object><br>
     *                  foo="test"<br>
     *         
     * <br>
     * 亂JavaBean偺僥僗僩亃<br>
     * String宆偺抣傪庢摼偡傞僥僗僩丅
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesJavaBean08() throws Exception {
        // 慜張棟
        JXPathIndexedBeanWrapperImpl_JavaBeanStub01 bean 
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub01();
        bean.setProperty("test");
        
        JXPathIndexedBeanWrapperImpl bw 
            = new JXPathIndexedBeanWrapperImpl(bean);
    
        // 僥僗僩幚巤
        Map<String, Object> map = bw.getIndexedPropertyValues("property"); 
    
        // 敾掕
        assertEquals(1, map.size());
        assertTrue(map.containsKey("property"));
        assertEquals("test", map.get("property"));
        assertEquals("test", PropertyUtils.getProperty(bean, "property"));
        assertEquals("test", BeanUtils.getProperty(bean, "property"));
    }

    /**
     * testGetIndexedPropertyValuesJavaBean09()
     * <br><br>
     * 
     * (惓忢宯)
     * <br>
     * 娤揰丗A
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:"foo"<br>
     *         (忬懺) this.context:JavaBean乷<br>
     *                  乮僾儘僷僥傿柤=抣乯<br>
     *                丂foo=false<br>
     *                乸<br>
     *         
     * <br>
     * 婜懸抣丗(栠傝抣) Map<String, Object>:Map<String, Object><br>
     *                  foo=false<br>
     *         
     * <br>
     * 亂JavaBean偺僥僗僩亃<br>
     * boolean宆偺抣傪庢摼偡傞僥僗僩丅
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesJavaBean09() throws Exception {
        // 慜張棟
        JXPathIndexedBeanWrapperImpl_JavaBeanStub01 bean 
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub01();
        bean.setBoolProperty(false);
        
        JXPathIndexedBeanWrapperImpl bw 
            = new JXPathIndexedBeanWrapperImpl(bean);
    
        // 僥僗僩幚巤
        Map<String, Object> result = bw.getIndexedPropertyValues("boolProperty"); 
    
        // 敾掕
        assertEquals(1, result.size());
        assertTrue(result.containsKey("boolProperty"));
        assertFalse((Boolean) result.get("boolProperty"));
        assertEquals("false", PropertyUtils.getProperty(bean, "boolProperty").toString());
        assertEquals("false", BeanUtils.getProperty(bean, "boolProperty"));
    }

    /**
     * testGetIndexedPropertyValuesJavaBean10()
     * <br><br>
     * 
     * (惓忢宯)
     * <br>
     * 娤揰丗A
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:"foo.bar.hoge"<br>
     *         (忬懺) this.context:JavaBean乷<br>
     *                  乮僾儘僷僥傿柤=抣乯<br>
     *                丂foo.bar.hoge="test"<br>
     *                乸<br>
     *         
     * <br>
     * 婜懸抣丗(栠傝抣) Map<String, Object>:Map<String, Object><br>
     *                  foo.bar.hoge="test"<br>
     *         
     * <br>
     * 亂JavaBean偺僥僗僩亃<br>
     * 僱僗僩偟偨抣傪庢摼偡傞僥僗僩丅
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesJavaBean10() throws Exception {
        // 慜張棟
        JXPathIndexedBeanWrapperImpl_JavaBeanStub03 bean
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub03();
        // foo
        JXPathIndexedBeanWrapperImpl_JavaBeanStub03.Foo foo
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub03.Foo();
    
        // bar
        JXPathIndexedBeanWrapperImpl_JavaBeanStub03.Bar bar
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub03.Bar();
        // hoge
        bar.setHoge("test");
    
        // foo.bar.hoge
        foo.setBar(bar);
        bean.setFoo(foo);
        
        JXPathIndexedBeanWrapperImpl bw =
            new JXPathIndexedBeanWrapperImpl(bean);
    
        // 僥僗僩幚巤
        Map<String, Object> result = bw.getIndexedPropertyValues("foo.bar.hoge");
    
        // 敾掕
        assertEquals(1, result.size());
        assertTrue(result.containsKey("foo.bar.hoge"));
        assertEquals("test", result.get("foo.bar.hoge"));
        assertEquals("test", PropertyUtils.getProperty(bean, "foo.bar.hoge"));
        assertEquals("test", BeanUtils.getProperty(bean, "foo.bar.hoge"));
    }

    /**
     * testGetIndexedPropertyValuesJavaBean11()
     * <br><br>
     * 
     * (惓忢宯)
     * <br>
     * 娤揰丗A
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:"foo.bar.hoge"<br>
     *         (忬懺) this.context:JavaBean乷<br>
     *                  乮僾儘僷僥傿柤=抣乯<br>
     *                丂foo[0].bar.hoge="test0"<br>
     *                  foo[1].bar.hoge="test1"<br>
     *                  foo[2].bar.hoge="test2"<br>
     *                乸<br>
     *         
     * <br>
     * 婜懸抣丗(栠傝抣) Map<String, Object>:Map<String, Object><br>
     *                  foo[0].bar.hoge="test0"<br>
     *                  foo[1].bar.hoge="test1"<br>
     *                  foo[2].bar.hoge="test2"<br>
     *         
     * <br>
     * 亂JavaBean偺僥僗僩亃<br>
     * 僆僽僕僃僋僩攝楍偺抣傪庢摼偡傞僥僗僩丅
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesJavaBean11() throws Exception {
        // 慜張棟
        JXPathIndexedBeanWrapperImpl_JavaBeanStub04 bean =
            new JXPathIndexedBeanWrapperImpl_JavaBeanStub04();

        // foos[0]
        JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Foo foo1 =
            new JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Foo();

        // foos[1]
        JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Foo foo2
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Foo();

        // foos[2]
        JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Foo foo3
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Foo();
        
        // foos
        bean.setFoos(
                new JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Foo[]{foo1, foo2, foo3});

        // foos[0].bar
        JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Bar bar1
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Bar();
        foo1.setBar(bar1);

        // foos[1].bar
        JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Bar bar2
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Bar();
        foo2.setBar(bar2);

        // foos[2].bar
        JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Bar bar3
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Bar();
        foo3.setBar(bar3);

        // foos[0].bar.hoge="test0"
        bar1.setHoge("test0");
        // foos[1].bar.hoge="test1"
        bar2.setHoge("test1");
        // foos[2].bar.hoge="test2"
        bar3.setHoge("test2");
        
        JXPathIndexedBeanWrapperImpl bw =
            new JXPathIndexedBeanWrapperImpl(bean);

        // 僥僗僩幚巤
        Map<String, Object> result = bw.getIndexedPropertyValues("foos.bar.hoge");
    
        // 敾掕
        assertEquals(3, result.size());
        assertEquals("test0", result.get("foos[0].bar.hoge"));
        assertEquals("test1", result.get("foos[1].bar.hoge"));
        assertEquals("test2", result.get("foos[2].bar.hoge"));
        assertEquals("test0", PropertyUtils.getProperty(bean, "foos[0].bar.hoge"));
        assertEquals("test0", BeanUtils.getProperty(bean, "foos[0].bar.hoge"));
        assertEquals("test1", PropertyUtils.getProperty(bean, "foos[1].bar.hoge"));
        assertEquals("test1", BeanUtils.getProperty(bean, "foos[1].bar.hoge"));
        assertEquals("test2", PropertyUtils.getProperty(bean, "foos[2].bar.hoge"));
        assertEquals("test2", BeanUtils.getProperty(bean, "foos[2].bar.hoge"));
    }

    /**
     * testGetIndexedPropertyValuesJavaBean12()
     * <br><br>
     * 
     * (惓忢宯)
     * <br>
     * 娤揰丗A
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:"foo.bar.hoge"<br>
     *         (忬懺) this.context:JavaBean乷<br>
     *                  乮僾儘僷僥傿柤=抣乯<br>
     *                丂foo[0].bar.hoge="test0"<br>
     *                  foo[1].bar.hoge="test1"<br>
     *                  foo[2].bar.hoge="test2"<br>
     *                乸<br>
     *         
     * <br>
     * 婜懸抣丗(栠傝抣) Map<String, Object>:Map<String, Object><br>
     *                  foo[0].bar.hoge="test0"<br>
     *                  foo[1].bar.hoge="test1"<br>
     *                  foo[2].bar.hoge="test2"<br>
     *         
     * <br>
     * 亂JavaBean偺僥僗僩亃<br>
     * List抣傪庢摼偡傞僥僗僩丅
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesJavaBean12() throws Exception {
        // 慜張棟
        JXPathIndexedBeanWrapperImpl_JavaBeanStub04 bean =
            new JXPathIndexedBeanWrapperImpl_JavaBeanStub04();

        // foo
        List<JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Foo> fooList =
            new ArrayList<JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Foo>();

        // foo[0],foo[1],foo[2]
        // foo[0]
        JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Foo foo1
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Foo();
        fooList.add(foo1);

        // foo[1]
        JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Foo foo2
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Foo();
        fooList.add(foo2);

        // foo[2]
        JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Foo foo3
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Foo();
        fooList.add(foo3);

        // foo[0].bar
        JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Bar bar1
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Bar();
        foo1.setBar(bar1);

        // foo[1].bar
        JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Bar bar2
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Bar();
        foo2.setBar(bar2);

        // foo[2].bar
        JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Bar bar3
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Bar();
        foo3.setBar(bar3);

        // foo[0].bar.hoge="test0"
        bar1.setHoge("test0");
        // foo[1].bar.hoge="test1"
        bar2.setHoge("test1");
        // foo[2].bar.hoge="test2"
        bar3.setHoge("test2");

        bean.setFoo(fooList);
        
        JXPathIndexedBeanWrapperImpl bw =
            new JXPathIndexedBeanWrapperImpl(bean);

        // 僥僗僩幚巤
        Map<String, Object> result = bw.getIndexedPropertyValues("foo.bar.hoge");
    
        // 敾掕
        assertEquals(3, result.size());
        assertEquals("test0", result.get("foo[0].bar.hoge"));
        assertEquals("test1", result.get("foo[1].bar.hoge"));
        assertEquals("test2", result.get("foo[2].bar.hoge"));
        assertEquals("test0", PropertyUtils.getProperty(bean, "foo[0].bar.hoge"));
        assertEquals("test0", BeanUtils.getProperty(bean, "foo[0].bar.hoge"));
        assertEquals("test1", PropertyUtils.getProperty(bean, "foo[1].bar.hoge"));
        assertEquals("test1", BeanUtils.getProperty(bean, "foo[1].bar.hoge"));
        assertEquals("test2", PropertyUtils.getProperty(bean, "foo[2].bar.hoge"));
        assertEquals("test2", BeanUtils.getProperty(bean, "foo[2].bar.hoge"));
    }

    /**
     * testGetIndexedPropertyValuesJavaBean13()
     * <br><br>
     * 
     * (惓忢宯) 
     * <br>
     * 娤揰丗A
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:"foo.bar.hoge"<br>
     *         (忬懺) this.context:JavaBean乷<br>
     *                  乮僾儘僷僥傿柤=抣乯<br>
     *                丂foo[0].bar.hoge=null<br>
     *                  foo[1].bar.hoge="test1"<br>
     *                  foo[2].bar.hoge="test2"<br>
     *                乸<br>
     *         
     * <br>
     * 婜懸抣丗(栠傝抣) Map<String, Object>:Map<String, Object><br>
     *                  foo[0].bar.hoge=null<br>
     *                  foo[1].bar.hoge="test1"<br>
     *                  foo[2].bar.hoge="test2"<br>
     *         
     * <br>
     * 亂JavaBean偺僥僗僩亃<br>
     * 攝楍亄null崿偠傝偺抣傪庢摼偡傞僥僗僩丅
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesJavaBean13() throws Exception {
        // 慜張棟
        JXPathIndexedBeanWrapperImpl_JavaBeanStub04 bean =
            new JXPathIndexedBeanWrapperImpl_JavaBeanStub04();

        // foo
        List<JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Foo> fooList =
            new ArrayList<JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Foo>();

        // foo[0],foo[1],foo[2]
        // foo[0]
        JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Foo foo1
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Foo();
        fooList.add(foo1);

        // foo[1]
        JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Foo foo2
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Foo();
        fooList.add(foo2);

        // foo[2]
        JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Foo foo3
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Foo();
        fooList.add(foo3);

        // foo[0].bar
        JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Bar bar1
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Bar();
        foo1.setBar(bar1);

        // foo[1].bar
        JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Bar bar2
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Bar();
        foo2.setBar(bar2);

        // foo[2].bar
        JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Bar bar3
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Bar();
        foo3.setBar(bar3);

        // foo[0].bar.hoge=null
        bar1.setHoge(null);
        // foo[1].bar.hoge="test1"
        bar2.setHoge("test1");
        // foo[2].bar.hoge="test2"
        bar3.setHoge("test2");

        bean.setFoo(fooList);
        
        JXPathIndexedBeanWrapperImpl bw =
            new JXPathIndexedBeanWrapperImpl(bean);

        // 僥僗僩幚巤
        Map<String, Object> result = bw.getIndexedPropertyValues("foo.bar.hoge");
    
        // 敾掕
        assertEquals(3, result.size());
        assertNull(result.get("foo[0].bar.hoge"));
        assertEquals("test1", result.get("foo[1].bar.hoge"));
        assertEquals("test2", result.get("foo[2].bar.hoge"));
        assertNull(PropertyUtils.getProperty(bean, "foo[0].bar.hoge"));
        assertNull(BeanUtils.getProperty(bean, "foo[0].bar.hoge"));
        assertEquals("test1", PropertyUtils.getProperty(bean, "foo[1].bar.hoge"));
        assertEquals("test1", BeanUtils.getProperty(bean, "foo[1].bar.hoge"));
        assertEquals("test2", PropertyUtils.getProperty(bean, "foo[2].bar.hoge"));
        assertEquals("test2", BeanUtils.getProperty(bean, "foo[2].bar.hoge"));
    }

    /**
     * testGetIndexedPropertyValuesJavaBean14()
     * <br><br>
     * 
     * (惓忢宯) 
     * <br>
     * 娤揰丗A
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:"foo.bar.hoge"<br>
     *         (忬懺) this.context:JavaBean乷<br>
     *                  乮僾儘僷僥傿柤=抣乯<br>
     *                丂foo.bar[0].hoge[0]="test0"<br>
     *                  foo.bar[1].hoge[0]="test1"<br>
     *                  foo.bar[2].hoge[0]="test2"<br>
     *                  foo.bar[2].hoge[1]="test3"<br>
     *                  foo.bar[2].hoge[2]="test4"<br>
     *                乸<br>
     *         
     * <br>
     * 婜懸抣丗(栠傝抣) Map<String, Object>:Map<String, Object><br>
     *                  丂foo.bar[0].hoge[0]="test0"<br>
     *                    foo.bar[1].hoge[0]="test1"<br>
     *                    foo.bar[2].hoge[0]="test2"<br>
     *                    foo.bar[2].hoge[1]="test3"<br>
     *                    foo.bar[2].hoge[2]="test4"<br>
     *         
     * <br>
     * 亂JavaBean偺僥僗僩亃<br>
     * 僱僗僩亄攝楍偺抣傪庢摼偡傞僥僗僩丅
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesJavaBean14() throws Exception {
        // 慜張棟
        JXPathIndexedBeanWrapperImpl_JavaBeanStub05 bean
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub05();
    
        // foo
        JXPathIndexedBeanWrapperImpl_JavaBeanStub05.Foo foo
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub05.Foo();
        bean.setFoo(foo);
    
        // foo.bar[0]
        JXPathIndexedBeanWrapperImpl_JavaBeanStub05.Bar bar0
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub05.Bar();
        // foo.bar[1]
        JXPathIndexedBeanWrapperImpl_JavaBeanStub05.Bar bar1
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub05.Bar();
        // foo.bar[2]
        JXPathIndexedBeanWrapperImpl_JavaBeanStub05.Bar bar2
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub05.Bar();
        // foo.bar[]
        List<JXPathIndexedBeanWrapperImpl_JavaBeanStub05.Bar> barList
            = new ArrayList<JXPathIndexedBeanWrapperImpl_JavaBeanStub05.Bar>();
        // foo.bar[0]
        barList.add(bar0);
        // foo.bar[1]
        barList.add(bar1);
        // foo.bar[2]
        barList.add(bar2);
    
        //foo.bar
        foo.setBar(barList);
    
        // foo.bar[0].hoge[0]="test0"
        List<String> hoge0 = new ArrayList<String>();
        hoge0.add("test0");
        bar0.setHoge(hoge0);
    
        // foo.bar[1].hoge[0]="test1"
        List<String> hoge1 = new ArrayList<String>();
        hoge1.add("test1");
        bar1.setHoge(hoge1);
    
        // foo.bar[2].hoge[0]="test2"
        // foo.bar[2].hoge[1]="test3"
        // foo.bar[2].hoge[2]="test4"
        List<String> hoge2 = new ArrayList<String>();
        hoge2.add("test2");
        hoge2.add("test3");
        hoge2.add("test4");
        bar2.setHoge(hoge2);

        JXPathIndexedBeanWrapperImpl bw =
            new JXPathIndexedBeanWrapperImpl(bean);

        // 僥僗僩幚巤
        Map<String, Object> result = bw.getIndexedPropertyValues("foo.bar.hoge");
    
        // 敾掕
        assertEquals(5, result.size());
        assertEquals("test0", result.get("foo.bar[0].hoge[0]"));
        assertEquals("test1", result.get("foo.bar[1].hoge[0]"));
        assertEquals("test2", result.get("foo.bar[2].hoge[0]"));
        assertEquals("test3", result.get("foo.bar[2].hoge[1]"));
        assertEquals("test4", result.get("foo.bar[2].hoge[2]"));
        assertEquals("test0", PropertyUtils.getProperty(bean, "foo.bar[0].hoge[0]"));
        assertEquals("test0", BeanUtils.getProperty(bean, "foo.bar[0].hoge[0]"));
        assertEquals("test1", PropertyUtils.getProperty(bean, "foo.bar[1].hoge[0]"));
        assertEquals("test1", BeanUtils.getProperty(bean, "foo.bar[1].hoge[0]"));
        assertEquals("test2", PropertyUtils.getProperty(bean, "foo.bar[2].hoge[0]"));
        assertEquals("test2", BeanUtils.getProperty(bean, "foo.bar[2].hoge[0]"));
        assertEquals("test3", PropertyUtils.getProperty(bean, "foo.bar[2].hoge[1]"));
        assertEquals("test3", BeanUtils.getProperty(bean, "foo.bar[2].hoge[1]"));
        assertEquals("test4", PropertyUtils.getProperty(bean, "foo.bar[2].hoge[2]"));
        assertEquals("test4", BeanUtils.getProperty(bean, "foo.bar[2].hoge[2]"));
    }

    /**
     * testGetIndexedPropertyValuesJavaBean15()
     * <br><br>
     * 
     * (惓忢宯)
     * <br>
     * 娤揰丗A
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:"foo.bar.hoge"<br>
     *         (忬懺) this.context:JavaBean乷<br>
     *                  乮僾儘僷僥傿柤=抣乯<br>
     *                丂foo.bar[0].hoge[0]="test0"<br>
     *                  foo.bar[1]=null<br>
     *                  foo.bar[2].hoge[0]="test2"<br>
     *                  foo.bar[2].hoge[1]="test3"<br>
     *                  foo.bar[2].hoge[2]="test4"<br>
     *                乸<br>
     *         
     * <br>
     * 婜懸抣丗(栠傝抣) Map<String, Object>:Map<String, Object><br>
     *                  丂foo.bar[0].hoge[0]="test0"<br>
     *                    foo.bar[2].hoge[0]="test2"<br>
     *                    foo.bar[2].hoge[1]="test3"<br>
     *                    foo.bar[2].hoge[2]="test4"<br>
     *         
     * <br>
     * 亂JavaBean偺僥僗僩亃<br>
     * 僱僗僩亄攝楍亄null偑崿偠傞僷僞乕儞偺抣傪庢摼偡傞僥僗僩丅
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesJavaBean15() throws Exception {
        // 慜張棟
        JXPathIndexedBeanWrapperImpl_JavaBeanStub05 bean
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub05();
    
        // foo
        JXPathIndexedBeanWrapperImpl_JavaBeanStub05.Foo foo
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub05.Foo();
        bean.setFoo(foo);
    
        // foo.bar[0]
        JXPathIndexedBeanWrapperImpl_JavaBeanStub05.Bar bar0
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub05.Bar();
        // foo.bar[1]
        JXPathIndexedBeanWrapperImpl_JavaBeanStub05.Bar bar1 = null;
        // foo.bar[2]
        JXPathIndexedBeanWrapperImpl_JavaBeanStub05.Bar bar2
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub05.Bar();
        // foo.bar[]
        List<JXPathIndexedBeanWrapperImpl_JavaBeanStub05.Bar> barList
            = new ArrayList<JXPathIndexedBeanWrapperImpl_JavaBeanStub05.Bar>();
        // foo.bar[0]
        barList.add(bar0);
        // foo.bar[1]
        barList.add(bar1);
        // foo.bar[2]
        barList.add(bar2);
    
        //foo.bar
        foo.setBar(barList);
    
        // foo.bar[0].hoge[0]="test0"
        List<String> hoge0 = new ArrayList<String>();
        hoge0.add("test0");
        bar0.setHoge(hoge0);
    
        // foo.bar[1]=null
    
        // foo.bar[2].hoge[0]="test2"
        // foo.bar[2].hoge[1]="test3"
        // foo.bar[2].hoge[2]="test4"
        List<String> hoge2 = new ArrayList<String>();
        hoge2.add("test2");
        hoge2.add("test3");
        hoge2.add("test4");
        bar2.setHoge(hoge2);
    
        JXPathIndexedBeanWrapperImpl bw =
            new JXPathIndexedBeanWrapperImpl(bean);
    
        // 僥僗僩幚巤
        Map<String, Object> result = bw.getIndexedPropertyValues("foo.bar.hoge");
    
        // 敾掕
        assertEquals(4, result.size());
        assertEquals("test0", result.get("foo.bar[0].hoge[0]"));
        assertEquals("test2", result.get("foo.bar[2].hoge[0]"));
        assertEquals("test3", result.get("foo.bar[2].hoge[1]"));
        assertEquals("test4", result.get("foo.bar[2].hoge[2]"));
        
        assertEquals("test0", PropertyUtils.getProperty(bean, "foo.bar[0].hoge[0]"));
        assertEquals("test0", BeanUtils.getProperty(bean, "foo.bar[0].hoge[0]"));
        assertEquals("test2", PropertyUtils.getProperty(bean, "foo.bar[2].hoge[0]"));
        assertEquals("test2", BeanUtils.getProperty(bean, "foo.bar[2].hoge[0]"));
        assertEquals("test3", PropertyUtils.getProperty(bean, "foo.bar[2].hoge[1]"));
        assertEquals("test3", BeanUtils.getProperty(bean, "foo.bar[2].hoge[1]"));
        assertEquals("test4", PropertyUtils.getProperty(bean, "foo.bar[2].hoge[2]"));
        assertEquals("test4", BeanUtils.getProperty(bean, "foo.bar[2].hoge[2]"));
    }

    /**
     * testGetIndexedPropertyValuesJavaBean16()
     * <br><br>
     * 
     * (惓忢宯)
     * <br>
     * 娤揰丗A
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:"map乮key乯"<br>
     *         (忬懺) this.context:JavaBean乷<br>
     *                  乮僾儘僷僥傿柤=抣乯<br>
     *                丂map=Map{<br>
     *                            key="test"<br>
     *                         }<br>
     *                乸<br>
     *         
     * <br>
     * 婜懸抣丗(栠傝抣) Map<String, Object>:Map<String, Object><br>
     *                  map(key)="test"<br>
     *         
     * <br>
     * 亂JavaBean偺僥僗僩亃<br>
     * Map宆偺懏惈傪庢摼偡傞僥僗僩丅
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesJavaBean16() throws Exception {
        // 慜張棟
        JXPathIndexedBeanWrapperImpl_JavaBeanStub01 bean 
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub01();
        Map<String, String> map = new HashMap<String, String>();
        map.put("key", "test");
//        map.put("key", null);
        bean.setMap(map);
        
        JXPathIndexedBeanWrapperImpl bw 
            = new JXPathIndexedBeanWrapperImpl(bean);
    
        // 僥僗僩幚巤
        Map<String, Object> result = bw.getIndexedPropertyValues("map(key)"); 
    
        // 敾掕
        assertEquals(1, result.size());
        assertEquals("test", result.get("map(key)"));
        assertEquals("test", PropertyUtils.getProperty(bean, "map(key)"));
        assertEquals("test", BeanUtils.getProperty(bean, "map(key)"));
    }

    /**
     * testGetIndexedPropertyValuesJavaBean17()
     * <br><br>
     * 
     * (惓忢宯)
     * <br>
     * 娤揰丗A
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:"map乮key乯"<br>
     *         (忬懺) this.context:JavaBean乷<br>
     *                  乮僾儘僷僥傿柤=抣乯<br>
     *                丂map=Map{<br>
     *                            key=(List)<br>
     *                丂丂丂丂丂丂丂丂丂嚇[0] = 1<br>
     *                                        [1] = 2<br>
     *                                        [2] = 3<br>
     *                         }<br>
     *                乸<br>
     *         
     * <br>
     * 婜懸抣丗(栠傝抣) Map<String, Object>:Map<String, Object><br>
     *                  map(key)[0]=1<br>
     *                  map(key)[1]=2<br>
     *                  map(key)[2]=3<br>
     *         
     * <br>
     * 亂JavaBean偺僥僗僩亃<br>
     * Map宆偺懏惈偐傜List抣傪庢摼偡傞僥僗僩丅
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesJavaBean17() throws Exception {
        // 慜張棟
        JXPathIndexedBeanWrapperImpl_JavaBeanStub01 bean 
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub01();
        List<Integer> list = new ArrayList<Integer>();
        list.add(1);
        list.add(2);
        list.add(3);
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("key", list);
        bean.setMap(map);
        
        JXPathIndexedBeanWrapperImpl bw 
            = new JXPathIndexedBeanWrapperImpl(bean);
    
        // 僥僗僩幚巤
        Map<String, Object> result = bw.getIndexedPropertyValues("map(key)"); 
    
        // 敾掕
        assertEquals(3, result.size());
        assertEquals(1, result.get("map(key)[0]"));
        assertEquals(2, result.get("map(key)[1]"));
        assertEquals(3, result.get("map(key)[2]"));
    }

    /**
     * testGetIndexedPropertyValuesJavaBean18()
     * <br><br>
     * 
     * (惓忢宯)
     * <br>
     * 娤揰丗A
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:"map乮key乯.value"<br>
     *         (忬懺) this.context:JavaBean乷<br>
     *                  乮僾儘僷僥傿柤=抣乯<br>
     *                丂map=Map{<br>
     *                            key=new Bean()<br>
     *                                            嚇value="test"<br>
     *                         }<br>
     *                乸<br>
     *         
     * <br>
     * 婜懸抣丗(栠傝抣) Map<String, Object>:Map<String, Object><br>
     *                  map(key).value="test"<br>
     *         
     * <br>
     * 亂JavaBean偺僥僗僩亃<br>
     * 僱僗僩偟偨Map宆偺懏惈傪庢摼偡傞僥僗僩丅
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesJavaBean18() throws Exception {
        // 慜張棟
        JXPathIndexedBeanWrapperImpl_JavaBeanStub01 bean 
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub01();
        JXPathIndexedBeanWrapperImpl_JavaBeanStub01 subBean 
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub01();
        subBean.setProperty("test");
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("key", subBean);
        bean.setMap(map);
        
        JXPathIndexedBeanWrapperImpl bw 
            = new JXPathIndexedBeanWrapperImpl(bean);
    
        // 僥僗僩幚巤
        Map<String, Object> result = bw.getIndexedPropertyValues("map(key).property"); 
    
        // 敾掕
        assertEquals(1, result.size());
        assertEquals("test", result.get("map(key).property"));
        assertEquals("test", PropertyUtils.getProperty(bean, "map(key).property"));
        assertEquals("test", BeanUtils.getProperty(bean, "map(key).property"));
    }

    /**
     * testGetIndexedPropertyValuesJavaBean19()
     * <br><br>
     * 
     * (惓忢宯)
     * <br>
     * 娤揰丗A
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:"aaa"<br>
     *         (忬懺) this.context:JavaBean乷<br>
     *                  乮僾儘僷僥傿柤=抣乯<br>
     *                丂foo="test"<br>
     *                乸<br>
     *         
     * <br>
     * 婜懸抣丗(栠傝抣) Map<String, Object>:Map<String, Object><br>
     *                  嬻偺儅僢僾<br>
     *         
     * <br>
     * 亂JavaBean偺僥僗僩亃<br>
     * 懚嵼偟側偄僾儘僷僥傿柤偵傾僋僙僗偟偨偲偒偺僥僗僩丅
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesJavaBean19() throws Exception {
        // 慜張棟
        JXPathIndexedBeanWrapperImpl_JavaBeanStub01 bean 
        = new JXPathIndexedBeanWrapperImpl_JavaBeanStub01();
        bean.setProperty("test");
        
        JXPathIndexedBeanWrapperImpl bw 
            = new JXPathIndexedBeanWrapperImpl(bean);
    
        // 僥僗僩幚巤
        Map<String, Object> result = bw.getIndexedPropertyValues("aaa"); 
    
        // 敾掕
        assertEquals(0, result.size());
    }

    /**
     * testGetIndexedPropertyValuesMap01()
     * <br><br>
     * 
     * (惓忢宯) 
     * <br>
     * 娤揰丗A
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:key<br>
     *         (忬懺) this.context:Map<String, Object><br>
     *                key="value"<br>
     *         
     * <br>
     * 婜懸抣丗(栠傝抣) Map<String, Object>:Map<String, Object><br>
     *                  key="value"<br>
     *         
     * <br>
     * 亂Map宆偺僥僗僩亃<br>
     * String宆偺抣傪庢摼偡傞僥僗僩丅
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesMap01() throws Exception {
        // 慜張棟
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("key", "value");
        
        JXPathIndexedBeanWrapperImpl bw 
            = new JXPathIndexedBeanWrapperImpl(map);
    
        // 僥僗僩幚巤
        Map<String, Object> result = bw.getIndexedPropertyValues("key"); 
    
        // 敾掕
        assertEquals(1, result.size());
        assertEquals("value", result.get("key"));
        assertEquals("value", PropertyUtils.getProperty(map, "key"));
        assertEquals("value", BeanUtils.getProperty(map, "key"));
    }

    /**
     * testGetIndexedPropertyValuesMap02()
     * <br><br>
     * 
     * (惓忢宯)
     * <br>
     * 娤揰丗A
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:key<br>
     *         (忬懺) this.context:Map<String, Object><br>
     *                key=null<br>
     *         
     * <br>
     * 婜懸抣丗(栠傝抣) Map<String, Object>:Map<String, Object><br>
     *                  key=null<br>
     *         
     * <br>
     * 亂Map宆偺僥僗僩亃<br>
     * null抣傪庢摼偡傞僥僗僩丅
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesMap02() throws Exception {
        // 慜張棟
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("key", null);
        
        JXPathIndexedBeanWrapperImpl bw 
            = new JXPathIndexedBeanWrapperImpl(map);
    
        // 僥僗僩幚巤
        Map<String, Object> result = bw.getIndexedPropertyValues("key"); 
    
        // 敾掕
        assertEquals(1, result.size());
        assertNull(result.get("key"));
        assertNull(PropertyUtils.getProperty(map, "key"));
        assertNull(BeanUtils.getProperty(map, "key"));
    }

    /**
     * testGetIndexedPropertyValuesMap03()
     * <br><br>
     * 
     * (惓忢宯)
     * <br>
     * 娤揰丗A
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:key<br>
     *         (忬懺) this.context:Map<String, Object><br>
     *                嬻偺Map<br>
     *         
     * <br>
     * 婜懸抣丗(栠傝抣) Map<String, Object>:Map<String, Object><br>
     *                  嬻偺Map<br>
     *         
     * <br>
     * 亂Map宆偺僥僗僩亃<br>
     * 懚嵼偟側偄僉乕柤傪傕偲偵僆僽僕僃僋僩傪庢摼偡傞僥僗僩丅
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesMap03() throws Exception {
        // 慜張棟
        Map<String, Object> map = new HashMap<String, Object>();
        
        JXPathIndexedBeanWrapperImpl bw 
            = new JXPathIndexedBeanWrapperImpl(map);
    
        // 僥僗僩幚巤
        Map<String, Object> result = bw.getIndexedPropertyValues("key"); 
    
        // 敾掕
        assertEquals(0, result.size());
    }

    /**
     * testGetIndexedPropertyValuesMap04()
     * <br><br>
     * 
     * (惓忢宯)
     * <br>
     * 娤揰丗A
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:ints<br>
     *         (忬懺) this.context:Map<String, Object><br>
     *                ints=int[]{1,2,3}<br>
     *         
     * <br>
     * 婜懸抣丗(栠傝抣) Map<String, Object>:Map<String, Object><br>
     *                  ints[0]=1<br>
     *                  ints[1]=2<br>
     *                  ints[2]=3<br>
     *         
     * <br>
     * 亂Map宆偺僥僗僩亃<br>
     * int宆攝楍傪庢摼偡傞僥僗僩丅
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesMap04() throws Exception {
        // 慜張棟
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("ints", new int[]{1, 2, 3});
        
        JXPathIndexedBeanWrapperImpl bw 
            = new JXPathIndexedBeanWrapperImpl(map);
    
        // 僥僗僩幚巤
        Map<String, Object> result = bw.getIndexedPropertyValues("ints"); 
    
        // 敾掕
        assertEquals(3, result.size());
        assertEquals(1, result.get("ints[0]"));
        assertEquals(2, result.get("ints[1]"));
        assertEquals(3, result.get("ints[2]"));
    }

    /**
     * testGetIndexedPropertyValuesMap05()
     * <br><br>
     * 
     * (惓忢宯) 
     * <br>
     * 娤揰丗A
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:numbers<br>
     *         (忬懺) this.context:Map<String, Object><br>
     *                numbers=Long[]{1,2,3}<br>
     *         
     * <br>
     * 婜懸抣丗(栠傝抣) Map<String, Object>:Map<String, Object><br>
     *                  numbers[0]=1<br>
     *                  numbers[1]=2<br>
     *                  numbers[2]=3<br>
     *         
     * <br>
     * 亂Map宆偺僥僗僩亃<br>
     * Long宆攝楍傪庢摼偡傞僥僗僩丅
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesMap05() throws Exception {
        // 慜張棟
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("numbers", new Long[]{new Long(1), new Long(2), new Long(3)});
        
        JXPathIndexedBeanWrapperImpl bw 
            = new JXPathIndexedBeanWrapperImpl(map);
    
        // 僥僗僩幚巤
        Map<String, Object> result = bw.getIndexedPropertyValues("numbers"); 
    
        // 敾掕
        assertEquals(3, result.size());
        assertEquals(new Long(1), result.get("numbers[0]"));
        assertEquals(new Long(2), result.get("numbers[1]"));
        assertEquals(new Long(3), result.get("numbers[2]"));
    }

    /**
     * testGetIndexedPropertyValuesMap06()
     * <br><br>
     * 
     * (惓忢宯)
     * <br>
     * 娤揰丗A
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:numbers<br>
     *         (忬懺) this.context:Map<String, Object><br>
     *                numbers=List{1,2,3}<br>
     *         
     * <br>
     * 婜懸抣丗(栠傝抣) Map<String, Object>:Map<String, Object><br>
     *                  numbers[0]=1<br>
     *                  numbers[1]=2<br>
     *                  numbers[2]=3<br>
     *         
     * <br>
     * 亂Map宆偺僥僗僩亃<br>
     * Long宆List傪庢摼偡傞僥僗僩丅
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesMap06() throws Exception {
        // 慜張棟
        Map<String, Object> map = new HashMap<String, Object>();
        List<Long> list = new ArrayList<Long>();
        list.add(new Long(1));
        list.add(new Long(2));
        list.add(new Long(3));
        map.put("numbers", list);
        
        JXPathIndexedBeanWrapperImpl bw 
            = new JXPathIndexedBeanWrapperImpl(map);
    
        // 僥僗僩幚巤
        Map<String, Object> result = bw.getIndexedPropertyValues("numbers"); 
    
        // 敾掕
        assertEquals(3, result.size());
        assertEquals(new Long(1), result.get("numbers[0]"));
        assertEquals(new Long(2), result.get("numbers[1]"));
        assertEquals(new Long(3), result.get("numbers[2]"));
    }

    /**
     * testGetIndexedPropertyValuesMap07()
     * <br><br>
     * 
     * (惓忢宯)
     * <br>
     * 娤揰丗A
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:bean.subBean.property<br>
     *         (忬懺) this.context:Map<String, Object><br>
     *                foo=new Foo()<br>
     *                           嚇bar=new Bar()<br>
     *                丂丂丂丂丂丂丂丂     嚇hoge="value"<br>
     *         
     * <br>
     * 婜懸抣丗(栠傝抣) Map<String, Object>:Map<String, Object><br>
     *                  bean.subBean.property="value"<br>
     *         
     * <br>
     * 亂Map宆偺僥僗僩亃<br>
     * 僱僗僩偟偨僾儘僷僥傿傪庢摼偡傞僥僗僩丅
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesMap07() throws Exception {
        // 慜張棟
        Map<String, Object> map = new HashMap<String, Object>();
        
        // bar="value"
        JXPathIndexedBeanWrapperImpl_JavaBeanStub03.Bar bar
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub03.Bar();
        bar.setHoge("value");
        
        // foo
        JXPathIndexedBeanWrapperImpl_JavaBeanStub03.Foo foo
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub03.Foo();
        foo.setBar(bar);
        
        map.put("foo", foo);
        
        JXPathIndexedBeanWrapperImpl bw 
            = new JXPathIndexedBeanWrapperImpl(map);
    
        // 僥僗僩幚巤
        Map<String, Object> result = bw.getIndexedPropertyValues("foo.bar.hoge"); 
    
        // 敾掕
        assertEquals(1, result.size());
        assertEquals("value", result.get("foo.bar.hoge"));
        assertEquals("value", PropertyUtils.getProperty(map, "foo.bar.hoge"));
        assertEquals("value", BeanUtils.getProperty(map, "foo.bar.hoge"));
    }

    /**
     * testGetIndexedPropertyValuesMap08()
     * <br><br>
     * 
     * (惓忢宯)
     * <br>
     * 娤揰丗A
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:beans.subBean.property<br>
     *         (忬懺) this.context:Map<String, Object><br>
     *                foo=new Foo[3]<br>
     *                           嚇[0] new Foo()<br>
     *                                       嚇bar=new Bar()<br>
     *                丂丂丂丂丂丂丂丂丂丂                嚇hoge="value1"<br>
     *                           嚇[1] null<br>
     *                           嚇[2] new Foo()<br>
     *                                       嚇bar=new Bar()<br>
     *                丂丂丂丂丂丂丂丂丂丂                嚇hoge="value2"<br>
     *         
     * <br>
     * 婜懸抣丗(栠傝抣) Map<String, Object>:Map<String, Object><br>
     *                  foo[0].bar.hoge="value1"<br>
     *                  foo[2].bar.hoge="value3"<br>
     *         
     * <br>
     * 亂Map宆偺僥僗僩亃<br>
     * 僱僗僩亄攝楍僾儘僷僥傿傪庢摼偡傞僥僗僩丅
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesMap08() throws Exception {
        // 慜張棟
        Map<String, Object> map = new HashMap<String, Object>();
        
        // foo
        List<JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Foo> fooList
            = new ArrayList<JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Foo>();
        
        // foo[0]
        JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Foo foo0
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Foo();
        fooList.add(foo0);
        
        // foo[1]
        JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Foo foo1
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Foo();
        fooList.add(foo1);
        
        // foo[2]
        JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Foo foo2
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Foo();
        fooList.add(foo2);
        
        // foo[0].bar.hoge="value"
        JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Bar bar0
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Bar();
        bar0.setHoge("value1");
        foo0.setBar(bar0);
        
        // foo[1].bar=null
        foo1.setBar(null);
        
        // foo[2].bar.hoge="value"
        JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Bar bar2
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Bar();
        bar2.setHoge("value3");
        foo2.setBar(bar2);
        
        map.put("foo", fooList);
        
        JXPathIndexedBeanWrapperImpl bw 
            = new JXPathIndexedBeanWrapperImpl(map);
    
        // 僥僗僩幚巤
        Map<String, Object> result = bw.getIndexedPropertyValues("foo.bar.hoge"); 
    
        // 敾掕
        assertEquals(2, result.size());
        assertEquals("value1", result.get("foo[0].bar.hoge"));
        assertEquals("value3", result.get("foo[2].bar.hoge"));
    }

    /**
     * testGetIndexedPropertyValuesMap09()
     * <br><br>
     * 
     * (惓忢宯)
     * <br>
     * 娤揰丗A
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:beans.property<br>
     *         (忬懺) this.context:Map<String, Object><br>
     *                foo=new Bean[3]<br>
     *                                  嚇[0] new Bean()<br>
     *                                           嚇property="value1"<br>
     *                                  嚇[1] new Bean()<br>
     *                                           嚇property=null<br>
     *                                  嚇[2] new Bean()<br>
     *                                           嚇property="value3"<br>
     *         
     * <br>
     * 婜懸抣丗(栠傝抣) Map<String, Object>:Map<String, Object><br>
     *                  beans[0].property="value1"<br>
     *                  beans[1].property=null<br>
     *                  beans[2].property="value3"<br>
     *         
     * <br>
     * 亂Map宆偺僥僗僩亃<br>
     * 攝楍亄null崿偠傝偺僾儘僷僥傿傪庢摼偡傞僥僗僩丅
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesMap09() throws Exception {
        // 慜張棟
        Map<String, Object> map = new HashMap<String, Object>();
        
        // foo
        List<JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Foo> fooList
            = new ArrayList<JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Foo>();
        
        // foo[0]
        JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Foo foo0
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Foo();
        foo0.setProperty("value1");
        fooList.add(foo0);
        
        // foo[1]
        JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Foo foo1
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Foo();
        foo1.setProperty(null);
        fooList.add(foo1);
        
        // foo[2]
        JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Foo foo2
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub04.Foo();
        foo2.setProperty("value3");
        fooList.add(foo2);
        
        map.put("foo", fooList);
        
        JXPathIndexedBeanWrapperImpl bw 
            = new JXPathIndexedBeanWrapperImpl(map);
    
        // 僥僗僩幚巤
        Map<String, Object> result = bw.getIndexedPropertyValues("foo.property"); 
    
        // 敾掕
        assertEquals(3, result.size());
        assertEquals("value1", result.get("foo[0].property"));
        assertNull(result.get("foo[1].property"));
        assertEquals("value3", result.get("foo[2].property"));
    }

    /**
     * testGetIndexedPropertyValuesMap10()
     * <br><br>
     * 
     * (堎忢宯)
     * <br>
     * 娤揰丗G
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:aa/aa.bbb<br>
     *         (忬懺) this.context:Map<String, Object><br>
     *                嬻偺Map<br>
     *         
     * <br>
     * 婜懸抣丗(忬懺曄壔) 椺奜:IllegalArgumentException<br>
     *                    丂丂儊僢僙乕僕丗Invalid character has found within property name. 'aa/aa.bbb' Cannot use [ / " ' ]<br>
     *         (忬懺曄壔) 儘僌:儘僌儗儀儖丗僄儔乕<br>
     *                    Invalid character has found within property name. 'aa/aa.bbb' Cannot use [ / " ' ]<br>
     *         
     * <br>
     * 亂Map宆偺僥僗僩亃<br>
     * 晄惓側Map僉乕偺僥僗僩丅
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesMap10() throws Exception {
        // 慜張棟
        JXPathIndexedBeanWrapperImpl bw 
            = new JXPathIndexedBeanWrapperImpl(new HashMap<String, Object>());
    
        // 僥僗僩幚巤
        try {
            bw.getIndexedPropertyValues("aa/aa.bbb");
            fail();
        } catch (IllegalArgumentException e) {
            // OK
            String expect = "Invalid character has found within property name. 'aa/aa.bbb' Cannot use [ / \" ' ]";
            assertEquals(expect, e.getMessage());
            assertTrue(LogUTUtil.checkError(expect));
        }
    }

    /**
     * testGetIndexedPropertyValuesMap11()
     * <br><br>
     * 
     * (堎忢宯)
     * <br>
     * 娤揰丗G
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:aa[aa.bbb<br>
     *         (忬懺) this.context:Map<String, Object><br>
     *                嬻偺Map<br>
     *         
     * <br>
     * 婜懸抣丗(忬懺曄壔) 椺奜:IllegalStateException<br>
     *                        儊僢僙乕僕丗Cannot get Index. Invalid property name. 'aa[aa.bbb'<br>
     *         (忬懺曄壔) 儘僌:儘僌儗儀儖丗僄儔乕<br>
     *                    Cannot get Index. Invalid property name. 'aa[aa.bbb'<br>
     *         
     * <br>
     * 亂Map宆偺僥僗僩亃<br>
     * 晄惓側Map僉乕偺僥僗僩丅
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesMap11() throws Exception {
        // 慜張棟
        JXPathIndexedBeanWrapperImpl bw 
        = new JXPathIndexedBeanWrapperImpl(new HashMap<String, Object>());

        // 僥僗僩幚巤
        try {
            bw.getIndexedPropertyValues("aa[aa.bbb");
            fail();
        } catch (IllegalArgumentException e) {
            // OK
            String expect = "Cannot get Index. Invalid property name. 'aa[aa.bbb'";
            assertEquals(expect, e.getMessage());
            assertTrue(LogUTUtil.checkError(expect));
        }
    }

    /**
     * testGetIndexedPropertyValuesMap12()
     * <br><br>
     * 
     * (堎忢宯)
     * <br>
     * 娤揰丗G
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:aa]aa.bbb<br>
     *         (忬懺) this.context:Map<String, Object><br>
     *                嬻偺Map<br>
     *         
     * <br>
     * 婜懸抣丗(忬懺曄壔) 椺奜:IllegalStateException<br>
     *                        儊僢僙乕僕丗Cannot get Index. Invalid property name. 'aa]aa.bbb'<br>
     *         (忬懺曄壔) 儘僌:儘僌儗儀儖丗僄儔乕<br>
     *                    Cannot get Index. Invalid property name. 'aa]aa.bbb'<br>
     *         
     * <br>
     * 亂Map宆偺僥僗僩亃<br>
     * 晄惓側Map僉乕偺僥僗僩丅
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesMap12() throws Exception {
        // 慜張棟
        JXPathIndexedBeanWrapperImpl bw 
        = new JXPathIndexedBeanWrapperImpl(new HashMap<String, Object>());

        // 僥僗僩幚巤
        try {
            bw.getIndexedPropertyValues("aa]aa.bbb");
            fail();
        } catch (IllegalArgumentException e) {
            // OK
            String expect = "Cannot get Index. Invalid property name. 'aa]aa.bbb'";
            assertEquals(expect, e.getMessage());
            assertTrue(LogUTUtil.checkError(expect));
        }
    }

    /**
     * testGetIndexedPropertyValuesMap13()
     * <br><br>
     * 
     * (惓忢宯)
     * <br>
     * 娤揰丗A
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:aa.aa.bb<br>
     *         (忬懺) this.context:Map<String, Object><br>
     *                aa.aa=new Bean()<br>
     *                            嚇bb="test"<br>
     *         
     * <br>
     * 婜懸抣丗(栠傝抣) Map<String, Object>:Map<String, Object><br>
     *                  嬻偺Map<br>
     *         
     * <br>
     * 亂Map宆偺僥僗僩亃<br>
     * 晄惓側Map僉乕偺僥僗僩丅
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesMap13() throws Exception {
        // 慜張棟
        Map<String, Object> map = new HashMap<String, Object>();
        JXPathIndexedBeanWrapperImpl_JavaBeanStub03.Bar bar
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub03.Bar();
        bar.setHoge("test");
        map.put("aa.aa", map);
        JXPathIndexedBeanWrapperImpl bw 
            = new JXPathIndexedBeanWrapperImpl(map);

        // 僥僗僩幚巤
        Map<String, Object> result 
            = bw.getIndexedPropertyValues("aa.aa.bar.hoge");
        assertEquals(0, result.size());
    }

    /**
     * testGetIndexedPropertyValuesMap14()
     * <br><br>
     * 
     * (堎忢宯)
     * <br>
     * 娤揰丗G
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:aa'aa.bb<br>
     *         (忬懺) this.context:Map<String, Object><br>
     *                嬻偺Map<br>
     *         
     * <br>
     * 婜懸抣丗(忬懺曄壔) 椺奜:IllegalArgumentException<br>
     *                    丂丂儊僢僙乕僕丗Invalid character has found within property name. 'aa'aa.bb' Cannot use [ / " ' ]<br>
     *         (忬懺曄壔) 儘僌:儘僌儗儀儖丗僄儔乕<br>
     *                    Invalid character has found within property name. 'aa'aa.bb' Cannot use [ / " ' ]<br>
     *         
     * <br>
     * 亂Map宆偺僥僗僩亃<br>
     * 晄惓側Map僉乕偺僥僗僩丅
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesMap14() throws Exception {
        // 慜張棟
        JXPathIndexedBeanWrapperImpl bw 
            = new JXPathIndexedBeanWrapperImpl(new HashMap<String, Object>());

        // 僥僗僩幚巤
        try {
            bw.getIndexedPropertyValues("aa'aa.bbb");
            fail();
        } catch (IllegalArgumentException e) {
            // OK
            String expect = "Invalid character has found within property name. 'aa'aa.bbb' Cannot use [ / \" ' ]";
            assertEquals(expect, e.getMessage());
            assertTrue(LogUTUtil.checkError(expect));
        }
    }

    /**
     * testGetIndexedPropertyValuesMap15()
     * <br><br>
     * 
     * (堎忢宯)
     * <br>
     * 娤揰丗G
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:aa"aa.bb<br>
     *         (忬懺) this.context:Map<String, Object><br>
     *                嬻偺Map<br>
     *         
     * <br>
     * 婜懸抣丗(忬懺曄壔) 椺奜:IllegalArgumentException<br>
     *                    丂丂儊僢僙乕僕丗Invalid character has found within property name. 'aa"aa.bb' Cannot use [ / " ' ]<br>
     *         (忬懺曄壔) 儘僌:儘僌儗儀儖丗僄儔乕<br>
     *                    Invalid character has found within property name. 'aa"aa.bb' Cannot use [ / " ' ]<br>
     *         
     * <br>
     * 亂Map宆偺僥僗僩亃<br>
     * 晄惓側Map僉乕偺僥僗僩丅
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesMap15() throws Exception {
        // 慜張棟
        JXPathIndexedBeanWrapperImpl bw 
        = new JXPathIndexedBeanWrapperImpl(new HashMap<String, Object>());

        // 僥僗僩幚巤
        try {
            bw.getIndexedPropertyValues("aa\"aa.bbb");
            fail();
        } catch (IllegalArgumentException e) {
            // OK
            String expect = "Invalid character has found within property name. 'aa\"aa.bbb' Cannot use [ / \" ' ]";
            assertEquals(expect, e.getMessage());
            assertTrue(LogUTUtil.checkError(expect));
        }
    }

    /**
     * testGetIndexedPropertyValuesMap16()
     * <br><br>
     * 
     * (堎忢宯)
     * <br>
     * 娤揰丗G
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:aa(aa.bb<br>
     *         (忬懺) this.context:Map<String, Object><br>
     *                嬻偺Map<br>
     *         
     * <br>
     * 婜懸抣丗(忬懺曄壔) 椺奜:IllegalArgumentException<br>
     *                    丂丂儊僢僙乕僕丗Invalid property name. PropertyName: 'aa(aa.bbb'XPath: '/aa(aa/bbb'<br>
     *         (忬懺曄壔) 儘僌:儘僌儗儀儖丗僄儔乕<br>
     *                    Invalid property name. PropertyName: 'aa(aa.bbb'XPath: '/aa(aa/bbb'<br>
     *         
     * <br>
     * 亂Map宆偺僥僗僩亃<br>
     * 晄惓側Map僉乕偺僥僗僩丅
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesMap16() throws Exception {
        // 慜張棟
        JXPathIndexedBeanWrapperImpl bw 
        = new JXPathIndexedBeanWrapperImpl(new HashMap<String, Object>());

        // 僥僗僩幚巤
        try {
            bw.getIndexedPropertyValues("aa(aa.bbb");
            fail();
        } catch (IllegalArgumentException e) {
            // OK
            String expect = "Invalid property name. PropertyName: 'aa(aa.bbb'XPath: '/aa(aa/bbb'";
            assertEquals(expect, e.getMessage());
            assertSame(JXPathException.class, e.getCause().getClass());
        }
    }

    /**
     * testGetIndexedPropertyValuesMap17()
     * <br><br>
     * 
     * (堎忢宯)
     * <br>
     * 娤揰丗G
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:aa)aa.bb<br>
     *         (忬懺) this.context:Map<String, Object><br>
     *                嬻偺Map<br>
     *         
     * <br>
     * 婜懸抣丗(忬懺曄壔) 椺奜:IllegalArgumentException<br>
     *                    丂丂儊僢僙乕僕丗Invalid property name. PropertyName: 'aa)aa.bbb'XPath: '/aa)aa/bbb'<br>
     *         (忬懺曄壔) 儘僌:儘僌儗儀儖丗僄儔乕<br>
     *                    Invalid property name. PropertyName: 'aa)aa.bbb'XPath: '/aa)aa/bbb'<br>
     *         
     * <br>
     * 亂Map宆偺僥僗僩亃<br>
     * 晄惓側Map僉乕偺僥僗僩丅
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesMap17() throws Exception {
        // 慜張棟
        JXPathIndexedBeanWrapperImpl bw 
        = new JXPathIndexedBeanWrapperImpl(new HashMap<String, Object>());

        // 僥僗僩幚巤
        try {
            bw.getIndexedPropertyValues("aa)aa.bbb");
            fail();
        } catch (IllegalArgumentException e) {
            // OK
            String expect = "Invalid property name. PropertyName: 'aa)aa.bbb'XPath: '/aa)aa/bbb'";
            assertEquals(expect, e.getMessage());
            assertSame(JXPathException.class, e.getCause().getClass());
        }
    }

    /**
     * testGetIndexedPropertyValuesJavaBean01()
     * <br><br>
     * 
     * (惓忢宯)
     * <br>
     * 娤揰丗A
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:"foo.bar.hoge"<br>
     *         (忬懺) this.context:DynaBean乷<br>
     *                  乮僾儘僷僥傿柤=抣乯<br>
     *                丂foo.bar.hoge="test"<br>
     *                乸<br>
     *         
     * <br>
     * 婜懸抣丗(栠傝抣) Map<String, Object>:Map<String, Object><br>
     *                  foo.bar.hoge="test"<br>
     *         
     * <br>
     * 亂DynaBean偺僥僗僩亃<br>
     * 僱僗僩偟偨抣傪庢摼偡傞僥僗僩丅
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesDynaBean01() throws Exception {
        // 慜張棟
        JXPathIndexedBeanWrapperImpl_JavaBeanStub03 bean
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub03();
        // foo
        JXPathIndexedBeanWrapperImpl_JavaBeanStub03.Foo foo
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub03.Foo();
    
        // bar
        JXPathIndexedBeanWrapperImpl_JavaBeanStub03.Bar bar
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub03.Bar();
        // hoge
        bar.setHoge("test");
    
        // foo.bar.hoge
        foo.setBar(bar);
        bean.setFoo(foo);
        
        WrapDynaBean dynaBean = new WrapDynaBean(bean);
        
        JXPathIndexedBeanWrapperImpl bw =
            new JXPathIndexedBeanWrapperImpl(dynaBean);
    
        // 僥僗僩幚巤
        Map<String, Object> result = bw.getIndexedPropertyValues("foo.bar.hoge");
    
        // 敾掕
        assertEquals(1, result.size());
        assertTrue(result.containsKey("foo.bar.hoge"));
        assertEquals("test", result.get("foo.bar.hoge"));
        assertEquals("test", PropertyUtils.getProperty(dynaBean, "foo.bar.hoge"));
        assertEquals("test", BeanUtils.getProperty(dynaBean, "foo.bar.hoge"));
    }

    /**
     * testGetIndexedPropertyValuesJavaBean02()
     * <br><br>
     * 
     * (惓忢宯)
     * <br>
     * 娤揰丗A
     * <br><br>
     * 擖椡抣丗(堷悢) propertyName:"foo.bar.hoge"<br>
     *         (忬懺) this.context:DynaBean乷<br>
     *                  乮僾儘僷僥傿柤=抣乯<br>
     *                丂foo.bar[0].hoge[0]="test0"<br>
     *                  foo.bar[1]=null<br>
     *                  foo.bar[2].hoge[0]="test2"<br>
     *                  foo.bar[2].hoge[1]="test3"<br>
     *                  foo.bar[2].hoge[2]="test4"<br>
     *                乸<br>
     *         
     * <br>
     * 婜懸抣丗(栠傝抣) Map<String, Object>:Map<String, Object><br>
     *                  丂foo.bar[0].hoge[0]="test0"<br>
     *                    foo.bar[2].hoge[0]="test2"<br>
     *                    foo.bar[2].hoge[1]="test3"<br>
     *                    foo.bar[2].hoge[2]="test4"<br>
     *         
     * <br>
     * 亂DynaBean偺僥僗僩亃<br>
     * 僱僗僩亄攝楍亄null偑崿偠傞僷僞乕儞偺抣傪庢摼偡傞僥僗僩丅
     * <br>
     * 
     * @throws Exception 偙偺儊僜僢僪偱敪惗偟偨椺奜
     */
    public void testGetIndexedPropertyValuesDynaBean02() throws Exception {
        // 慜張棟
        JXPathIndexedBeanWrapperImpl_JavaBeanStub05 bean
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub05();
    
        // foo
        JXPathIndexedBeanWrapperImpl_JavaBeanStub05.Foo foo
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub05.Foo();
        bean.setFoo(foo);
    
        // foo.bar[0]
        JXPathIndexedBeanWrapperImpl_JavaBeanStub05.Bar bar0
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub05.Bar();
        // foo.bar[1]
        JXPathIndexedBeanWrapperImpl_JavaBeanStub05.Bar bar1 = null;
        // foo.bar[2]
        JXPathIndexedBeanWrapperImpl_JavaBeanStub05.Bar bar2
            = new JXPathIndexedBeanWrapperImpl_JavaBeanStub05.Bar();
        // foo.bar[]
        List<JXPathIndexedBeanWrapperImpl_JavaBeanStub05.Bar> barList
            = new ArrayList<JXPathIndexedBeanWrapperImpl_JavaBeanStub05.Bar>();
        // foo.bar[0]
        barList.add(bar0);
        // foo.bar[1]
        barList.add(bar1);
        // foo.bar[2]
        barList.add(bar2);
    
        //foo.bar
        foo.setBar(barList);
    
        // foo.bar[0].hoge[0]="test0"
        List<String> hoge0 = new ArrayList<String>();
        hoge0.add("test0");
        bar0.setHoge(hoge0);
    
        // foo.bar[1]=null
    
        // foo.bar[2].hoge[0]="test2"
        // foo.bar[2].hoge[1]="test3"
        // foo.bar[2].hoge[2]="test4"
        List<String> hoge2 = new ArrayList<String>();
        hoge2.add("test2");
        hoge2.add("test3");
        hoge2.add("test4");
        bar2.setHoge(hoge2);
        
        WrapDynaBean dynaBean = new WrapDynaBean(bean);
    
        JXPathIndexedBeanWrapperImpl bw =
            new JXPathIndexedBeanWrapperImpl(dynaBean);
    
        // 僥僗僩幚巤
        Map<String, Object> result = bw.getIndexedPropertyValues("foo.bar.hoge");
    
        // 敾掕
        assertEquals(4, result.size());
        assertEquals("test0", result.get("foo.bar[0].hoge[0]"));
        assertEquals("test2", result.get("foo.bar[2].hoge[0]"));
        assertEquals("test3", result.get("foo.bar[2].hoge[1]"));
        assertEquals("test4", result.get("foo.bar[2].hoge[2]"));
        assertEquals("test0", PropertyUtils.getProperty(dynaBean, "foo.bar[0].hoge[0]"));
        assertEquals("test0", BeanUtils.getProperty(dynaBean, "foo.bar[0].hoge[0]"));
    }
}
