1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 package com.gargoylesoftware.base.objectstore;
39
40 import junit.framework.TestCase;
41
42 /***
43 * Tests for ReflectedObjectStore
44 *
45 * @version $Revision: 1.7 $
46 * @author <a href="mailto:mbowler@GargoyleSoftware.com">Mike Bowler</a>
47 */
48 public class ReflectedObjectStoreTest extends TestCase {
49 /***
50 * Create an instance
51 *
52 * @param name The name of the test
53 */
54 public ReflectedObjectStoreTest( final String name ) {
55 super( name );
56 }
57
58
59 /***
60 * Test calling execute when no commands have been registered. This should
61 * throw an ObjectStoreCommandNotSupportedException
62 */
63 public void testExecute_NoCommandsRegistered() {
64 final TestStore store = new TestStore();
65
66 final ObjectStoreCommand commandB = new CommandB();
67
68 try {
69 store.execute( commandB );
70 fail( "Expected exception" );
71 }
72 catch( final ObjectStoreCommandNotSupportedException e ) {
73 assertEquals( "command", commandB, e.getCommand() );
74 }
75 }
76
77
78 /***
79 * Test calling execute when some commands are registered but an unregistered
80 * is passed into execute
81 */
82 public void testExecute_SomeCommandsRegistered_DifferentCommandExecuted() {
83 final TestStore store = new TestStore();
84 store.registerCommand( CommandA.class, "methodA" );
85
86 final ObjectStoreCommand commandB = new CommandB();
87
88 try {
89 store.execute( commandB );
90 fail( "Expected exception" );
91 }
92 catch( final ObjectStoreCommandNotSupportedException e ) {
93 assertEquals( "command", commandB, e.getCommand() );
94 }
95 }
96
97
98 /***
99 * Simple test for execute
100 */
101 public void testExecute() {
102 final TestStore store = new TestStore();
103 store.registerCommand( CommandA.class, "methodA" );
104
105 final String result = (String)store.execute( new CommandA() );
106
107 assertEquals( "A", result );
108 }
109
110
111 /***
112 * Try to register something that isn't a command class
113 */
114 public void testRegisterCommand_NotACommand() {
115 final TestStore store = new TestStore();
116 try {
117 store.registerCommand( int.class, "methodA" );
118 fail( "Expected IllegalArgumentException" );
119 }
120 catch( final IllegalArgumentException e ) {
121
122 }
123 }
124
125
126 /***
127 * Try registering a method that doesn't exist
128 */
129 public void testRegisterCommand_BadMethodName() {
130 final TestStore store = new TestStore();
131 try {
132 store.registerCommand( CommandA.class, "foobar" );
133 fail( "Excepted exception" );
134 }
135 catch( final IllegalArgumentException e ) {
136
137 }
138 }
139
140
141 private class TestStore extends ReflectedObjectStore {
142 /***
143 * Create an instance
144 */
145 public TestStore() {
146 if( false ) {
147
148 methodA(null);
149 }
150 }
151
152
153 private Object methodA( final CommandA command ) {
154 return "A";
155 }
156 }
157
158
159 private class CommandA extends ObjectStoreCommand {
160
161 private static final long serialVersionUID = 1L;
162 }
163
164
165 private class CommandB extends ObjectStoreCommand {
166
167 private static final long serialVersionUID = 1L;
168 }
169 }
170