1/* 2 * Copyright (C) 2008 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package libcore.java.io; 18 19import java.io.ByteArrayInputStream; 20import java.io.StreamTokenizer; 21import java.io.StringReader; 22import junit.framework.TestCase; 23 24/** 25 * Tests for the StreamTokenizer 26 */ 27public class OldAndroidStreamTokenizerTest extends TestCase { 28 29 public void testStreamTokenizer() throws Exception { 30 String str = "Testing 12345 \n alpha \r\n omega"; 31 String strb = "-3.8 'BLIND mice' \r sEe /* how */ they run"; 32 StringReader aa = new StringReader(str); 33 StringReader ba = new StringReader(strb); 34 StreamTokenizer a = new StreamTokenizer(aa); 35 StreamTokenizer b = new StreamTokenizer(ba); 36 37 assertEquals(1, a.lineno()); 38 assertEquals(StreamTokenizer.TT_WORD, a.nextToken()); 39 assertEquals("Token[Testing], line 1", a.toString()); 40 assertEquals(StreamTokenizer.TT_NUMBER, a.nextToken()); 41 assertEquals("Token[n=12345.0], line 1", a.toString()); 42 assertEquals(StreamTokenizer.TT_WORD, a.nextToken()); 43 assertEquals("Token[alpha], line 2", a.toString()); 44 assertEquals(StreamTokenizer.TT_WORD, a.nextToken()); 45 assertEquals("Token[omega], line 3", a.toString()); 46 assertEquals(StreamTokenizer.TT_EOF, a.nextToken()); 47 assertEquals("Token[EOF], line 3", a.toString()); 48 49 b.commentChar('u'); 50 b.eolIsSignificant(true); 51 b.lowerCaseMode(true); 52 b.ordinaryChar('y'); 53 b.slashStarComments(true); 54 55 assertEquals(StreamTokenizer.TT_NUMBER, b.nextToken()); 56 assertEquals(-3.8, b.nval); 57 assertEquals("Token[n=-3.8], line 1", b.toString()); 58 assertEquals(39, b.nextToken()); // ' 59 assertEquals("Token[BLIND mice], line 1", b.toString()); 60 assertEquals(10, b.nextToken()); // \n 61 assertEquals("Token[EOL], line 2", b.toString()); 62 assertEquals(StreamTokenizer.TT_WORD, b.nextToken()); 63 assertEquals("Token[see], line 2", b.toString()); 64 assertEquals(StreamTokenizer.TT_WORD, b.nextToken()); 65 assertEquals("Token[the], line 2", b.toString()); 66 assertEquals(121, b.nextToken()); // y 67 assertEquals("Token['y'], line 2", b.toString()); 68 assertEquals(StreamTokenizer.TT_WORD, b.nextToken()); 69 assertEquals("Token[r], line 2", b.toString()); 70 assertEquals(StreamTokenizer.TT_EOF, b.nextToken()); 71 assertEquals("Token[EOF], line 2", b.toString()); 72 73 // A harmony regression test 74 byte[] data = new byte[]{(byte) '-'}; 75 StreamTokenizer tokenizer = new StreamTokenizer(new ByteArrayInputStream(data)); 76 tokenizer.nextToken(); 77 String result = tokenizer.toString(); 78 assertEquals("Token['-'], line 1", result); 79 80 // another harmony regression test 81 byte[] data2 = new byte[]{(byte) '"', 82 (byte) 'H', 83 (byte) 'e', 84 (byte) 'l', 85 (byte) 'l', 86 (byte) 'o', 87 (byte) '"'}; 88 StreamTokenizer tokenizer2 = new StreamTokenizer(new ByteArrayInputStream(data2)); 89 tokenizer2.nextToken(); 90 result = tokenizer2.toString(); 91 assertEquals("Token[Hello], line 1", result); 92 } 93} 94