⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lazydynabeantestcase.java

📁 apache beanutils开源项目源码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * Copyright 2004 The Apache Software Foundation. * * 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 org.apache.commons.beanutils;import java.util.HashMap;import java.util.TreeMap;import java.util.ArrayList;import java.util.LinkedList;import java.lang.reflect.InvocationTargetException;import junit.framework.TestCase;import junit.framework.Test;import junit.framework.TestSuite;/** * <p>Test Case for the <code>LazyDynaBean</code> implementation class.</p> * * @author Niall Pemberton */public class LazyDynaBeanTestCase extends TestCase {    protected LazyDynaBean  bean      = null;    protected LazyDynaClass dynaClass = null;    protected String testProperty     = "myProperty";    protected String testPropertyA    = "myProperty-A";    protected String testPropertyB    = "myProperty-B";    protected String testString1      = "myStringValue-1";    protected String testString2      = "myStringValue-2";    protected Integer testInteger1    = new Integer(30);    protected Integer testInteger2    = new Integer(40);    protected String testKey          = "myKey";    // ---------------------------------------------------------- Constructors    /**     * Construct a new instance of this test case.     *     * @param name Name of the test case     */    public LazyDynaBeanTestCase(String name) {        super(name);    }    // -------------------------------------------------- Overall Test Methods    /**     * Run thus Test     */    public static void main(String[] args) {        junit.textui.TestRunner.run(suite());    }    /**     * Return the tests included in this test suite.     */    public static Test suite() {        return (new TestSuite(LazyDynaBeanTestCase.class));    }    /**     * Set up instance variables required by this test case.     */    public void setUp() throws Exception {        bean = new LazyDynaBean();        dynaClass = (LazyDynaClass)bean.getDynaClass();        dynaClass.setReturnNull(true);    }    /**     * Tear down instance variables required by this test case.     */    public void tearDown() {      bean = null;    }    // ------------------------------------------------ Individual Test Methods    /**     * Test Getting/Setting a Simple Property     */    public void testSimpleProperty() {        // Check the property & value doesn't exist        assertNull("Check Property doesn't exist", dynaClass.getDynaProperty(testProperty));        assertNull("Check Value is null", bean.get(testProperty));        // Set a new property - should add new property and set value        bean.set(testProperty, testInteger1);        assertEquals("Check First Value is correct", testInteger1, bean.get(testProperty));        assertEquals("Check Property type is correct", Integer.class, dynaClass.getDynaProperty(testProperty).getType());        // Set the property again - should set the new value        bean.set(testProperty, testInteger2);        assertEquals("Check Second Value is correct", testInteger2, bean.get(testProperty));        // Set the property again - with a different type, should fail        try {            bean.set(testProperty, testString1);            fail("expected ConversionException trying to set an Integer property to a String");        } catch (ConversionException expected) {            // expected result        }    }    /**     * Test Setting a Simple Property when MutableDynaClass is set to restricted     */    public void testSimplePropertyRestricted() {        // Set the MutableDyanClass to 'restricted' (i.e. no new properties cab be added        dynaClass.setRestricted(true);        assertTrue("Check MutableDynaClass is restricted", dynaClass.isRestricted());        // Check the property & value doesn't exist        assertNull("Check Property doesn't exist", dynaClass.getDynaProperty(testProperty));        assertNull("Check Value is null", bean.get(testProperty));        // Set the property - should fail because property doesn't exist and MutableDynaClass is restricted        try {            bean.set(testProperty, testString1);            fail("expected IllegalArgumentException trying to add new property to restricted DynaClass");        } catch (IllegalArgumentException expected) {            // expected result        }    }    /**     * Test Getting/Setting a 'Mapped' Property - default HashMap property     */    public void testMappedPropertyDefault() {        // Check the property & value doesn't exist        assertNull("Check Mapped Property doesn't exist", dynaClass.getDynaProperty(testProperty));        assertNull("Check Map is null", bean.get(testProperty));        assertNull("Check Mapped Value is null", bean.get(testProperty, testKey));        // Set a new mapped property - should add new HashMap property and set the mapped value        bean.set(testProperty, testKey, testInteger1);        assertEquals("Check Mapped Property exists", HashMap.class, bean.get(testProperty).getClass());        assertEquals("Check First Mapped Value is correct(a)", testInteger1, bean.get(testProperty, testKey));        assertEquals("Check First Mapped Value is correct(b)", testInteger1, ((HashMap)bean.get(testProperty)).get(testKey));        // Set the property again - should set the new value        bean.set(testProperty, testKey, testInteger2);        assertEquals("Check Second Mapped Value is correct(a)", testInteger2, bean.get(testProperty, testKey));        assertEquals("Check Second Mapped Value is correct(b)", testInteger2, ((HashMap)bean.get(testProperty)).get(testKey));    }    /**     * Test Getting/Setting a 'Mapped' Property - use TreeMap property     */    public void testMappedPropertyTreeMap() {        // Check the property & value doesn't exist        assertNull("Check Mapped Property doesn't exist", dynaClass.getDynaProperty(testProperty));        // Add a 'TreeMap' property to the DynaClass        dynaClass.add(testProperty, TreeMap.class);        assertTrue("Check Property is mapped", dynaClass.getDynaProperty(testProperty).isMapped());        assertEquals("Check Property is correct type", TreeMap.class, dynaClass.getDynaProperty(testProperty).getType());        assertEquals("Check Mapped Property exists", TreeMap.class, bean.get(testProperty).getClass());//        assertNull("Check mapped property is null", bean.get(testProperty));        // Set a new mapped property - should instatiate a new TreeMap property and set the mapped value        bean.set(testProperty, testKey, testInteger1);        assertEquals("Check Mapped Property exists", TreeMap.class, bean.get(testProperty).getClass());        assertEquals("Check First Mapped Value is correct(a)", testInteger1, bean.get(testProperty, testKey));        assertEquals("Check First Mapped Value is correct(b)", testInteger1, ((TreeMap)bean.get(testProperty)).get(testKey));        // Set the property again - should set the new value        bean.set(testProperty, testKey, testInteger2);        assertEquals("Check Second Mapped Value is correct(a)", testInteger2, bean.get(testProperty, testKey));        assertEquals("Check Second Mapped Value is correct(b)", testInteger2, ((TreeMap)bean.get(testProperty)).get(testKey));    }    /**     * Test Setting a 'Mapped' Property using PropertyUtils     */    public void testMappedPropertyUtils() {        dynaClass.setReturnNull(false);        // Check the property & value doesn't exist        assertFalse("Check Mapped Property doesn't exist", dynaClass.isDynaProperty(testProperty));        assertNull("Check Map is null", bean.get(testProperty));        assertNull("Check Mapped Value is null", bean.get(testProperty, testKey));        // Set the mapped property using PropertyUtils        try {          PropertyUtils.setProperty(bean, testProperty+"("+testKey+")", testString1);        }        catch (NoSuchMethodException ex) {            fail("testIndexedPropertyUtils threw "+ex);        }        catch (InvocationTargetException ex) {            fail("testIndexedPropertyUtils threw "+ex);        }        catch (IllegalAccessException ex) {            fail("testIndexedPropertyUtils threw "+ex);        }        // Check property value correctly set        assertEquals("Check Mapped Bean Value is correct", testString1, bean.get(testProperty, testKey));    }    /**     * Test Setting a Mapped Property when MutableDynaClass is set to restricted     */    public void testMappedPropertyRestricted() {        // Set the MutableDyanClass to 'restricted' (i.e. no new properties cab be added        dynaClass.setRestricted(true);        assertTrue("Check MutableDynaClass is restricted", dynaClass.isRestricted());        // Check the property & value doesn't exist        assertNull("Check Property doesn't exist", dynaClass.getDynaProperty(testProperty));        assertNull("Check Value is null", bean.get(testProperty));        // Set the property - should fail because property doesn't exist and MutableDynaClass is restricted        try {            bean.set(testProperty, testKey, testInteger1);            fail("expected IllegalArgumentException trying to add new property to restricted MutableDynaClass");        } catch (IllegalArgumentException expected) {            // expected result        }    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -