EMMA Coverage Report (generated Fri Oct 21 16:16:13 KST 2005)
[all classes][org.apache.mina.protocol]

COVERAGE SUMMARY FOR SOURCE FILE [ProtocolFilterChainTest.java]

nameclass, %method, %block, %line, %
ProtocolFilterChainTest.java83%  (5/6)70%  (26/37)94%  (380/403)87%  (77/89)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
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$10%   (0/1)100% (0/0)100% (0/0)100% (0/0)
     
class ProtocolFilterChainTest$TestSession100% (1/1)15%  (2/13)43%  (15/35)21%  (3/14)
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)
getScheduledWriteRequests (): int 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$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 327113 2005-10-21 06:59:15Z 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 The Apache Directory Project (dev@directory.apache.org)
35 * @version $Rev: 327113 $, $Date: 2005-10-21 15:59:15 +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 int getScheduledWriteRequests()
156        {
157            return 0;
158        }
159 
160        public TransportType getTransportType() {
161            return null;
162        }
163 
164        public boolean isConnected() {
165            return false;
166        }
167 
168        public SessionConfig getConfig() {
169            return null;
170        }
171 
172        public SocketAddress getRemoteAddress() {
173            return null;
174        }
175 
176        public SocketAddress getLocalAddress() {
177            return null;
178        }
179 
180        public ProtocolFilterChain getFilterChain()
181        {
182            return null;
183        }
184    }
185 
186    private class TestFilter implements ProtocolFilter
187    {
188        private final char id;
189 
190        private TestFilter( char id )
191        {
192            this.id = id;
193        }
194        
195        public void sessionOpened(NextFilter nextFilter, ProtocolSession session) {
196            result += id + "SO";
197            nextFilter.sessionOpened( session );
198        }
199 
200        public void sessionClosed(NextFilter nextFilter, ProtocolSession session) {
201            result += id + "SC";
202            nextFilter.sessionClosed( session );
203        }
204 
205        public void sessionIdle(NextFilter nextFilter, ProtocolSession session, IdleStatus status) {
206            result += id + "SI";
207            nextFilter.sessionIdle( session, status );
208        }
209 
210        public void exceptionCaught(NextFilter nextFilter, ProtocolSession session, Throwable cause) {
211            result += id + "EC";
212            nextFilter.exceptionCaught( session, cause );
213        }
214 
215        public void filterWrite(NextFilter nextFilter, ProtocolSession session, Object message) {
216            result += id + "FW";
217            nextFilter.filterWrite( session, message );
218        }
219 
220        public void messageReceived(NextFilter nextFilter, org.apache.mina.protocol.ProtocolSession session, Object message) {
221            result += id + "MR";
222            nextFilter.messageReceived( session, message );
223        }
224 
225        public void messageSent(NextFilter nextFilter, org.apache.mina.protocol.ProtocolSession session, Object message) {
226            result += id + "MS";
227            nextFilter.messageSent( session, message );
228        }
229    }
230 
231    private static class ProtocolFilterChainImpl extends AbstractProtocolFilterChain
232    {
233        protected ProtocolFilterChainImpl()
234        {
235        }
236 
237        protected void doWrite( ProtocolSession session, Object message )
238        {
239            messageSent( session, message );
240        }
241    }
242    
243}

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