1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.proxy2.interceptor;
19
20 import static org.apache.commons.proxy2.interceptor.InterceptorUtils.constant;
21 import static org.junit.Assert.assertEquals;
22
23 import java.lang.reflect.Method;
24
25 import org.apache.commons.proxy2.Invocation;
26 import org.apache.commons.proxy2.interceptor.matcher.invocation.MethodNameMatcher;
27 import org.apache.commons.proxy2.util.AbstractTestCase;
28 import org.apache.commons.proxy2.util.Echo;
29 import org.apache.commons.proxy2.util.MockInvocation;
30 import org.junit.Test;
31
32 public class SwitchInterceptorTest extends AbstractTestCase
33 {
34
35
36
37
38 @Test
39 public void testWithMultipleAdvices() throws Throwable
40 {
41 SwitchInterceptor interceptor = new SwitchInterceptor();
42 interceptor.when(new MethodNameMatcher("echo")).then(constant("bar"));
43 interceptor.when(new MethodNameMatcher("echoBack")).then(constant("baz"));
44 Method method = Echo.class.getMethod("echoBack", String.class);
45 Invocation invocation = new MockInvocation(method, "foo", "foo");
46 assertEquals("baz", interceptor.intercept(invocation));
47 }
48
49 @Test
50 public void testWithNoAdvice() throws Throwable
51 {
52 SwitchInterceptor interceptor = new SwitchInterceptor();
53 Method method = Echo.class.getMethod("echoBack", String.class);
54 Invocation invocation = new MockInvocation(method, "foo", "foo");
55 assertEquals("foo", interceptor.intercept(invocation));
56 }
57
58 @Test
59 public void testWithSingleAdviceWhichDoesNotMatch() throws Throwable
60 {
61 SwitchInterceptor interceptor = new SwitchInterceptor().when(new MethodNameMatcher("echoBackZZZZ")).then(
62 constant("bar"));
63 Method method = Echo.class.getMethod("echoBack", String.class);
64 Invocation invocation = new MockInvocation(method, "foo", "foo");
65 assertEquals("foo", interceptor.intercept(invocation));
66 }
67
68 @Test
69 public void testWithSingleAdviceWhichMatches() throws Throwable
70 {
71 SwitchInterceptor interceptor = new SwitchInterceptor().when(new MethodNameMatcher("echoBack")).then(
72 constant("bar"));
73 Method method = Echo.class.getMethod("echoBack", String.class);
74 Invocation invocation = new MockInvocation(method, "foo", "foo");
75 assertEquals("bar", interceptor.intercept(invocation));
76 }
77 }