001 package org.picocontainer.defaults;
002
003 import java.awt.event.ActionEvent;
004 import java.awt.event.ActionListener;
005 import java.awt.event.MouseEvent;
006 import java.awt.event.MouseListener;
007
008 import junit.framework.TestCase;
009
010 import org.picocontainer.ComponentAdapter;
011 import org.picocontainer.Parameter;
012 import org.picocontainer.PicoIntrospectionException;
013 import org.picocontainer.defaults.ComponentAdapterFactory;
014 import org.picocontainer.defaults.ConstructorInjectionComponentAdapter;
015 import org.picocontainer.defaults.ConstructorInjectionComponentAdapterFactory;
016 import org.picocontainer.defaults.ImplementationHidingComponentAdapter;
017 import org.picocontainer.defaults.ImplementationHidingComponentAdapterFactory;
018
019 public class ImplementationHidingComponentAdapterTestCase extends TestCase {
020
021 public void testMultipleInterfacesCanBeHidden() {
022 ComponentAdapter ca = new ConstructorInjectionComponentAdapter(new Class[]{ActionListener.class, MouseListener.class}, Footle.class);
023 ImplementationHidingComponentAdapter ihca = new ImplementationHidingComponentAdapter(ca, true);
024 Object comp = ihca.getComponentInstance(null);
025 assertNotNull(comp);
026 assertTrue(comp instanceof ActionListener);
027 assertTrue(comp instanceof MouseListener);
028 }
029
030 public void testNonInterfaceInArrayCantBeHidden() {
031 ComponentAdapter ca = new ConstructorInjectionComponentAdapter(new Class[]{String.class}, Footle.class);
032 ImplementationHidingComponentAdapter ihca = new ImplementationHidingComponentAdapter(ca, true);
033 try {
034 ihca.getComponentInstance(null);
035 fail("PicoIntrospectionException expected");
036 } catch (PicoIntrospectionException e) {
037 // expected
038 }
039 }
040
041 public void testFactoryWithDefaultStrictMode(){
042 ComponentAdapterFactory factory = new ImplementationHidingComponentAdapterFactory(new ConstructorInjectionComponentAdapterFactory());
043 ComponentAdapter ihca = factory.createComponentAdapter("ww", Footle.class, new Parameter[0]);
044 try {
045 ihca.getComponentInstance(null);
046 fail("PicoIntrospectionException expected");
047 } catch (PicoIntrospectionException e) {
048 // expected
049 }
050 }
051
052 public void testShouldThrowExceptionWhenAccessingNonInterfaceKeyedComponentInStrictMode() {
053 ComponentAdapter ca = new ConstructorInjectionComponentAdapter("ww", Footle.class);
054 ImplementationHidingComponentAdapter ihca = new ImplementationHidingComponentAdapter(ca, true);
055 try {
056 ihca.getComponentInstance(null);
057 fail("PicoIntrospectionException expected");
058 } catch (PicoIntrospectionException e) {
059 // expected
060 }
061 }
062
063 public class Footle implements ActionListener, MouseListener {
064 public void actionPerformed(ActionEvent e) {
065 }
066
067 public void mouseClicked(MouseEvent e) {
068 }
069
070 public void mouseEntered(MouseEvent e) {
071 }
072
073 public void mouseExited(MouseEvent e) {
074 }
075
076 public void mousePressed(MouseEvent e) {
077 }
078
079 public void mouseReleased(MouseEvent e) {
080 }
081
082 }
083
084 }