| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You 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 tests.api.java.io; |
| |
| import java.io.ByteArrayInputStream; |
| import java.io.CharArrayReader; |
| import java.io.IOException; |
| import java.io.PipedInputStream; |
| import java.io.PipedOutputStream; |
| import java.io.Reader; |
| import java.io.StreamTokenizer; |
| import java.io.StringBufferInputStream; |
| import java.io.StringReader; |
| |
| import junit.framework.Assert; |
| import tests.support.Support_StringReader; |
| import tests.support.Support_ASimpleInputStream; |
| import dalvik.annotation.TestLevel; |
| import dalvik.annotation.TestTargetClass; |
| import dalvik.annotation.TestTargetNew; |
| import dalvik.annotation.TestTargets; |
| // TODO: most of the assertTrue calls in this test case should be |
| // replaced with assertEquals (possibly two assertEquals) see |
| // test_ConstructorLjava_io_InputStream for example. |
| // This gives much more helpful error messages. |
| |
| @TestTargetClass(StreamTokenizer.class) |
| public class StreamTokenizerTest extends junit.framework.TestCase { |
| Support_StringReader r; |
| |
| StreamTokenizer st; |
| |
| String testString; |
| |
| /** |
| * @tests java.io.StreamTokenizer#StreamTokenizer(java.io.InputStream) |
| */ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "StreamTokenizer", |
| args = {java.io.InputStream.class} |
| ) |
| public void test_ConstructorLjava_io_InputStream() throws IOException { |
| st = new StreamTokenizer(new StringBufferInputStream( |
| "/comments\n d 8 'h'")); |
| |
| assertEquals("the next token returned should be the letter d", |
| StreamTokenizer.TT_WORD, st.nextToken()); |
| assertEquals("the next token returned should be the letter d", |
| "d", st.sval); |
| |
| assertEquals("the next token returned should be the digit 8", |
| StreamTokenizer.TT_NUMBER, st.nextToken()); |
| assertEquals("the next token returned should be the digit 8", |
| 8.0, st.nval); |
| |
| assertEquals("the next token returned should be the quote character", |
| 39, st.nextToken()); |
| assertEquals("the next token returned should be the quote character", |
| "h", st.sval); |
| } |
| |
| /** |
| * @tests java.io.StreamTokenizer#StreamTokenizer(java.io.Reader) |
| */ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "StreamTokenizer", |
| args = {java.io.Reader.class} |
| ) |
| public void test_ConstructorLjava_io_Reader() throws IOException { |
| setTest("/testing\n d 8 'h' "); |
| assertEquals("the next token returned should be the letter d skipping the comments", |
| StreamTokenizer.TT_WORD, st.nextToken()); |
| assertEquals("the next token returned should be the letter d", |
| "d", st.sval); |
| |
| assertEquals("the next token returned should be the digit 8", |
| StreamTokenizer.TT_NUMBER, st.nextToken()); |
| assertEquals("the next token returned should be the digit 8", |
| 8.0, st.nval); |
| |
| assertEquals("the next token returned should be the quote character", |
| 39, st.nextToken()); |
| assertEquals("the next token returned should be the quote character", |
| "h", st.sval); |
| } |
| |
| /** |
| * @tests java.io.StreamTokenizer#commentChar(int) |
| */ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "commentChar", |
| args = {int.class} |
| ) |
| public void test_commentCharI() throws IOException { |
| setTest("*comment \n / 8 'h' "); |
| st.ordinaryChar('/'); |
| st.commentChar('*'); |
| assertEquals("nextToken() did not return the character / skiping the comments starting with *", |
| 47, st.nextToken()); |
| assertTrue("the next token returned should be the digit 8", st |
| .nextToken() == StreamTokenizer.TT_NUMBER |
| && st.nval == 8.0); |
| assertTrue("the next token returned should be the quote character", |
| st.nextToken() == 39 && st.sval.equals("h")); |
| } |
| |
| /** |
| * @tests java.io.StreamTokenizer#eolIsSignificant(boolean) |
| */ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "eolIsSignificant", |
| args = {boolean.class} |
| ) |
| public void test_eolIsSignificantZ() throws IOException { |
| setTest("d 8\n"); |
| // by default end of line characters are not significant |
| assertTrue("nextToken did not return d", |
| st.nextToken() == StreamTokenizer.TT_WORD |
| && st.sval.equals("d")); |
| assertTrue("nextToken did not return 8", |
| st.nextToken() == StreamTokenizer.TT_NUMBER |
| && st.nval == 8.0); |
| assertTrue("nextToken should be the end of file", |
| st.nextToken() == StreamTokenizer.TT_EOF); |
| setTest("d\n"); |
| st.eolIsSignificant(true); |
| // end of line characters are significant |
| assertTrue("nextToken did not return d", |
| st.nextToken() == StreamTokenizer.TT_WORD |
| && st.sval.equals("d")); |
| assertTrue("nextToken is the end of line", |
| st.nextToken() == StreamTokenizer.TT_EOL); |
| } |
| |
| /** |
| * @tests java.io.StreamTokenizer#lineno() |
| */ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "lineno", |
| args = {} |
| ) |
| public void test_lineno() throws IOException { |
| setTest("d\n 8\n"); |
| assertEquals("the lineno should be 1", 1, st.lineno()); |
| st.nextToken(); |
| st.nextToken(); |
| assertEquals("the lineno should be 2", 2, st.lineno()); |
| st.nextToken(); |
| assertEquals("the next line no should be 3", 3, st.lineno()); |
| } |
| |
| /** |
| * @tests java.io.StreamTokenizer#lowerCaseMode(boolean) |
| */ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "lowerCaseMode", |
| args = {boolean.class} |
| ) |
| public void test_lowerCaseModeZ() throws Exception { |
| // SM. |
| setTest("HELLOWORLD"); |
| st.lowerCaseMode(true); |
| |
| st.nextToken(); |
| assertEquals("sval not converted to lowercase.", "helloworld", st.sval |
| ); |
| } |
| |
| /** |
| * @tests java.io.StreamTokenizer#nextToken() |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL_COMPLETE, |
| method = "nextToken", |
| args = {} |
| ) |
| public void test_nextToken() throws IOException { |
| setTest("\r\n/* fje fje 43.4 f \r\n f g */ 456.459 \r\n" |
| + "Hello / \r\n \r\n \n \r \257 Hi \'Hello World\'"); |
| st.ordinaryChar('/'); |
| st.slashStarComments(true); |
| st.nextToken(); |
| assertTrue("Wrong Token type1: " + (char) st.ttype, |
| st.ttype == StreamTokenizer.TT_NUMBER); |
| st.nextToken(); |
| assertTrue("Wrong Token type2: " + st.ttype, |
| st.ttype == StreamTokenizer.TT_WORD); |
| st.nextToken(); |
| assertTrue("Wrong Token type3: " + st.ttype, st.ttype == '/'); |
| st.nextToken(); |
| assertTrue("Wrong Token type4: " + st.ttype, |
| st.ttype == StreamTokenizer.TT_WORD); |
| st.nextToken(); |
| assertTrue("Wrong Token type5: " + st.ttype, |
| st.ttype == StreamTokenizer.TT_WORD); |
| st.nextToken(); |
| assertTrue("Wrong Token type6: " + st.ttype, st.ttype == '\''); |
| assertTrue("Wrong Token type7: " + st.ttype, st.sval |
| .equals("Hello World")); |
| st.nextToken(); |
| assertTrue("Wrong Token type8: " + st.ttype, st.ttype == -1); |
| |
| final PipedInputStream pin = new PipedInputStream(); |
| PipedOutputStream pout = new PipedOutputStream(pin); |
| pout.write("hello\n\r\r".getBytes()); |
| st = new StreamTokenizer(pin); |
| st.eolIsSignificant(true); |
| assertTrue("Wrong token 1,1", |
| st.nextToken() == StreamTokenizer.TT_WORD |
| && st.sval.equals("hello")); |
| assertTrue("Wrong token 1,2", st.nextToken() == '\n'); |
| assertTrue("Wrong token 1,3", st.nextToken() == '\n'); |
| assertTrue("Wrong token 1,4", st.nextToken() == '\n'); |
| pout.close(); |
| assertTrue("Wrong token 1,5", |
| st.nextToken() == StreamTokenizer.TT_EOF); |
| |
| st = new StreamTokenizer(new Support_StringReader("\n \r\n#")); |
| st.ordinaryChar('\n'); // make \n ordinary |
| st.eolIsSignificant(true); |
| assertTrue("Wrong token 2,1", st.nextToken() == '\n'); |
| assertTrue("Wrong token 2,2", st.nextToken() == '\n'); |
| assertEquals("Wrong token 2,3", '#', st.nextToken()); |
| |
| Support_ASimpleInputStream sis = new Support_ASimpleInputStream(); |
| sis.throwExceptionOnNextUse = true; |
| st = new StreamTokenizer(sis); |
| try { |
| st.nextToken(); |
| fail("IOException expected."); |
| } catch (IOException e) { |
| // Expected. |
| } |
| } |
| |
| /** |
| * @tests java.io.StreamTokenizer#ordinaryChar(int) |
| */ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "ordinaryChar", |
| args = {int.class} |
| ) |
| public void test_ordinaryCharI() throws IOException { |
| // SM. |
| setTest("Ffjein 893"); |
| st.ordinaryChar('F'); |
| st.nextToken(); |
| assertTrue("OrdinaryChar failed." + (char) st.ttype, |
| st.ttype == 'F'); |
| } |
| |
| /** |
| * @tests java.io.StreamTokenizer#ordinaryChars(int, int) |
| */ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "ordinaryChars", |
| args = {int.class, int.class} |
| ) |
| public void test_ordinaryCharsII() throws IOException { |
| // SM. |
| setTest("azbc iof z 893"); |
| st.ordinaryChars('a', 'z'); |
| assertEquals("OrdinaryChars failed.", 'a', st.nextToken()); |
| assertEquals("OrdinaryChars failed.", 'z', st.nextToken()); |
| } |
| |
| /** |
| * @tests java.io.StreamTokenizer#parseNumbers() |
| */ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "parseNumbers", |
| args = {} |
| ) |
| public void test_parseNumbers() throws IOException { |
| // SM |
| setTest("9.9 678"); |
| assertTrue("Base behavior failed.", |
| st.nextToken() == StreamTokenizer.TT_NUMBER); |
| st.ordinaryChars('0', '9'); |
| assertEquals("setOrdinary failed.", '6', st.nextToken()); |
| st.parseNumbers(); |
| assertTrue("parseNumbers failed.", |
| st.nextToken() == StreamTokenizer.TT_NUMBER); |
| } |
| |
| /** |
| * @tests java.io.StreamTokenizer#pushBack() |
| */ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "pushBack", |
| args = {} |
| ) |
| public void test_pushBack() throws IOException { |
| // SM. |
| setTest("Hello 897"); |
| st.nextToken(); |
| st.pushBack(); |
| assertTrue("PushBack failed.", |
| st.nextToken() == StreamTokenizer.TT_WORD); |
| } |
| |
| /** |
| * @tests java.io.StreamTokenizer#quoteChar(int) |
| */ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "quoteChar", |
| args = {int.class} |
| ) |
| public void test_quoteCharI() throws IOException { |
| // SM |
| setTest("<Hello World< HelloWorldH"); |
| st.quoteChar('<'); |
| assertEquals("QuoteChar failed.", '<', st.nextToken()); |
| assertEquals("QuoteChar failed.", "Hello World", st.sval); |
| st.quoteChar('H'); |
| st.nextToken(); |
| assertEquals("QuoteChar failed for word.", "elloWorld", st.sval |
| ); |
| } |
| |
| /** |
| * @tests java.io.StreamTokenizer#resetSyntax() |
| */ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "resetSyntax", |
| args = {} |
| ) |
| public void test_resetSyntax() throws IOException { |
| // SM |
| setTest("H 9\' ello World"); |
| st.resetSyntax(); |
| assertTrue("resetSyntax failed1." + (char) st.ttype, |
| st.nextToken() == 'H'); |
| assertTrue("resetSyntax failed1." + (char) st.ttype, |
| st.nextToken() == ' '); |
| assertTrue("resetSyntax failed2." + (char) st.ttype, |
| st.nextToken() == '9'); |
| assertTrue("resetSyntax failed3." + (char) st.ttype, |
| st.nextToken() == '\''); |
| } |
| |
| /** |
| * @tests java.io.StreamTokenizer#slashSlashComments(boolean) |
| */ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "slashSlashComments", |
| args = {boolean.class} |
| ) |
| public void test_slashSlashCommentsZ() throws IOException { |
| // SM. |
| setTest("// foo \r\n /fiji \r\n -456"); |
| st.ordinaryChar('/'); |
| st.slashSlashComments(true); |
| assertEquals("Test failed.", '/', st.nextToken()); |
| assertTrue("Test failed.", |
| st.nextToken() == StreamTokenizer.TT_WORD); |
| } |
| |
| /** |
| * @tests java.io.StreamTokenizer#slashSlashComments(boolean) |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL, |
| notes = "", |
| method = "slashSlashComments", |
| args = {boolean.class} |
| ) |
| public void test_slashSlashComments_withSSOpen() throws IOException { |
| Reader reader = new CharArrayReader( "t // t t t".toCharArray()); |
| |
| StreamTokenizer st = new StreamTokenizer(reader); |
| st.slashSlashComments(true); |
| |
| assertEquals(StreamTokenizer.TT_WORD,st.nextToken()); |
| assertEquals(StreamTokenizer.TT_EOF,st.nextToken()); |
| } |
| |
| /** |
| * @tests java.io.StreamTokenizer#slashSlashComments(boolean) |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL, |
| notes = "", |
| method = "slashSlashComments", |
| args = {boolean.class} |
| ) |
| public void test_slashSlashComments_withSSOpen_NoComment() throws IOException { |
| Reader reader = new CharArrayReader( "// t".toCharArray()); |
| |
| StreamTokenizer st = new StreamTokenizer(reader); |
| st.slashSlashComments(true); |
| st.ordinaryChar('/'); |
| |
| assertEquals(StreamTokenizer.TT_EOF,st.nextToken()); |
| } |
| |
| /** |
| * @tests java.io.StreamTokenizer#slashSlashComments(boolean) |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL, |
| notes = "", |
| method = "slashSlashComments", |
| args = {boolean.class} |
| ) |
| public void test_slashSlashComments_withSSClosed() throws IOException { |
| Reader reader = new CharArrayReader( "// t".toCharArray()); |
| |
| StreamTokenizer st = new StreamTokenizer(reader); |
| st.slashSlashComments(false); |
| st.ordinaryChar('/'); |
| |
| assertEquals('/',st.nextToken()); |
| assertEquals('/',st.nextToken()); |
| assertEquals(StreamTokenizer.TT_WORD,st.nextToken()); |
| } |
| |
| /** |
| * @tests java.io.StreamTokenizer#slashStarComments(boolean) |
| */ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "slashStarComments", |
| args = {boolean.class} |
| ) |
| public void test_slashStarCommentsZ() throws IOException { |
| setTest("/* foo \r\n /fiji \r\n*/ -456"); |
| st.ordinaryChar('/'); |
| st.slashStarComments(true); |
| assertTrue("Test failed.", |
| st.nextToken() == StreamTokenizer.TT_NUMBER); |
| } |
| |
| /** |
| * @tests java.io.StreamTokenizer#slashStarComments(boolean) |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL, |
| notes = "", |
| method = "slashStarComments", |
| args = {boolean.class} |
| ) |
| public void test_slashStarComments_withSTOpen() throws IOException { |
| Reader reader = new CharArrayReader( "t /* t */ t".toCharArray()); |
| |
| StreamTokenizer st = new StreamTokenizer(reader); |
| st.slashStarComments(true); |
| |
| assertEquals(StreamTokenizer.TT_WORD,st.nextToken()); |
| assertEquals(StreamTokenizer.TT_WORD,st.nextToken()); |
| assertEquals(StreamTokenizer.TT_EOF,st.nextToken()); |
| } |
| |
| /** |
| * @tests java.io.StreamTokenizer#slashStarComments(boolean) |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL, |
| notes = "", |
| method = "slashStarComments", |
| args = {boolean.class} |
| ) |
| public void test_slashStarComments_withSTClosed() throws IOException { |
| Reader reader = new CharArrayReader( "t /* t */ t".toCharArray()); |
| |
| StreamTokenizer st = new StreamTokenizer(reader); |
| st.slashStarComments(false); |
| |
| assertEquals(StreamTokenizer.TT_WORD,st.nextToken()); |
| assertEquals(StreamTokenizer.TT_EOF,st.nextToken()); |
| } |
| |
| /** |
| * @tests java.io.StreamTokenizer#toString() |
| */ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "toString", |
| args = {} |
| ) |
| public void test_toString() throws IOException { |
| setTest("ABC Hello World"); |
| st.nextToken(); |
| assertTrue("toString failed." + st.toString(), |
| st.toString().equals( |
| "Token[ABC], line 1")); |
| } |
| |
| /** |
| * @tests java.io.StreamTokenizer#whitespaceChars(int, int) |
| */ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "whitespaceChars", |
| args = {int.class, int.class} |
| ) |
| public void test_whitespaceCharsII() throws IOException { |
| setTest("azbc iof z 893"); |
| st.whitespaceChars('a', 'z'); |
| assertTrue("OrdinaryChar failed.", |
| st.nextToken() == StreamTokenizer.TT_NUMBER); |
| } |
| |
| /** |
| * @tests java.io.StreamTokenizer#wordChars(int, int) |
| */ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "wordChars", |
| args = {int.class, int.class} |
| ) |
| public void test_wordCharsII() throws IOException { |
| setTest("A893 -9B87"); |
| st.wordChars('0', '9'); |
| assertTrue("WordChar failed1.", |
| st.nextToken() == StreamTokenizer.TT_WORD); |
| assertEquals("WordChar failed2.", "A893", st.sval); |
| assertTrue("WordChar failed3.", |
| st.nextToken() == StreamTokenizer.TT_NUMBER); |
| st.nextToken(); |
| assertEquals("WordChar failed4.", "B87", st.sval); |
| |
| setTest(" Hello World"); |
| st.wordChars(' ', ' '); |
| st.nextToken(); |
| assertEquals("WordChars failed for whitespace.", "Hello World", st.sval |
| ); |
| |
| setTest(" Hello World\r\n \'Hello World\' Hello\' World"); |
| st.wordChars(' ', ' '); |
| st.wordChars('\'', '\''); |
| st.nextToken(); |
| assertTrue("WordChars failed for whitespace: " + st.sval, st.sval |
| .equals("Hello World")); |
| st.nextToken(); |
| assertTrue("WordChars failed for quote1: " + st.sval, st.sval |
| .equals("\'Hello World\' Hello\' World")); |
| } |
| |
| private void setTest(String s) { |
| testString = s; |
| r = new Support_StringReader(testString); |
| st = new StreamTokenizer(r); |
| } |
| |
| protected void setUp() { |
| } |
| |
| protected void tearDown() { |
| } |
| |
| @TestTargets({ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL, |
| notes = "General functionality of these methods tested in separate tests.", |
| method = "lineno", |
| args = {} |
| ), |
| @TestTargetNew( |
| level = TestLevel.PARTIAL_COMPLETE, |
| notes = "General functionality of these methods tested in separate tests.", |
| method = "nextToken", |
| args = {} |
| ), |
| @TestTargetNew( |
| level = TestLevel.PARTIAL, |
| notes = "General functionality of these methods tested in separate tests.", |
| method = "toString", |
| args = {} |
| ), |
| @TestTargetNew( |
| level = TestLevel.PARTIAL, |
| notes = "General functionality of these methods tested in separate tests.", |
| method = "commentChar", |
| args = {int.class} |
| ), |
| @TestTargetNew( |
| level = TestLevel.PARTIAL, |
| notes = "General functionality of these methods tested in separate tests.", |
| method = "eolIsSignificant", |
| args = {boolean.class} |
| ), |
| @TestTargetNew( |
| level = TestLevel.PARTIAL, |
| notes = "General functionality of these methods tested in separate tests.", |
| method = "lowerCaseMode", |
| args = {boolean.class} |
| ), |
| @TestTargetNew( |
| level = TestLevel.PARTIAL, |
| notes = "General functionality of these methods tested in separate tests.", |
| method = "ordinaryChar", |
| args = {int.class} |
| ), |
| @TestTargetNew( |
| level = TestLevel.PARTIAL, |
| notes = "General functionality of these methods tested in separate tests.", |
| method = "slashStarComments", |
| args = {boolean.class} |
| ) |
| }) |
| public void test_basicStringTokenizerMethods() |
| { |
| 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); |
| |
| try { |
| Assert.assertTrue(a.lineno() == 1); |
| Assert.assertTrue(a.nextToken() == StreamTokenizer.TT_WORD); |
| Assert.assertTrue(a.toString().equals("Token[Testing], line 1")); |
| Assert.assertTrue(a.nextToken() == StreamTokenizer.TT_NUMBER); |
| Assert.assertTrue(a.toString().equals("Token[n=12345.0], line 1")); |
| Assert.assertTrue(a.nextToken() == StreamTokenizer.TT_WORD); |
| Assert.assertTrue(a.toString().equals("Token[alpha], line 2")); |
| Assert.assertTrue(a.nextToken() == StreamTokenizer.TT_WORD); |
| Assert.assertTrue(a.toString().equals("Token[omega], line 3")); |
| Assert.assertTrue(a.nextToken() == StreamTokenizer.TT_EOF); |
| Assert.assertTrue(a.toString().equals("Token[EOF], line 3")); |
| |
| b.commentChar('u'); |
| b.eolIsSignificant(true); |
| b.lowerCaseMode(true); |
| b.ordinaryChar('y'); |
| b.slashStarComments(true); |
| |
| Assert.assertTrue(b.nextToken() == StreamTokenizer.TT_NUMBER); |
| Assert.assertTrue(b.nval == -3.8); |
| Assert.assertTrue(b.toString().equals("Token[n=-3.8], line 1")); |
| Assert.assertTrue(b.nextToken() == 39); // ' |
| Assert.assertTrue(b.toString().equals("Token[BLIND mice], line 1")); |
| Assert.assertTrue(b.nextToken() == 10); // \n |
| Assert.assertTrue(b.toString().equals("Token[EOL], line 2")); |
| Assert.assertTrue(b.nextToken() == StreamTokenizer.TT_WORD); |
| Assert.assertTrue(b.toString().equals("Token[see], line 2")); |
| Assert.assertTrue(b.nextToken() == StreamTokenizer.TT_WORD); |
| Assert.assertTrue(b.toString().equals("Token[the], line 2")); |
| Assert.assertTrue(b.nextToken() == 121); // y |
| Assert.assertTrue(b.toString().equals("Token['y'], line 2")); |
| Assert.assertTrue(b.nextToken() == StreamTokenizer.TT_WORD); |
| Assert.assertTrue(b.toString().equals("Token[r], line 2")); |
| Assert.assertTrue(b.nextToken() == StreamTokenizer.TT_EOF); |
| Assert.assertTrue(b.toString().equals("Token[EOF], line 2")); |
| } |
| catch (Exception ex){ |
| System.out.println("Exception found in StreamTokenizer"); |
| ex.printStackTrace(); |
| throw new RuntimeException("error in test, see stdout"); |
| } |
| } |
| |
| @TestTargets({ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL_COMPLETE, |
| notes = "", |
| method = "nextToken", |
| args = {} |
| ), |
| @TestTargetNew( |
| level = TestLevel.PARTIAL, |
| notes = "", |
| method = "toString", |
| args = {} |
| ) |
| }) |
| public void test_harmonyRegressionTest() { |
| byte[] data = new byte[] {(byte) '-'}; |
| StreamTokenizer tokenizer = new StreamTokenizer(new ByteArrayInputStream(data)); |
| try { |
| tokenizer.nextToken(); |
| } catch(Exception e) { |
| Assert.fail(e.getMessage()); |
| } |
| String result = tokenizer.toString(); |
| Assert.assertEquals("Token['-'], line 1", result); |
| } |
| |
| @TestTargets({ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL_COMPLETE, |
| notes = "", |
| method = "nextToken", |
| args = {} |
| ), |
| @TestTargetNew( |
| level = TestLevel.PARTIAL, |
| notes = "", |
| method = "toString", |
| args = {} |
| ) |
| }) |
| public void test_harmonyRegressionTest2() { |
| byte[] data = new byte[] {(byte) '"', |
| (byte) 'H', |
| (byte) 'e', |
| (byte) 'l', |
| (byte) 'l', |
| (byte) 'o', |
| (byte) '"'}; |
| StreamTokenizer tokenizer = new StreamTokenizer(new ByteArrayInputStream(data)); |
| try { |
| tokenizer.nextToken(); |
| } catch (Exception e) { |
| e.printStackTrace(); |
| } |
| String result = tokenizer.toString(); |
| Assert.assertEquals("Token[Hello], line 1", result); |
| } |
| } |