EMMA Coverage Report (generated Wed Jun 08 12:10:57 KST 2005)
[all classes][org.apache.mina.protocol]

COVERAGE SUMMARY FOR SOURCE FILE [ProtocolFilterChainTest.java]

nameclass, %method, %block, %line, %
ProtocolFilterChainTest.java83%  (5/6)72%  (26/36)95%  (380/401)88%  (77/88)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class ProtocolFilterChainTest$10%   (0/1)100% (0/0)100% (0/0)100% (0/0)
     
class ProtocolFilterChainTest$TestSession100% (1/1)17%  (2/12)45%  (15/33)23%  (3/13)
close (boolean): void 0%   (0/1)0%   (0/1)0%   (0/1)
getConfig (): SessionConfig 0%   (0/1)0%   (0/2)0%   (0/1)
getDecoder (): ProtocolDecoder 0%   (0/1)0%   (0/2)0%   (0/1)
getEncoder (): ProtocolEncoder 0%   (0/1)0%   (0/2)0%   (0/1)
getFilterChain (): ProtocolFilterChain 0%   (0/1)0%   (0/2)0%   (0/1)
getLocalAddress (): SocketAddress 0%   (0/1)0%   (0/2)0%   (0/1)
getRemoteAddress (): SocketAddress 0%   (0/1)0%   (0/2)0%   (0/1)
getTransportType (): TransportType 0%   (0/1)0%   (0/2)0%   (0/1)
isConnected (): boolean 0%   (0/1)0%   (0/2)0%   (0/1)
write (Object): void 0%   (0/1)0%   (0/1)0%   (0/1)
ProtocolFilterChainTest$TestSession (ProtocolFilterChainTest): void 100% (1/1)100% (12/12)100% (2/2)
getHandler (): ProtocolHandler 100% (1/1)100% (3/3)100% (1/1)
     
class ProtocolFilterChainTest$TestSession$1100% (1/1)100% (7/7)95%  (59/62)93%  (14/15)
exceptionCaught (ProtocolSession, Throwable): void 100% (1/1)86%  (18/21)75%  (3/4)
ProtocolFilterChainTest$TestSession$1 (ProtocolFilterChainTest$TestSession): ... 100% (1/1)100% (6/6)100% (1/1)
messageReceived (ProtocolSession, Object): void 100% (1/1)100% (7/7)100% (2/2)
messageSent (ProtocolSession, Object): void 100% (1/1)100% (7/7)100% (2/2)
sessionClosed (ProtocolSession): void 100% (1/1)100% (7/7)100% (2/2)
sessionIdle (ProtocolSession, IdleStatus): void 100% (1/1)100% (7/7)100% (2/2)
sessionOpened (ProtocolSession): void 100% (1/1)100% (7/7)100% (2/2)
     
class ProtocolFilterChainTest100% (1/1)100% (7/7)100% (165/165)100% (32/32)
ProtocolFilterChainTest (): void 100% (1/1)100% (3/3)100% (2/2)
formatResult (String): String 100% (1/1)100% (41/41)100% (7/7)
run (String): void 100% (1/1)100% (76/76)100% (12/12)
setUp (): void 100% (1/1)100% (16/16)100% (4/4)
tearDown (): void 100% (1/1)100% (1/1)100% (1/1)
testChained (): void 100% (1/1)100% (24/24)100% (4/4)
testDefault (): void 100% (1/1)100% (4/4)100% (2/2)
     
class ProtocolFilterChainTest$ProtocolFilterChainImpl100% (1/1)100% (2/2)100% (8/8)100% (4/4)
ProtocolFilterChainTest$ProtocolFilterChainImpl (): void 100% (1/1)100% (3/3)100% (2/2)
doWrite (ProtocolSession, Object): void 100% (1/1)100% (5/5)100% (2/2)
     
