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