001    /*
002     * Licensed to the Apache Software Foundation (ASF) under one or more
003     * contributor license agreements.  See the NOTICE file distributed with
004     * this work for additional information regarding copyright ownership.
005     * The ASF licenses this file to You under the Apache License, Version 2.0
006     * (the "License"); you may not use this file except in compliance with
007     * the License.  You may obtain a copy of the License at
008     *
009     *      http://www.apache.org/licenses/LICENSE-2.0
010     *
011     * Unless required by applicable law or agreed to in writing, software
012     * distributed under the License is distributed on an "AS IS" BASIS,
013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014     * See the License for the specific language governing permissions and
015     * limitations under the License.
016     */
017    package org.apache.commons.beanutils.bugs;
018    
019    import java.util.Comparator;
020    import java.util.HashMap;
021    import java.util.Map;
022    
023    import junit.framework.Test;
024    import junit.framework.TestCase;
025    import junit.framework.TestSuite;
026    
027    import org.apache.commons.beanutils.BeanUtils;
028    import org.apache.commons.beanutils.PropertyUtils;
029    import org.apache.commons.logging.Log;
030    import org.apache.commons.logging.LogFactory;
031    
032    /**
033     * See https://issues.apache.org/jira/browse/BEANUTILS-339
034     * <p />
035     *
036     * @version $Revision: 800650 $ $Date: 2009-08-03 21:38:16 -0400 (Mon, 03 Aug 2009) $
037     */
038    public class Jira339TestCase extends TestCase {
039    
040        private Log log = LogFactory.getLog(Jira339TestCase.class);
041    
042        /**
043         * Create a test case with the specified name.
044         *
045         * @param name The name of the test
046         */
047        public Jira339TestCase(String name) {
048            super(name);
049        }
050    
051        /**
052         * Run the Test.
053         *
054         * @param args Arguments
055         */
056        public static void main(String[] args) {
057            junit.textui.TestRunner.run(suite());
058        }
059    
060        /**
061         * Create a test suite for this test.
062         *
063         * @return a test suite
064         */
065        public static Test suite() {
066            return (new TestSuite(Jira339TestCase.class));
067        }
068    
069        /**
070         * Set up.
071         *
072         * @throws java.lang.Exception
073         */
074        protected void setUp() throws Exception {
075            super.setUp();
076        }
077    
078        /**
079         * Tear Down.
080         *
081         * @throws java.lang.Exception
082         */
083        protected void tearDown() throws Exception {
084            super.tearDown();
085        }
086    
087        /**
088         * Test {@link PropertyUtils#setProperty(Object, String, Object)}
089         */
090        public void testIssue_BEANUTILS_339_BeanUtilsBean_setProperty() {
091            
092            TestBean bean = new TestBean();
093            try {
094                BeanUtils.setProperty(bean, "comparator", null);
095            } catch (Throwable t) {
096                log.error("Failed: " + t.getMessage(), t);
097                fail("Threw exception: " + t);
098            }
099            assertNull("TestBean comparator should be null", bean.getComparator());
100        }
101    
102        /**
103         * Test {@link BeanUtils#populate(Object, Map)}
104         */
105        public void testIssue_BEANUTILS_331_BeanUtilsBean_populate() {
106            
107            TestBean bean = new TestBean();
108            try {
109                Map properties = new HashMap();
110                properties.put("comparator", null);
111                BeanUtils.populate(bean, properties);
112            } catch (Throwable t) {
113                log.error("Failed: " + t.getMessage(), t);
114                fail("Threw exception: " + t);
115            }
116            assertNull("TestBean comparator should be null", bean.getComparator());
117        }
118    
119        /**
120         * Test Bean.
121         */
122        public static class TestBean {
123            private Comparator comparator;
124    
125            /**
126             * Return the comparator.
127             *
128             * @return the comparator
129             */
130            public Comparator getComparator() {
131                return comparator;
132            }
133    
134            /**
135             * Set the comparator.
136             *
137             * @param comparator the comparator
138             */
139            public void setComparator(Comparator comparator) {
140                this.comparator = comparator;
141            }
142            
143        }
144    }