KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > jcorporate > expresso > kernel > util > test > FastStringBufferTest


1 /* ====================================================================
2  * The Jcorporate Apache Style Software License, Version 1.2 05-07-2002
3  *
4  * Copyright (c) 1995-2002 Jcorporate Ltd. All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  *
10  * 1. Redistributions of source code must retain the above copyright
11  * notice, this list of conditions and the following disclaimer.
12  *
13  * 2. Redistributions in binary form must reproduce the above copyright
14  * notice, this list of conditions and the following disclaimer in
15  * the documentation and/or other materials provided with the
16  * distribution.
17  *
18  * 3. The end-user documentation included with the redistribution,
19  * if any, must include the following acknowledgment:
20  * "This product includes software developed by Jcorporate Ltd.
21  * (http://www.jcorporate.com/)."
22  * Alternately, this acknowledgment may appear in the software itself,
23  * if and wherever such third-party acknowledgments normally appear.
24  *
25  * 4. "Jcorporate" and product names such as "Expresso" must
26  * not be used to endorse or promote products derived from this
27  * software without prior written permission. For written permission,
28  * please contact info@jcorporate.com.
29  *
30  * 5. Products derived from this software may not be called "Expresso",
31  * or other Jcorporate product names; nor may "Expresso" or other
32  * Jcorporate product names appear in their name, without prior
33  * written permission of Jcorporate Ltd.
34  *
35  * 6. No product derived from this software may compete in the same
36  * market space, i.e. framework, without prior written permission
37  * of Jcorporate Ltd. For written permission, please contact
38  * partners@jcorporate.com.
39  *
40  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
41  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
42  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
43  * DISCLAIMED. IN NO EVENT SHALL JCORPORATE LTD OR ITS CONTRIBUTORS
44  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
45  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
46  * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
47  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
48  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
49  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
50  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51  * SUCH DAMAGE.
52  * ====================================================================
53  *
54  * This software consists of voluntary contributions made by many
55  * individuals on behalf of the Jcorporate Ltd. Contributions back
56  * to the project(s) are encouraged when you make modifications.
57  * Please send them to support@jcorporate.com. For more information
58  * on Jcorporate Ltd. and its products, please see
59  * <http://www.jcorporate.com/>.
60  *
61  * Portions of this software are based upon other open source
62  * products and are subject to their respective licenses.
63  */

64
65 package com.jcorporate.expresso.kernel.util.test;
66
67 import com.jcorporate.expresso.kernel.util.FastStringBuffer;
68 import junit.framework.TestCase;
69 import junit.framework.TestSuite;
70
71 /**
72  * Unit Test for FastStringBuffer
73  *
74  * @author Michael Rimov
75  * @version $Revision: 1.2 $ on $Date: 2004/11/17 20:48:23 $
76  */

