1935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson/* 2935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson * Licensed to the Apache Software Foundation (ASF) under one or more 3935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson * contributor license agreements. See the NOTICE file distributed with 4935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson * this work for additional information regarding copyright ownership. 5935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson * The ASF licenses this file to You under the Apache License, Version 2.0 6935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson * (the "License"); you may not use this file except in compliance with 7935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson * the License. You may obtain a copy of the License at 8935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson * 9935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson * http://www.apache.org/licenses/LICENSE-2.0 10935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson * 11935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson * Unless required by applicable law or agreed to in writing, software 12935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson * distributed under the License is distributed on an "AS IS" BASIS, 13935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson * See the License for the specific language governing permissions and 15935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson * limitations under the License. 16935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson */ 17935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 18935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilsonpackage libcore.java.io; 19935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 20935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilsonimport java.io.ByteArrayInputStream; 21935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilsonimport java.io.IOException; 22935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilsonimport java.io.StreamTokenizer; 23935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilsonimport java.io.StringReader; 24935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilsonimport junit.framework.Assert; 25935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilsonimport tests.support.Support_ASimpleInputStream; 26935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilsonimport tests.support.Support_StringReader; 27935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 28935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilsonpublic class OldStreamTokenizerTest extends junit.framework.TestCase { 29935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson StreamTokenizer st; 30935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 31935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson public void test_nextToken() throws IOException { 32935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson st = new StreamTokenizer(new Support_StringReader("\n \r\n#")); 33935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson st.ordinaryChar('\n'); // make \n ordinary 34935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson st.eolIsSignificant(true); 35935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson assertTrue("Wrong token 2,1", st.nextToken() == '\n'); 36935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson assertTrue("Wrong token 2,2", st.nextToken() == '\n'); 37935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson assertEquals("Wrong token 2,3", '#', st.nextToken()); 38935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 39935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson Support_ASimpleInputStream sis = new Support_ASimpleInputStream(); 40935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson sis.throwExceptionOnNextUse = true; 41935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson st = new StreamTokenizer(sis); 42935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson try { 43935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson st.nextToken(); 44935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson fail("IOException expected."); 45935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson } catch (IOException e) { 46935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson // Expected. 47935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson } 48935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson } 49935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 50935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson public void test_basicStringTokenizerMethods() throws IOException { 51935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson String str = "Testing 12345 \n alpha \r\n omega"; 52935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson String strb = "-3.8 'BLIND mice' \r sEe /* how */ they run"; 53935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson StringReader aa = new StringReader(str); 54935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson StringReader ba = new StringReader(strb); 55935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson StreamTokenizer a = new StreamTokenizer(aa); 56935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson StreamTokenizer b = new StreamTokenizer(ba); 57935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 58935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson Assert.assertTrue(a.lineno() == 1); 59935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson Assert.assertTrue(a.nextToken() == StreamTokenizer.TT_WORD); 60935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson Assert.assertTrue(a.toString().equals("Token[Testing], line 1")); 61935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson Assert.assertTrue(a.nextToken() == StreamTokenizer.TT_NUMBER); 62935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson Assert.assertTrue(a.toString().equals("Token[n=12345.0], line 1")); 63935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson Assert.assertTrue(a.nextToken() == StreamTokenizer.TT_WORD); 64935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson Assert.assertTrue(a.toString().equals("Token[alpha], line 2")); 65935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson Assert.assertTrue(a.nextToken() == StreamTokenizer.TT_WORD); 66935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson Assert.assertTrue(a.toString().equals("Token[omega], line 3")); 67935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson Assert.assertTrue(a.nextToken() == StreamTokenizer.TT_EOF); 68935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson Assert.assertTrue(a.toString().equals("Token[EOF], line 3")); 69935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 70935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson b.commentChar('u'); 71935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson b.eolIsSignificant(true); 72935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson b.lowerCaseMode(true); 73935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson b.ordinaryChar('y'); 74935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson b.slashStarComments(true); 75935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 76935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson Assert.assertTrue(b.nextToken() == StreamTokenizer.TT_NUMBER); 77935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson Assert.assertTrue(b.nval == -3.8); 78935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson Assert.assertTrue(b.toString().equals("Token[n=-3.8], line 1")); 79935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson Assert.assertTrue(b.nextToken() == 39); // ' 80935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson Assert.assertTrue(b.toString().equals("Token[BLIND mice], line 1")); 81935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson Assert.assertTrue(b.nextToken() == 10); // \n 82935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson Assert.assertTrue(b.toString().equals("Token[EOL], line 2")); 83935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson Assert.assertTrue(b.nextToken() == StreamTokenizer.TT_WORD); 84935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson Assert.assertTrue(b.toString().equals("Token[see], line 2")); 85935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson Assert.assertTrue(b.nextToken() == StreamTokenizer.TT_WORD); 86935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson Assert.assertTrue(b.toString().equals("Token[the], line 2")); 87935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson Assert.assertTrue(b.nextToken() == 121); // y 88935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson Assert.assertTrue(b.toString().equals("Token['y'], line 2")); 89935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson Assert.assertTrue(b.nextToken() == StreamTokenizer.TT_WORD); 90935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson Assert.assertTrue(b.toString().equals("Token[r], line 2")); 91935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson Assert.assertTrue(b.nextToken() == StreamTokenizer.TT_EOF); 92935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson Assert.assertTrue(b.toString().equals("Token[EOF], line 2")); 93935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson } 94935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 95935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson public void test_harmonyRegressionTest() { 96935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson byte[] data = new byte[] {(byte) '-'}; 97935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson StreamTokenizer tokenizer = new StreamTokenizer(new ByteArrayInputStream(data)); 98935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson try { 99935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson tokenizer.nextToken(); 100935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson } catch(Exception e) { 101935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson Assert.fail(e.getMessage()); 102935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson } 103935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson String result = tokenizer.toString(); 104935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson Assert.assertEquals("Token['-'], line 1", result); 105935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson } 106935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson 107935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson public void test_harmonyRegressionTest2() { 108935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson byte[] data = new byte[] {(byte) '"', 109935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson (byte) 'H', 110935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson (byte) 'e', 111935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson (byte) 'l', 112935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson (byte) 'l', 113935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson (byte) 'o', 114935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson (byte) '"'}; 115935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson StreamTokenizer tokenizer = new StreamTokenizer(new ByteArrayInputStream(data)); 116935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson try { 117935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson tokenizer.nextToken(); 118935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson } catch (Exception e) { 119935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson e.printStackTrace(); 120935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson } 121935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson String result = tokenizer.toString(); 122935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson Assert.assertEquals("Token[Hello], line 1", result); 123935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson } 124935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson} 125