    001    /*****************************************************************************
    002     * Copyright (C) PicoContainer Organization. All rights reserved.            *
    003     * ------------------------------------------------------------------------- *
    004     * The software in this package is published under the terms of the BSD      *
    005     * style license a copy of which has been included with this distribution in *
    006     * the LICENSE.txt file.                                                     *
    007     *                                                                           *
    008     * Original code by                                                          *
    009     *****************************************************************************/
    010    package org.picocontainer.parameters;
    011
    012    import static org.junit.Assert.*;
    013
    014    import java.lang.reflect.Constructor;
    015    import java.lang.reflect.Type;
    016
    017    import org.junit.Test;
    018    import org.picocontainer.PicoCompositionException;
    019
    020
    021    /**
    022     * test that constant parameter behaves well.
    023     * @author Konstantin Pribluda
    024     */
    025    public class ConstantParameterTestCase {
    026
    027        /**
    028        *  constant parameter with instance type shall verify for expected primitives
    029         * @throws Exception
    030         */
    031        @Test public void testThatInstaceTypeAcceptedForPrimitives() throws Exception {
    032            ConstantParameter param = new ConstantParameter(239);
    033            try{
    034                param.verify(null,null,Integer.TYPE, null, false, null);
    035            } catch(PicoCompositionException ex) {
    036                fail("failed verification for primitive / instance ");
    037            }
    038        }
    039
    040        @Test
    041        public void testClassTypesAllowed() throws Exception {
    042            ConstantParameter param = new ConstantParameter(String.class);
    043            param.verify(null, null, Class.class, null, false, null);
    044        }
    045
    046
    047        public static class ConstantParameterTestClass {
    048            public ConstantParameterTestClass(Class<String> type) {
    049                    assert type != null;
    050            }
    051        }
    052
    053
    054        @Test
    055        public void testParameterizedTypesAllowed() throws Exception {
    056
    057            Constructor<?>[] ctors = ConstantParameterTestClass.class.getConstructors();
    058            Type[] t = ctors[0].getGenericParameterTypes();
    059            ConstantParameter param = new ConstantParameter(String.class);
    060            assertTrue(param.resolve(null, null, null, t[0], null, false, null).isResolved());
    061
    062        }
    063
    064    }