| /* |
| * Copyright (C) 2008 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package android.core; |
| |
| import junit.framework.TestCase; |
| |
| import java.io.ByteArrayInputStream; |
| import java.io.StreamTokenizer; |
| import java.io.StringReader; |
| import android.test.suitebuilder.annotation.MediumTest; |
| |
| /** |
| * Tests for the StreamTokenizer |
| */ |
| public class StreamTokenizerTest extends TestCase { |
| |
| @MediumTest |
| public void testStreamTokenizer() throws Exception { |
| String str = "Testing 12345 \n alpha \r\n omega"; |
| String strb = "-3.8 'BLIND mice' \r sEe /* how */ they run"; |
| StringReader aa = new StringReader(str); |
| StringReader ba = new StringReader(strb); |
| StreamTokenizer a = new StreamTokenizer(aa); |
| StreamTokenizer b = new StreamTokenizer(ba); |
| |
| assertEquals(1, a.lineno()); |
| assertEquals(StreamTokenizer.TT_WORD, a.nextToken()); |
| assertEquals("Token[Testing], line 1", a.toString()); |
| assertEquals(StreamTokenizer.TT_NUMBER, a.nextToken()); |
| assertEquals("Token[n=12345.0], line 1", a.toString()); |
| assertEquals(StreamTokenizer.TT_WORD, a.nextToken()); |
| assertEquals("Token[alpha], line 2", a.toString()); |
| assertEquals(StreamTokenizer.TT_WORD, a.nextToken()); |
| assertEquals("Token[omega], line 3", a.toString()); |
| assertEquals(StreamTokenizer.TT_EOF, a.nextToken()); |
| assertEquals("Token[EOF], line 3", a.toString()); |
| |
| b.commentChar('u'); |
| b.eolIsSignificant(true); |
| b.lowerCaseMode(true); |
| b.ordinaryChar('y'); |
| b.slashStarComments(true); |
| |
| assertEquals(StreamTokenizer.TT_NUMBER, b.nextToken()); |
| assertEquals(-3.8, b.nval); |
| assertEquals("Token[n=-3.8], line 1", b.toString()); |
| assertEquals(39, b.nextToken()); // ' |
| assertEquals("Token[BLIND mice], line 1", b.toString()); |
| assertEquals(10, b.nextToken()); // \n |
| assertEquals("Token[EOL], line 2", b.toString()); |
| assertEquals(StreamTokenizer.TT_WORD, b.nextToken()); |
| assertEquals("Token[see], line 2", b.toString()); |
| assertEquals(StreamTokenizer.TT_WORD, b.nextToken()); |
| assertEquals("Token[the], line 2", b.toString()); |
| assertEquals(121, b.nextToken()); // y |
| assertEquals("Token['y'], line 2", b.toString()); |
| assertEquals(StreamTokenizer.TT_WORD, b.nextToken()); |
| assertEquals("Token[r], line 2", b.toString()); |
| assertEquals(StreamTokenizer.TT_EOF, b.nextToken()); |
| assertEquals("Token[EOF], line 2", b.toString()); |
| |
| // A harmony regression test |
| byte[] data = new byte[]{(byte) '-'}; |
| StreamTokenizer tokenizer = new StreamTokenizer(new ByteArrayInputStream(data)); |
| tokenizer.nextToken(); |
| String result = tokenizer.toString(); |
| assertEquals("Token['-'], line 1", result); |
| |
| // another harmony regression test |
| byte[] data2 = new byte[]{(byte) '"', |
| (byte) 'H', |
| (byte) 'e', |
| (byte) 'l', |
| (byte) 'l', |
| (byte) 'o', |
| (byte) '"'}; |
| StreamTokenizer tokenizer2 = new StreamTokenizer(new ByteArrayInputStream(data2)); |
| tokenizer2.nextToken(); |
| result = tokenizer2.toString(); |
| assertEquals("Token[Hello], line 1", result); |
| } |
| } |