1 /**
2  *  ServingXML
3  *
4  *  Copyright (C) 2006  Daniel Parker
5  *    daniel.parker@servingxml.com
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  *
19  **/
20 
21 package com.servingxml.components.flatfile.scanner.characters;
22 
23 import java.io.InputStream;
24 import java.io.Reader;
25 import java.io.InputStreamReader;
26 import java.io.BufferedReader;
27 import java.io.CharArrayReader;
28 import java.net.URL;
29 
30 import junit.framework.TestCase;
31 
32 import com.servingxml.components.flatfile.options.CharBuffer;
33 
34 public class CharBufferTest extends TestCase {
35 
CharBufferTest(String name)36   public CharBufferTest(String name) {
37     super(name);
38   }
39 
testRecordBuffer()40   public void testRecordBuffer() throws Exception {
41     //String filename = "hot.txt";
42     //URL url = Thread.currentThread().getContextClassLoader().getResource(filename);
43     //assertTrue("" + filename, url != null);
44     //InputStream is = url.openStream();
45 
46     InputStream is = getClass().getResourceAsStream( "/hot.txt" );
47 
48     Reader reader1 = new InputStreamReader(is);
49     BufferedReader reader = new BufferedReader(reader1);
50     CharBuffer buffer = new CharBufferImpl(reader);
51     while (!buffer.done()) {
52       buffer.next();
53       if (!buffer.done()) {
54         char[] prefix = new String("BOH03").toCharArray();
55         if (buffer.startsWith(prefix)) {
56           //System.out.println ();
57         }
58         //System.out.print(new String(new char[]{buffer.current()}));
59       }
60     }
61     //System.out.println ();
62     is.close();
63   }
64 
testRecordBuffer2()65   public void testRecordBuffer2() throws Exception {
66     //String filename = "hot.txt";
67     //URL url = Thread.currentThread().getContextClassLoader().getResource(filename);
68     //assertTrue("" + filename, url != null);
69 
70     //InputStream is = url.openStream();
71     InputStream is = getClass().getResourceAsStream( "/hot.txt" );
72 
73     Reader reader1 = new InputStreamReader(is);
74     BufferedReader reader = new BufferedReader(reader1);
75     CharBuffer buffer = new CharBufferImpl(reader);
76     while (!buffer.done()) {
77       buffer.next(1);
78       if (!buffer.done()) {
79         char[] prefix = new String("BOH03").toCharArray();
80         if (buffer.startsWith(prefix)) {
81           //System.out.println ();
82         }
83         //System.out.print(new String(new char[]{buffer.current()}));
84       }
85     }
86     //System.out.println ();
87     is.close();
88   }
89 
testNewLine()90   public void testNewLine() throws Exception {
91     //String filename = "hot.txt";
92     //URL url = Thread.currentThread().getContextClassLoader().getResource(filename);
93     //assertTrue("" + filename, url != null);
94 
95     //InputStream is = url.openStream();
96     //System.out.println ();
97     InputStream is = getClass().getResourceAsStream( "/hot.txt" );
98 
99     Reader reader1 = new InputStreamReader(is);
100     BufferedReader reader = new BufferedReader(reader1);
101     CharBuffer buffer = new CharBufferImpl(reader);
102     while (!buffer.done()) {
103       buffer.next();
104       if (!buffer.done()) {
105         char[] recordDelimiter = new String("\n").toCharArray();
106         if (buffer.startsWith(recordDelimiter)) {
107           buffer.next(recordDelimiter.length);
108           //System.out.print("#");
109           buffer.clear();
110         } else {
111           //System.out.print(new String(new char[]{buffer.current()}));
112         }
113       }
114     }
115     //System.out.println ();
116     is.close();
117   }
118 
testPositionMovement()119   public void testPositionMovement() throws Exception {
120     char[] data = new String("bcdefghi").toCharArray();
121 
122     Reader reader1 = new CharArrayReader(data);
123     BufferedReader reader = new BufferedReader(reader1);
124     CharBuffer buffer = new CharBufferImpl(reader);
125     assertTrue("-1=="+buffer.getPosition(), buffer.getPosition() == -1);
126     buffer.next();
127     assertTrue("0=="+buffer.getPosition(), buffer.getPosition() == 0);
128     assertTrue("b=="+ new String(new char[]{buffer.current()}), buffer.current() == data[0]);
129 
130     for (int i = 0; !buffer.done() && i < 20; ++i) {
131       //System.out.println ("before: position = " + buffer.getPosition() + ", length = " + buffer.length());
132       buffer.next();
133       //System.out.println ("after: position = " + buffer.getPosition() + ", length = " + buffer.length());
134     }
135     assertTrue("8==" + buffer.getPosition(),buffer.getPosition() == 8);
136   }
137 
testPositionMovement3()138   public void testPositionMovement3() throws Exception {
139     char[] data = new String("bcdefghi").toCharArray();
140 
141     Reader reader1 = new CharArrayReader(data);
142     BufferedReader reader = new BufferedReader(reader1);
143     CharBuffer buffer = new CharBufferImpl(reader);
144     assertTrue("-1=="+buffer.getPosition(), buffer.getPosition() == -1);
145     buffer.next();
146     assertTrue("0=="+buffer.getPosition(), buffer.getPosition() == 0);
147     assertTrue("b=="+ new String(new char[]{buffer.current()}), buffer.current() == data[0]);
148 
149     for (int i = 0; !buffer.done() && i < 20; ++i) {
150       buffer.next(3);
151     }
152     assertTrue("8==" + buffer.getPosition(),buffer.getPosition() == 8);
153   }
154 
testPositionMovement9()155   public void testPositionMovement9() throws Exception {
156     char[] data = new String("bcdefghi").toCharArray();
157 
158     Reader reader1 = new CharArrayReader(data);
159     BufferedReader reader = new BufferedReader(reader1);
160     CharBuffer buffer = new CharBufferImpl(reader);
161     assertTrue("-1=="+buffer.getPosition(), buffer.getPosition() == -1);
162     buffer.next();
163     assertTrue("0=="+buffer.getPosition(), buffer.getPosition() == 0);
164     assertTrue("b=="+ new String(new char[]{buffer.current()}), buffer.current() == data[0]);
165 
166     for (int i = 0; !buffer.done() && i < 20; ++i) {
167       buffer.next(9);
168     }
169     assertTrue("8==" + buffer.getPosition(),buffer.getPosition() == 8);
170   }
171 
testReserved()172   public void testReserved() throws Exception {
173     char[] data = new String("abcdefghij").toCharArray();
174     Reader reader1 = new CharArrayReader(data,1,8);
175     BufferedReader reader = new BufferedReader(reader1);
176     CharBuffer buffer = new CharBufferImpl(reader);
177 
178     buffer.setReserved(6);
179 
180     for (int i = 0; !buffer.done() && i < 20; ++i) {
181       buffer.next();
182     }
183     assertTrue("2==" + buffer.getPosition(),buffer.getPosition() == 2);
184   }
185 
testReserved2()186   public void testReserved2() throws Exception {
187     char[] data = new String("abcdefghijkl").toCharArray();
188 
189     Reader reader1 = new CharArrayReader(data);
190     BufferedReader reader = new BufferedReader(reader1);
191     CharBuffer buffer = new CharBufferImpl(reader);
192 
193     buffer.setReserved(6);
194 
195     buffer.next(3);
196     assertTrue("2="+buffer.getPosition(), buffer.getPosition() == 2);
197     assertTrue("!done (2)", !buffer.done());
198 
199     buffer.next(3);
200     assertTrue("5="+buffer.getPosition(), buffer.getPosition() == 5);
201     assertTrue("!done (5)", !buffer.done());
202 
203     buffer.next(3);
204     assertTrue("6="+buffer.getPosition(), buffer.getPosition() == 6);
205     assertTrue("done (after 5)", buffer.done());
206 
207     buffer.setReserved(0);
208     //System.out.println ("before clear:  position = " + buffer.getPosition() + ", length = " + buffer.length() + ", maxLength = " + buffer.maxLength());
209     buffer.clear();
210     //System.out.println ("after clear:  position = " + buffer.getPosition() + ", length = " + buffer.length() + ", maxLength = " + buffer.maxLength());
211     buffer.next(3);
212     assertTrue("2="+buffer.getPosition(), buffer.getPosition() == 2);
213     assertTrue("!done (after clear)", !buffer.done());
214 
215     buffer.next(3);
216     assertTrue("5="+buffer.getPosition(), buffer.getPosition() == 5);
217     assertTrue("!done (second time after clear)", !buffer.done());
218 
219     buffer.next(3);
220     assertTrue("done (finally)", buffer.done());
221   }
222 }
223 
224 
225 
226 
227