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.behaviors;
011    
012    import static org.junit.Assert.assertNotNull;
013    import static org.junit.Assert.assertTrue;
014    import static org.junit.Assert.fail;
015    
016    import java.awt.event.ActionEvent;
017    import java.awt.event.ActionListener;
018    import java.awt.event.MouseEvent;
019    import java.awt.event.MouseListener;
020    
021    import org.junit.Test;
022    import org.picocontainer.ComponentAdapter;
023    import org.picocontainer.PicoCompositionException;
024    import org.picocontainer.injectors.ConstructorInjector;
025    import org.picocontainer.lifecycle.NullLifecycleStrategy;
026    import org.picocontainer.monitors.NullComponentMonitor;
027    
028    public class HiddenImplementationTestCase {
029    
030        @Test public void testMultipleInterfacesCanBeHidden() {
031            ComponentAdapter ca = new ConstructorInjector(new Class[]{ActionListener.class, MouseListener.class}, Footle.class, null, new NullComponentMonitor(), false);
032            HiddenImplementation ihca = new HiddenImplementation(ca);
033            Object comp = ihca.getComponentInstance(null, null);
034            assertNotNull(comp);
035            assertTrue(comp instanceof ActionListener);
036            assertTrue(comp instanceof MouseListener);
037        }    
038    
039        @Test public void testNonInterfaceInArrayCantBeHidden() {
040            ComponentAdapter ca = new ConstructorInjector(new Class[]{String.class}, Footle.class, null, new NullComponentMonitor(), false);
041            HiddenImplementation ihca = new HiddenImplementation(ca);
042            try {
043                ihca.getComponentInstance(null, null);
044                fail("PicoCompositionException expected");
045            } catch (PicoCompositionException e) {
046                // expected        
047            }
048        }
049    
050    
051        
052        public class Footle implements ActionListener, MouseListener {
053            public void actionPerformed(ActionEvent e) {
054            }
055    
056            public void mouseClicked(MouseEvent e) {
057            }
058    
059            public void mouseEntered(MouseEvent e) {
060            }
061    
062            public void mouseExited(MouseEvent e) {
063            }
064    
065            public void mousePressed(MouseEvent e) {
066            }
067    
068            public void mouseReleased(MouseEvent e) {
069            }
070    
071        }
072    
073    }