1 package org.apache.stratum.messenger;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 import junit.framework.TestCase;
21
22 import org.apache.commons.configuration.Configuration;
23 import org.apache.commons.configuration.PropertiesConfiguration;
24 import org.apache.log4j.Category;
25
26 import com.mockobjects.ExpectationCounter;
27 import com.mockobjects.ExpectationValue;
28 import com.mockobjects.Verifiable;
29 import com.mockobjects.util.Verifier;
30
31 /***
32 * Test cases to exercise the MessengerComponent.
33 *
34 * @author <a href="mailto:eric@dobbse.net">Eric Dobbs</a>
35 * @version $Id: MessengerComponentTest.java 264191 2005-08-29 18:07:52Z henning $
36 *
37 * @see MessengerComponent
38 */
39 public class MessengerComponentTest
40 extends TestCase
41 {
42 /*** TODO: DOCUMENT ME! */
43 private static Category log = Category.getInstance(MessengerComponentTest.class);
44
45 /*** TODO: DOCUMENT ME! */
46 private static MessengerComponent messengerComponent = new MessengerComponent();
47
48 /*** TODO: DOCUMENT ME! */
49 private static String CONFIG = "src/test-conf/Messenger.properties";
50
51 /*** TODO: DOCUMENT ME! */
52 private static Configuration config;
53
54 /***
55 * Constructor.
56 *
57 * @param name String name of the method to be tested.
58 */
59 public MessengerComponentTest(String name)
60 {
61 super(name);
62 }
63
64 /***
65 * Verify that MessengerComponent.configure() only asks for one value from the given Configuration, and that the property
66 * requested is "messenger.xml.url"
67 */
68 public void testConfigure()
69 {
70 MockConfiguration mockConfiguration = new MockConfiguration();
71 mockConfiguration.setExpectedGetStringCalls(1);
72 mockConfiguration.setExpectedGetStringValue("messenger.xml.url");
73
74 try
75 {
76 messengerComponent.configure(mockConfiguration);
77 }
78 catch (Exception e)
79 {
80 String errorMessage = "Exception should not have been thrown: " + e.getMessage();
81 log.error(errorMessage, e);
82 fail(errorMessage);
83 }
84
85 mockConfiguration.verify();
86 }
87
88 /***
89 * Verify that a null value in the configuration will cause an Exception to be thrown. That's about all that makes sense to
90 * test for MessengerComponent.initialize(). Other testing would only repeat tests already covered in the Messenger test
91 * code.
92 */
93 public void testInitialize()
94 {
95 MockConfiguration mockConfiguration = new MockConfiguration();
96 mockConfiguration.setupGetString(null);
97
98 try
99 {
100 messengerComponent.configure(mockConfiguration);
101 messengerComponent.initialize();
102 fail("Exception should have been thrown");
103 }
104 catch (Exception e)
105 {
106
107 }
108 }
109
110 /***
111 * Need to mock the Configuration.getString() method for testing the configure method. See <a
112 * href="http://www.mockobjects.com">www.mockobjects.com</a> for more information about mock objects.
113 */
114 static class MockConfiguration
115 extends PropertiesConfiguration
116 implements Verifiable
117 {
118 /*** TODO: DOCUMENT ME! */
119 private ExpectationCounter getStringCalls = new ExpectationCounter("mockConfiguration.getString");
120
121 /*** TODO: DOCUMENT ME! */
122 private ExpectationValue getStringValue = new ExpectationValue("mockConfiguration.getString");
123
124 /*** TODO: DOCUMENT ME! */
125 private String getStringReturnValue = null;
126
127 /***
128 * TODO: DOCUMENT ME!
129 *
130 * @param callCount TODO: DOCUMENT ME!
131 */
132 public void setExpectedGetStringCalls(int callCount)
133 {
134 getStringCalls.setExpected(callCount);
135 }
136
137 /***
138 * TODO: DOCUMENT ME!
139 *
140 * @param key TODO: DOCUMENT ME!
141 */
142 public void setExpectedGetStringValue(String key)
143 {
144 getStringValue.setExpected(key);
145 }
146
147 /***
148 * TODO: DOCUMENT ME!
149 *
150 * @param getString TODO: DOCUMENT ME!
151 */
152 public void setupGetString(String getString)
153 {
154 getStringReturnValue = getString;
155 }
156
157 /***
158 * TODO: DOCUMENT ME!
159 */
160 public void verify()
161 {
162 Verifier.verifyObject(this);
163 }
164
165 /***
166 * TODO: DOCUMENT ME!
167 *
168 * @param key TODO: DOCUMENT ME!
169 *
170 * @return TODO: DOCUMENT ME!
171 */
172 public String getString(String key)
173 {
174 getStringCalls.inc();
175 getStringValue.setActual(key);
176
177 return getStringReturnValue;
178 }
179 }
180 }