class ProtocolFilterChainTest$TestFilter100% (1/1)100% (8/8)100% (133/133)100% (24/24)
ProtocolFilterChainTest$TestFilter (ProtocolFilterChainTest, char): void 100% (1/1)100% (9/9)100% (3/3)
exceptionCaught (ProtocolFilter$NextFilter, ProtocolSession, Throwable): void 100% (1/1)100% (18/18)100% (3/3)
filterWrite (ProtocolFilter$NextFilter, ProtocolSession, Object): void 100% (1/1)100% (18/18)100% (3/3)
messageReceived (ProtocolFilter$NextFilter, ProtocolSession, Object): void 100% (1/1)100% (18/18)100% (3/3)
messageSent (ProtocolFilter$NextFilter, ProtocolSession, Object): void 100% (1/1)100% (18/18)100% (3/3)
sessionClosed (ProtocolFilter$NextFilter, ProtocolSession): void 100% (1/1)100% (17/17)100% (3/3)
sessionIdle (ProtocolFilter$NextFilter, ProtocolSession, IdleStatus): void 100% (1/1)100% (18/18)100% (3/3)
sessionOpened (ProtocolFilter$NextFilter, ProtocolSession): void 100% (1/1)100% (17/17)100% (3/3)

1/*
2 *   @(#) $Id: ProtocolFilterChainTest.java 165586 2005-05-02 06:27:27Z trustin $
3 *
4 *   Copyright 2004 The Apache Software Foundation
5 *
6 *   Licensed under the Apache License, Version 2.0 (the "License");
7 *   you may not use this file except in compliance with the License.
8 *   You may obtain a copy of the License at
9 *
10 *       http://www.apache.org/licenses/LICENSE-2.0
11 *
12 *   Unless required by applicable law or agreed to in writing, software
13 *   distributed under the License is distributed on an "AS IS" BASIS,
14 *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 *   See the License for the specific language governing permissions and
16 *   limitations under the License.
17 *
18 */
19package org.apache.mina.protocol;
20 
21import java.net.SocketAddress;
22 
23import junit.framework.Assert;
24import junit.framework.TestCase;
25 
26import org.apache.mina.common.BaseSession;
27import org.apache.mina.common.IdleStatus;
28import org.apache.mina.common.SessionConfig;
29import org.apache.mina.common.TransportType;
30 
31/**
32 * Tests {@link AbstractProtocolFilterChain}.
33 * 
34 * @author Trustin Lee (trustin@apache.org)
35 * @version $Rev: 165586 $, $Date: 2005-05-02 15:27:27 +0900 $ 
36 */
37public class ProtocolFilterChainTest extends TestCase
38{
39    private ProtocolFilterChainImpl chain;
40    private ProtocolSession session;
41    private String result;
42 
43    public void setUp()
44    {
45        chain = new ProtocolFilterChainImpl();
46        session = new TestSession();
47        result = "";
48    }
49    
50    public void tearDown()
51    {
52    }
53    
54    public void testDefault()
55    {
56        run( "HSO HMR HMS HSI HEC HSC" );
57    }
58    
59    public void testChained()
60    {
61        chain.addLast( "A", new TestFilter( 'A' ) );
62        chain.addLast( "B", new TestFilter( 'B' ) );
63        run( "ASO BSO HSO" +
64             "AMR BMR HMR" +
65             "BFW AFW AMS BMS HMS" +
66             "ASI BSI HSI" +
67             "AEC BEC HEC" +
68             "ASC BSC HSC" );
69    }
70    
71    private void run( String expectedResult )
72    {
73        chain.sessionOpened( session );
74        chain.messageReceived( session, new Object() );
75        chain.filterWrite( session, new Object() );
76        chain.sessionIdle( session, IdleStatus.READER_IDLE );
77        chain.exceptionCaught( session, new Exception() );
78        chain.sessionClosed( session );
79        
80        result = formatResult( result );
81        expectedResult = formatResult( expectedResult );
82        
83        System.out.println( "Expected: " + expectedResult );
84        System.out.println( "Actual:   " + result );
85        Assert.assertEquals( expectedResult, result );
86    }
87    
88    private String formatResult( String result )
89    {
90        result = result.replaceAll( "\\s", "" );
91        StringBuffer buf = new StringBuffer( result.length() * 4 / 3 );
92        for( int i = 0; i < result.length(); i++ )
93        {
94            buf.append( result.charAt( i ) );
95            if( i % 3 == 2 )
96            {
97                buf.append(' ');
98            }
99        }
100        
101        return buf.toString();
102    }
103 
104    private class TestSession extends BaseSession implements ProtocolSession
105    {
106        private ProtocolHandler handler = new ProtocolHandlerAdapter()
107        {
108            public void sessionOpened(ProtocolSession session) {
109                result += "HSO";
110            }
111 
112            public void sessionClosed(ProtocolSession session) {
113                result += "HSC";
114            }
115 
116            public void sessionIdle(ProtocolSession session, IdleStatus status) {
117                result += "HSI";
118            }
119 
120            public void exceptionCaught(ProtocolSession session, Throwable cause) {
121                result += "HEC";
122                if( cause.getClass() != Exception.class )
123                {
124                    cause.printStackTrace( System.out );
125                }
126            }
127 
128            public void messageReceived(ProtocolSession session, Object message) {
129                result += "HMR";
130            }
131 
132            public void messageSent(ProtocolSession session, Object message) {
133                result += "HMS";
134            }
135        };
136 
137        public ProtocolHandler getHandler() {
138            return handler;
139        }
140 
141        public ProtocolEncoder getEncoder() {
142            return null;
143        }
144 
145        public ProtocolDecoder getDecoder() {
146            return null;
147        }
148 
149        public void close( boolean wait ) {
150        }
151 
152        public void write(Object message) {
153        }
154 
155        public TransportType getTransportType() {
156            return null;
157        }
158 
159        public boolean isConnected() {
160            return false;
161        }
162 
163        public SessionConfig getConfig() {
164            return null;
165        }
166 
167        public SocketAddress getRemoteAddress() {
168            return null;
169        }
170 
171        public SocketAddress getLocalAddress() {
172            return null;
173        }
174 
175        public ProtocolFilterChain getFilterChain()
176        {
177            return null;
178        }
179    }
180 
181    private class TestFilter implements ProtocolFilter
182    {
183        private final char id;
184 
185        private TestFilter( char id )
186        {
187            this.id = id;
188        }
189        
190        public void sessionOpened(NextFilter nextFilter, ProtocolSession session) {
191            result += id + "SO";
192            nextFilter.sessionOpened( session );
193        }
194 
195        public void sessionClosed(NextFilter nextFilter, ProtocolSession session) {
196            result += id + "SC";
197            nextFilter.sessionClosed( session );
198        }
199 
200        public void sessionIdle(NextFilter nextFilter, ProtocolSession session, IdleStatus status) {
201            result += id + "SI";
202            nextFilter.sessionIdle( session, status );
203        }
204 
205        public void exceptionCaught(NextFilter nextFilter, ProtocolSession session, Throwable cause) {
206            result += id + "EC";
207            nextFilter.exceptionCaught( session, cause );
208        }
209 
210        public void filterWrite(NextFilter nextFilter, ProtocolSession session, Object message) {
211            result += id + "FW";
212            nextFilter.filterWrite( session, message );
213        }
214 
215        public void messageReceived(NextFilter nextFilter, org.apache.mina.protocol.ProtocolSession session, Object message) {
216            result += id + "MR";
217            nextFilter.messageReceived( session, message );
218        }
219 
220        public void messageSent(NextFilter nextFilter, org.apache.mina.protocol.ProtocolSession session, Object message) {
221            result += id + "MS";
222            nextFilter.messageSent( session, message );
223        }
224    }
225 
226    private static class ProtocolFilterChainImpl extends AbstractProtocolFilterChain
227    {
228        protected ProtocolFilterChainImpl()
229        {
230        }
231 
232        protected void doWrite( ProtocolSession session, Object message )
233        {
234            messageSent( session, message );
235        }
236    }
237    
238}

[all classes][org.apache.mina.protocol]
EMMA 2.0.4217 (C) Vladimir Roubtsov