1 43 44 package de.susebox.jtopas; 45 46 import java.util.Iterator ; 50 import java.io.Reader ; 51 import java.io.StringReader ; 52 53 import junit.framework.Test; 54 import junit.framework.TestCase; 55 import junit.framework.TestSuite; 56 import junit.framework.Assert; 57 58 import de.susebox.java.lang.ExtRuntimeException; 59 60 import de.susebox.TestUtilities; 61 62 63 67 76 public class TestTextAccess extends TestCase { 77 78 82 85 public static void main(String [] args) { 86 String [] tests = { TestTextAccess.class.getName() }; 87 88 TestUtilities.run(tests, args); 89 } 90 91 92 96 102 public static Test suite() { 103 TestSuite suite = new TestSuite(TestTextAccess.class.getName()); 104 105 suite.addTest(new TestTextAccess("testGetText")); 106 suite.addTest(new TestTextAccess("testSetReadPos")); 107 return suite; 108 } 109 110 111 115 119 public TestTextAccess(String test) { 120 super(test); 121 } 122 123 124 128 132 protected void setUp() throws Exception { 133 _properties = new StandardTokenizerProperties(); 134 _tokenizer = new StandardTokenizer(_properties); 135 136 _properties.setParseFlags(_properties.getParseFlags() 137 | Flags.F_KEEP_DATA 138 | Flags.F_RETURN_WHITESPACES); 139 _properties.addString("'", "'", "\\"); 140 _properties.addString("\"", "\"", "\\"); 141 } 142 143 144 148 protected void tearDown() throws Exception { 149 _tokenizer.close(); 150 } 151 152 153 157 161 public void testGetText() throws Throwable { 162 String text = "A text to parse."; 163 Reader reader = new StringReader (text); 164 165 _tokenizer.setSource(reader); 167 _tokenizer.readMore(); 168 169 int startPos = _tokenizer.getRangeStart(); 171 int readPos = _tokenizer.getReadPosition(); 172 173 assertTrue("Current read position " + readPos + " differs from range start + " + startPos + ".", 174 startPos == readPos); 175 assertTrue("Current range " + _tokenizer.currentlyAvailable() + " differs from text length " + text.length() + ".", 176 _tokenizer.currentlyAvailable() == text.length()); 177 178 while (_tokenizer.hasMoreToken()) { 180 Token token = _tokenizer.nextToken(); 181 182 assertTrue("Current read position did not move by length of token " + token.getLength() 183 + ". Moved by " + (_tokenizer.getReadPosition() - readPos) + ".", 184 _tokenizer.getReadPosition() - readPos == token.getLength()); 185 readPos = _tokenizer.getReadPosition(); 186 } 187 188 String readText = _tokenizer.getText(0, text.length()); 190 assertTrue("Retrieved different text \"" + readText + "\".", readText.equals(text)); 191 192 for (int pos = 0; pos < text.length(); ++pos) { 194 for (int len = 0; len < _tokenizer.currentlyAvailable() - pos; ++len) { 195 readText = _tokenizer.getText(pos, len); 196 assertTrue("Expected \"" + text.substring(pos, pos + len) + "\", found \"" + readText + "\".", 197 readText.equals(text.substring(pos, pos + len))); 198 } 199 } 200 201 for (int pos = 0; pos < text.length(); ++pos) { 203 char ch = _tokenizer.getChar(pos); 204 205 assertTrue("Expected '" + text.charAt(pos) + "', found '" + ch + "'.", 206 ch == text.charAt(pos)); 207 } 208 } 209 210 211 215 public void testSetReadPos() throws Throwable { 216 String text = "A text to parse."; 217 Reader reader = new StringReader (text); 218 219 _tokenizer.setSource(reader); 221 _tokenizer.readMore(); 222 223 while (_tokenizer.hasMoreToken()) { 225 Token token = _tokenizer.nextToken(); 226 String image = _tokenizer.currentImage(); 227 int retry = 0; 228 229 if (token.getType() == Token.EOF) { 230 break; 231 } 232 while (retry++ < 10) { 233 Token token2; 234 235 _tokenizer.setReadPositionRelative( - token.getLength()); 236 assertTrue("Should have another token.", _tokenizer.hasMoreToken()); 237 token2 = _tokenizer.nextToken(); 238 assertTrue("Retrieved unexpected token \"" + _tokenizer.currentImage() + "\" instead of \"" + image + "\".", 239 token.equals(token2)); 240 } 241 } 242 243 _tokenizer.setReadPositionAbsolute(0); 245 assertTrue(_tokenizer.getReadPosition() == 0); 246 247 while (_tokenizer.hasMoreToken()) { 248 Token token = _tokenizer.nextToken(); 249 String image = _tokenizer.currentImage(); 250 int startPos = token.getStartPosition(); 251 int retry = 0; 252 253 if (token.getType() == Token.EOF) { 254 break; 255 } 256 while (retry++ < 10) { 257 Token token2; 258 259 _tokenizer.setReadPositionAbsolute(startPos); 260 assertTrue("Should have another token.", _tokenizer.hasMoreToken()); 261 token2 = _tokenizer.nextToken(); 262 assertTrue("Retrieved unexpected token \"" + _tokenizer.currentImage() + "\" instead of \"" + image + "\".", 263 token.equals(token2)); 264 } 265 } 266 } 267 268 269 private StandardTokenizer _tokenizer = null; 273 private TokenizerProperties _properties = null; 274 } 275 | Popular Tags |