77
78 public class FastStringBufferTest
79         extends TestCase {
80
81
82     public FastStringBufferTest(String JavaDoc testName)
83             throws Exception JavaDoc {
84         super(testName);
85     }
86
87     public static void main(String JavaDoc[] args)
88             throws Exception JavaDoc {
89
90         //Set the system properties we need
91
junit.textui.TestRunner.run(suite());
92     }
93
94     /**
95      * Filler Function to conform to log4j test suites.
96      *
97      * @return instantiated TestSuite
98      */

99     public static junit.framework.Test suite() {
100         return new TestSuite(FastStringBufferTest.class);
101     }
102
103     /**
104      * Tests basic append and clear to make sure it's working.
105      */

106     public void testFastStringBuffer() {
107         final String JavaDoc testValue = "abcdefghijklmnop";
108         try {
109             FastStringBuffer testBuffer = new FastStringBuffer(256);
110             for (int j = 0; j < 100; j++) {
111                 assertTrue("Fresh FastStringBuffer should have zero length", testBuffer.length() == 0);
112                 assertTrue("Fresh FastStringBuffer should have empty string", "".equals(testBuffer.toString()));
113
114                 testBuffer.append(testValue);
115                 assertTrue("Must have proper value in test buffer.", testValue.equals(testBuffer.toString()));
116                 testBuffer.clear();
117             }
118         } catch (Exception JavaDoc ex) {
119             ex.printStackTrace();
120             fail("Error performaing testFastStringBufferPool(): " + ex.getMessage());
121         }
122
123
124     }
125
126
127     /**
128      * Similar to above test, but we get the FastStringBuffer from the FastStringBuffer
129      * pool instead
130      */

131     public void testFastStringBufferPool() {
132         final String JavaDoc testValue = "abcdefghijklmnop";
133
134         try {
135             for (int j = 0; j < 100; j++) {
136                 FastStringBuffer testBuffer = FastStringBuffer.getInstance();
137                 try {
138                     assertTrue("Must receive non-null testBuffer from Pool", testBuffer != null);
139                     assertTrue("Buffer from pool must have 1k capacity", testBuffer.capacity() == 1024);
140                     assertTrue("Fresh value from the pool should have zero length", testBuffer.length() == 0);
141                     assertTrue("Fresh value from the pool should have empty string", "".equals(testBuffer.toString()));
142
143                     testBuffer.append(testValue);
144                     String JavaDoc resultValue = testBuffer.toString();
145                     assertTrue("Must have proper value in test buffer. Got '" + resultValue + "' instead",
146                             testValue.equals(resultValue));
147                 } finally {
148                     testBuffer.release();
149                 }
150             }
151         } catch (Exception JavaDoc ex) {
152             ex.printStackTrace();
153             fail("Error performaing testFastStringBufferPool(): " + ex.getMessage());
154         }
155     }
156
157     public void testFastStringBufferPoolWithOverlap() {
158         final String JavaDoc testValue = "abcdefghijklmnop";
159
160         try {
161             for (int j = 0; j < 100; j++) {
162                 FastStringBuffer overlapBuffer = FastStringBuffer.getInstance();
163                 FastStringBuffer testBuffer = FastStringBuffer.getInstance();
164                 try {
165                     assertTrue("Must receive non-null testBuffer from Pool", testBuffer != null);
166                     overLapFastStringBuffer();
167                     assertTrue("Buffer from pool must have 1k capacity", testBuffer.capacity() == 1024);
168                     overLapFastStringBuffer();
169                     assertTrue("Fresh value from the pool should have zero length", testBuffer.length() == 0);
170                     overLapFastStringBuffer();
171                     assertTrue("Fresh value from the pool should have empty string", "".equals(testBuffer.toString()));
172                     overLapFastStringBuffer();
173
174                     testBuffer.append(testValue);
175                     String JavaDoc resultValue = testBuffer.toString();
176                     assertTrue("Must have proper value in test buffer. Got '" + resultValue + "' instead",
177                             testValue.equals(resultValue));
178                     overLapFastStringBuffer();
179                 } finally {
180                     overlapBuffer.release();
181                     testBuffer.release();
182                 }
183             }
184         } catch (Exception JavaDoc ex) {
185             ex.printStackTrace();
186             fail("Error performaing testFastStringBufferPool(): " + ex.getMessage());
187         }
188     }
189
190     private void overLapFastStringBuffer() {
191         FastStringBuffer fsb = FastStringBuffer.getInstance();
192         fsb.append("WHERE MIMETYPES = 2");
193         fsb.append("AND WHOKNOW'S WHAT = 4");
194         fsb.toString();
195         fsb.release();
196     }
197
198
199     public void testFastStringBufferPoolWithOverflow() {
200 // final String testValue ="abcdefghijklmnop";
201

202         try {
203             for (int j = 0; j < 100; j++) {
204                 FastStringBuffer testBuffer = FastStringBuffer.getInstance();
205                 try {
206                     assertTrue("Must receive non-null testBuffer from Pool", testBuffer != null);
207                     assertTrue(
208                             "Buffer from pool must have 1k capacity j=" + j + " got " + testBuffer.capacity() + " instead.",
209                             testBuffer.capacity() == 1024);
210                     assertTrue("Fresh value from the pool should have zero length", testBuffer.length() == 0);
211                     assertTrue("Fresh value from the pool should have empty string", "".equals(testBuffer.toString()));
212                     for (int i = 0; i < 2048; i++) {
213                         testBuffer.append("a");
214                     }
215                     assertTrue("Must have proper length in test buffer got " + testBuffer.length() + " instead",
216                             testBuffer.length() == 2048);
217                 } finally {
218                     testBuffer.release();
219                 }
220             }
221         } catch (Exception JavaDoc ex) {
222             ex.printStackTrace();
223             fail("Error performaing testFastStringBufferPool(): " + ex.getMessage());
224         }
225
226     }
227 }
228
Popular Tags