1 /******************************************************************************
2 * Copyright (C) PicoContainer Organization. All rights reserved. *
3 * ------------------------------------------------------------------------- *
4 * The software in this package is published under the terms of the BSD *
5 * style license a copy of which has been included with this distribution in *
6 * the LICENSE.txt file. *
7 * *
8 * Idea by Rachel Davies, Original code by Stacy Curl *
9 *****************************************************************************/
10
11 package org.picocontainer.defaults;
12
13 import junit.framework.TestCase;
14 import org.picocontainer.PicoInitializationException;
15 import org.picocontainer.testmodel.AlternativeTouchable;
16 import org.picocontainer.testmodel.SimpleTouchable;
17 import org.picocontainer.testmodel.Touchable;
18
19 public class DefaultPicoContainerUnregisterComponentTestCase extends TestCase {
20 private DefaultPicoContainer picoContainer;
21
22 protected void setUp() throws Exception {
23 picoContainer = new DefaultPicoContainer.Default();
24 }
25
26 public void testCannotInstantiateAnUnregisteredComponent() throws DuplicateComponentKeyRegistrationException, AssignabilityRegistrationException, NotConcreteRegistrationException, PicoInvocationTargetInitializationException, PicoInitializationException {
27 picoContainer.registerComponent(Touchable.class, SimpleTouchable.class);
28 picoContainer.unregisterComponent(Touchable.class);
29
30 picoContainer.instantiateComponents();
31
32 assertTrue(picoContainer.getComponents().isEmpty());
33 }
34
35 public void testCanInstantiateReplacedComponent() throws DuplicateComponentKeyRegistrationException, AssignabilityRegistrationException, NotConcreteRegistrationException, PicoInvocationTargetInitializationException, PicoInitializationException {
36 picoContainer.registerComponent(Touchable.class, SimpleTouchable.class);
37 picoContainer.unregisterComponent(Touchable.class);
38
39 picoContainer.registerComponent(Touchable.class, AlternativeTouchable.class);
40
41 picoContainer.instantiateComponents();
42
43 assertEquals("Container should container 1 component",
44 1, picoContainer.getComponents().size());
45 }
46
47 public void testUnregisterAfterInstantiateComponents() throws NotConcreteRegistrationException, AssignabilityRegistrationException, PicoInitializationException, DuplicateComponentKeyRegistrationException, PicoInvocationTargetInitializationException {
48 picoContainer.registerComponent(Touchable.class, SimpleTouchable.class);
49 picoContainer.instantiateComponents();
50 picoContainer.unregisterComponent(Touchable.class);
51 assertNull(picoContainer.getComponent(Touchable.class));
52 }
53
54 public void testReplacedInstantiatedComponentHasCorrectClass() throws DuplicateComponentKeyRegistrationException, AssignabilityRegistrationException, NotConcreteRegistrationException, PicoInvocationTargetInitializationException, PicoInitializationException {
55 picoContainer.registerComponent(Touchable.class, SimpleTouchable.class);
56 picoContainer.unregisterComponent(Touchable.class);
57
58 picoContainer.registerComponent(Touchable.class, AlternativeTouchable.class);
59
60 picoContainer.instantiateComponents();
61
62 Object component = picoContainer.getComponents().iterator().next();
63
64 assertEquals(AlternativeTouchable.class, component.getClass());
65 }
66
67 // public void testCanInstantiateOriginalComponentThenReplaceAndInstantiateReplacement() throws DuplicateComponentKeyRegistrationException, AssignabilityRegistrationException, NotConcreteRegistrationException, PicoInvocationTargetInitializationException, PicoInitializationException {
68 // picoContainer.registerComponent(Touchable.class, SimpleTouchable.class);
69 // picoContainer.instantiateComponents();
70 //
71 // picoContainer.unregisterComponent(Touchable.class);
72 // picoContainer.registerComponent(Touchable.class, AlternativeTouchable.class);
73 //
74 // picoContainer.instantiateComponents();
75 //
76 // assertEquals("Container should contain 2 components: the original and the replacement", 2,
77 // picoContainer.getComponents().size());
78 // }
79 }
This page was automatically generated by Maven