1 /*
2 *
3 * The Seasar Software License, Version 1.1
4 *
5 * Copyright (c) 2003-2004 The Seasar Project. All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or
8 * without modification, are permitted provided that the following
9 * conditions are met:
10 *
11 * 1. Redistributions of source code must retain the above
12 * copyright notice, this list of conditions and the following
13 * disclaimer.
14 *
15 * 2. Redistributions in binary form must reproduce the above
16 * copyright notice, this list of conditions and the following
17 * disclaimer in the documentation and/or other materials provided
18 * with the distribution.
19 *
20 * 3. The end-user documentation included with the redistribution,
21 * if any, must include the following acknowledgement:
22 * "This product includes software developed by the
23 * Seasar Project (http://www.seasar.org/)."
24 * Alternately, this acknowledgement may appear in the software
25 * itself, if and wherever such third-party acknowledgements
26 * normally appear.
27 *
28 * 4. Neither the name "The Seasar Project" nor the names of its
29 * contributors may be used to endorse or promote products derived
30 * from this software without specific prior written permission of
31 * the Seasar Project.
32 *
33 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR
34 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
35 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
36 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE SEASAR PROJECT
37 * OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
38 * INCIDENTAL,SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
39 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
40 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
41 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
42 * WHETHER IN CONTRACT, STRICT LIABILITY,OR TORT (INCLUDING
43 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
44 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
45 */
46 package org.seasar.remoting.common.interceptor;
47
48 import org.seasar.extension.unit.S2TestCase;
49 import org.seasar.framework.aop.interceptors.MockInterceptor;
50
51 /***
52 * @author koichik
53 */
54 public class RemotingInterceptorTest extends S2TestCase {
55 private MockInterceptor mockInterceptor;
56
57 public RemotingInterceptorTest(String name) {
58 super(name);
59 }
60
61 public void setUp() {
62 include("RemotingInterceptorTest.dicon");
63 }
64
65 public void testInvoke() {
66 //call concrete method
67 Hoge hoge = (Hoge) getComponent(Hoge.class);
68 hoge.foo();
69 assertFalse(mockInterceptor.isInvoked("invoke"));
70
71 //call abstract method
72 hoge.bar();
73 assertTrue(mockInterceptor.isInvoked("invoke"));
74 }
75
76 public void testGetTargetName() {
77 //from name attribute of component
78 Hoge hoge = (Hoge) getComponent(Hoge.class);
79 hoge.bar();
80 Object[] args = mockInterceptor.getArgs("invoke");
81 assertEquals("hoge", args[0]);
82
83 //from class attribute of component
84 Foo foo = (Foo) getComponent(Foo.class);
85 foo.foo();
86 args = mockInterceptor.getArgs("invoke");
87 assertEquals("RemotingInterceptorTest$Foo", args[0]);
88
89 //from remoteName property
90 Bar bar = (Bar) getComponent(Bar.class);
91 bar.bar();
92 args = mockInterceptor.getArgs("invoke");
93 assertEquals("bar", args[0]);
94 }
95
96 public interface Hoge {
97 void foo();
98
99 void bar();
100 }
101
102 public static abstract class HogeImpl implements Hoge {
103 public void foo() {
104 }
105 }
106
107 public interface Foo {
108 void foo();
109 }
110
111 public interface Bar {
112 void bar();
113 }
114 }