1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/* Licensed to the Apache Software Foundation (ASF) under one or more 2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * contributor license agreements. See the NOTICE file distributed with 3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * this work for additional information regarding copyright ownership. 4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * (the "License"); you may not use this file except in compliance with 6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the License. You may obtain a copy of the License at 7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Unless required by applicable law or agreed to in writing, software 11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * See the License for the specific language governing permissions and 14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * limitations under the License. 15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.luni.tests.java.util; 17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.Closeable; 19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.EOFException; 20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.File; 21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.FileInputStream; 22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.FileNotFoundException; 23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.FileOutputStream; 24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.IOException; 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.InputStream; 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.OutputStream; 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.PipedInputStream; 28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.PipedOutputStream; 29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.StringReader; 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.math.BigDecimal; 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.math.BigInteger; 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.InetSocketAddress; 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.ServerSocket; 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.Socket; 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.SocketAddress; 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.nio.CharBuffer; 37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.nio.channels.FileChannel; 38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.nio.channels.ReadableByteChannel; 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.nio.channels.SocketChannel; 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.nio.charset.Charset; 41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.ArrayList; 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Arrays; 43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.InputMismatchException; 44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.List; 45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Locale; 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.NoSuchElementException; 47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Scanner; 48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.regex.MatchResult; 49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.regex.Pattern; 50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase; 52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class ScannerTest extends TestCase { 54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private Scanner s; 56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private ServerSocket server; 58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private SocketAddress address; 60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private SocketChannel client; 62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private Socket serverSocket; 64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private OutputStream os; 66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static class MockCloseable implements Closeable, Readable { 68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void close() throws IOException { 70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw new IOException(); 71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public int read(CharBuffer cb) throws IOException { 74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw new EOFException(); 75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#Scanner(File) 81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_ConstructorLjava_io_File() throws IOException { 83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes File tmpFile = File.createTempFile("TestFileForScanner", ".tmp"); 84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(tmpFile); 85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(s); 86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.close(); 87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(tmpFile.delete()); 88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(tmpFile); 91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw FileNotFoundException"); 92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (FileNotFoundException e) { 93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes tmpFile = File.createTempFile("TestFileForScanner", ".tmp"); 97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes FileOutputStream fos = new FileOutputStream(tmpFile); 98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fos.write("test".getBytes()); 99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(tmpFile); 101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes tmpFile.delete(); 102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Scanner(File = null) 104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner((File) null); 106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NullPointerException"); 107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // TODO: test if the default charset is used. 112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#Scanner(File, String) 116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_ConstructorLjava_io_FileLjava_lang_String() 118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws IOException { 119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes File tmpFile = File.createTempFile("TestFileForScanner", ".tmp"); 120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(tmpFile, Charset.defaultCharset().name()); 121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(s); 122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.close(); 123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(tmpFile.delete()); 124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(tmpFile, Charset.defaultCharset().name()); 127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw FileNotFoundException"); 128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (FileNotFoundException e) { 129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(tmpFile, null); 134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw FileNotFoundException"); 135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (FileNotFoundException e) { 136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes tmpFile = File.createTempFile("TestFileForScanner", ".tmp"); 140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(tmpFile, "invalid charset"); 142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw IllegalArgumentException"); 143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //fail on RI. File is opened but not closed when exception is thrown on 148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // RI. 149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(tmpFile.delete()); 150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Scanner(File = null, Charset = null) 152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner((File) null, null); 154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NullPointerException"); 155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Scanner(File = null, Charset = UTF-8) 160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner((File) null, "UTF-8"); 162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NullPointerException"); 163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Scanner(File = null, Charset = invalid) 168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner((File) null, "invalid"); 170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NullPointerException"); 171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Scanner(File, Charset = null) 176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes File f = File.createTempFile("test", ".tmp"); 178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(f, null); 179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw IllegalArgumentException"); 180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // TODO: test if the specified charset is used. 185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#Scanner(InputStream) 189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_ConstructorLjava_io_InputStream() { 191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(new PipedInputStream()); 192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(s); 193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.close(); 194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Scanner(InputStream) 196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner((InputStream) null); 198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NullPointerException"); 199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // TODO: test if the default charset is used. 204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#Scanner(InputStream, String) 208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_ConstructorLjava_io_InputStreamLjava_lang_String() { 210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(new PipedInputStream(), Charset.defaultCharset().name()); 211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(s); 212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.close(); 213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner((PipedInputStream) null, "invalid charset"); 216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw NullPointerException"); 217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(new PipedInputStream(), null); 223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw NullPointerException"); 224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(new PipedInputStream(), "invalid charset"); 230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw IllegalArgumentException"); 231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // TODO: test if the specified charset is used. 236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#Scanner(Readable) 240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_ConstructorLjava_lang_Readable() { 242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(new StringReader("test string")); 243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(s); 244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.close(); 245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Scanner(Readable) 247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner((Readable) null); 249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NullPointerException"); 250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#Scanner(ReadableByteChannel) 257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_ConstructorLjava_nio_channels_ReadableByteChannel() 259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws IOException { 260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes File tmpFile = File.createTempFile("TestFileForScanner", ".tmp"); 261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes FileChannel fc = new FileOutputStream(tmpFile).getChannel(); 262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(fc); 263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(s); 264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.close(); 265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(tmpFile.delete()); 266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Scanner(ReadableByteChannel) 268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner((ReadableByteChannel) null); 270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NullPointerException"); 271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test if the default charset is used. 276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String sampleData = "1 2 3 4 5 6 7 8 9 10"; 277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes File tempFile = File.createTempFile("harmony", "test"); 278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes tempFile.deleteOnExit(); 279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes FileOutputStream os = new FileOutputStream(tempFile); 280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes os.write(sampleData.getBytes()); 281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes os.close(); 282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes FileInputStream is = new FileInputStream(tempFile); 284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes FileChannel channel = is.getChannel(); 285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Scanner s = new Scanner(channel); 287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int count = 0; 288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (s.hasNextInt()) { 289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextInt(); 290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes count++; 291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes channel.close(); 293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(10, count); 294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#Scanner(ReadableByteChannel, String) 298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_ConstructorLjava_nio_channels_ReadableByteChannelLjava_lang_String() 300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws IOException { 301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes File tmpFile = File.createTempFile("TestFileForScanner", ".tmp"); 302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes FileChannel fc = new FileOutputStream(tmpFile).getChannel(); 303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(fc, Charset.defaultCharset().name()); 304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(s); 305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.close(); 306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fc = new FileOutputStream(tmpFile).getChannel(); 308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(fc, "invalid charset"); 310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw IllegalArgumentException"); 311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fc.close(); 315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(tmpFile.delete()); 316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Scanner(ReadableByteChannel = null, Charset = null) 318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner((ReadableByteChannel) null, null); 320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NullPointerException"); 321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Scanner(ReadableByteChannel = null, Charset = invalid) 326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner((ReadableByteChannel) null, "invalid"); 328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NullPointerException"); 329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Scanner(ReadableByteChannel, Charset = null) 334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(fc, null); 336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw IllegalArgumentException"); 337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // TODO: test if the specified charset is used. 341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#Scanner(String) 345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_ConstructorLjava_lang_String() { 347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("test string"); 348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(s); 349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.close(); 350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Scanner(String) 352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner((String) null); 354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NullPointerException"); 355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#close() 362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_close() throws IOException { 364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes File tmpFile = File.createTempFile("TestFileForScanner", ".tmp"); 365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes FileOutputStream fos = new FileOutputStream(tmpFile); 366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes FileChannel fc = fos.getChannel(); 367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(fc); 368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Write out a int before the scanner is closed, should be OK. 370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fos.write(12); 371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.close(); 373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(fc.isOpen()); 374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Write out a int after the scanner is closed, IOException should be 376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // thrown out. 377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fos.write(12); 379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw IOException"); 380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.close(); // no exception should be thrown 385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(tmpFile.delete()); 386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#ioException() 390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_ioException() throws IOException { 392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockCloseable mc = new MockCloseable(); 393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(mc); 394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(s.ioException()); // No operation, no exception 395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.close(); // IOException should be cached 397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(s.ioException()); 398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.ioException() instanceof IOException); 399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#delimiter() 403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_delimiter() { 405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("test"); 406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Pattern pattern = s.delimiter(); 407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("\\p{javaWhitespace}+", pattern.toString()); 408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#useDelimiter(Pattern) 412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_useDelimiter_LPattern() { 414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("test"); 415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useDelimiter(Pattern.compile("\\w+")); 416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("\\w+", s.delimiter().toString()); 417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("test"); 419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useDelimiter((Pattern) null); 420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(s.delimiter()); 421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#useDelimiter(String) 425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_useDelimiter_String() { 427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("test"); 428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useDelimiter((String) null); 430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NullPointerException"); 431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("test"); 436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useDelimiter("\\w+"); 437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("\\w+", s.delimiter().toString()); 438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#locale() 442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_locale() { 444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("test"); 445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(Locale.getDefault(), s.locale()); 446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#useLocale(Locale) 450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_useLocale_LLocale() { 452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("test"); 453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(null); 455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NullPointerException"); 456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("test", "test")); 461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new Locale("test", "test"), s.locale()); 462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#radix() 466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_radix() { 468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("test"); 469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(10, s.radix()); 470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#useRadix() 474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_useRadix_I() { 476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("test"); 477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useRadix(Character.MIN_RADIX - 1); 479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw IllegalArgumentException"); 480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useRadix(Character.MAX_RADIX + 1); 485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw IllegalArgumentException"); 486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useRadix(11); 490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(11, s.radix()); 491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#remove() 495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_remove() { 497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("aab*b*").useDelimiter("\\*"); 498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.remove(); 500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw UnsupportedOperationException"); 501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (UnsupportedOperationException e) { 502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //Expected 503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#match() 508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_match() { 510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MatchResult result ; 511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("1 2 "); 512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.match(); 514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw IllegalStateException"); 515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalStateException e) { 516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("1", s.next()); 519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("2", s.next()); 520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.match(); 521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(2, result.start()); 522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3, result.end()); 523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(2, result.start(0)); 524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3, result.end(0)); 525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("2", result.group()); 526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("2", result.group(0)); 527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, result.groupCount()); 528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result.start(1); 530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw IndexOutOfBoundsException"); 531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IndexOutOfBoundsException e) { 532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.next(); 536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw NoSuchElementException"); 537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.match(); 542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw IllegalStateException"); 543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalStateException e) { 544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("True faLse"); 548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.match(); 550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw IllegalStateException"); 551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalStateException e) { 552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.nextBoolean()); 555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.match(); 556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, result.start()); 557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(4, result.end()); 558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, result.start(0)); 559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(4, result.end(0)); 560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("True", result.group()); 561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, result.groupCount()); 562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.nextBoolean()); 563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextBoolean(); 565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw NoSuchElementException"); 566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.match(); 571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw IllegalStateException"); 572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalStateException e) { 573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("True faLse"); 577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.nextBoolean()); 578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.match(); 579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, result.start()); 580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(4, result.end()); 581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, result.start(0)); 582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(4, result.end(0)); 583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("True", result.group()); 584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, result.groupCount()); 585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.close(); 586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextBoolean(); 588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw IllegalStateException"); 589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalStateException e) { 590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.match(); 593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, result.start()); 594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(4, result.end()); 595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, result.start(0)); 596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(4, result.end(0)); 597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("True", result.group()); 598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, result.groupCount()); 599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("True fase"); 601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.nextBoolean()); 602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, result.groupCount()); 603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextBoolean(); 605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.match(); 611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw IllegalStateException"); 612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalStateException e) { 613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("True fase"); 617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.nextBoolean()); 618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.next((Pattern)null); 620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NullPointerException"); 621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.match(); 625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, result.start()); 626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(4, result.end()); 627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, result.start(0)); 628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(4, result.end(0)); 629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("True", result.group()); 630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, result.groupCount()); 631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#next() 637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_next() throws IOException { 639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // use special delimiter 640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("1**2").useDelimiter("\\*"); 641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("1", s.next()); 642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("", s.next()); 643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("2", s.next()); 644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(" \t 1 \t 2").useDelimiter("\\s*"); 646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("1", s.next()); 647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("2", s.next()); 648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.next(); 650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw NoSuchElementException"); 651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("a").useDelimiter("a?"); 656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.next(); 658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw NoSuchElementException"); 659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("aa").useDelimiter("a?"); 664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("", s.next()); 665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.next(); 667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw NoSuchElementException"); 668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("word( )test( )").useDelimiter("\\( \\)"); 674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("word", s.next()); 675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("test", s.next()); 676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("? next ").useDelimiter("( )"); 678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("?", s.next()); 679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("next", s.next()); 680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("", s.next()); 681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("word1 word2 "); 683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("word1", s.next()); 684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("word2", s.next()); 685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // test boundary case 686561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.next(); 688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw NoSuchElementException"); 689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // just delimiter exists in this scanner 694561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(" "); 695561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 696561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.next(); 697561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NoSuchElementException"); 698561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 699561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 700561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 701561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 702561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // nothing exists in this scanner 703561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(""); 704561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 705561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.next(); 706561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NoSuchElementException"); 707561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 708561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 709561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 710561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 711561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // no delimiter exists in this scanner 712561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("test"); 713561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("test", s.next()); 714561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 715561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // input resourse starts with delimiter 716561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(" test"); 717561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("test", s.next()); 718561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 719561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // input resource ends with delimiter 720561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(" test "); 721561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("test", s.next()); 722561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 723561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Harmony uses 1024 as default buffer size, 724561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // What if a sentence can not be read in all in once. 725561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes StringBuilder longSentence = new StringBuilder(1025); 726561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < 11; i++) { 727561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes longSentence.append(" "); 728561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 729561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 11; i < 1026; i++) { 730561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes longSentence.append("a"); 731561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 732561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(longSentence.toString()); 733561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(longSentence.toString().trim(), s.next()); 734561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 735561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(" test test"); 736561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("test", s.next()); 737561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("test", s.next()); 738561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 739561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // What if use a delimiter of length 0. 740561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("test\ntest").useDelimiter(Pattern.compile("^", 741561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Pattern.MULTILINE)); 742561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("test\n", s.next()); 743561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("test", s.next()); 744561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 745561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("").useDelimiter(Pattern.compile("^", 746561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Pattern.MULTILINE)); 747561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 748561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.next(); 749561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw NoSuchElementException"); 750561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 751561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 752561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 753561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 754561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("").useDelimiter(Pattern.compile("^*", 755561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Pattern.MULTILINE)); 756561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 757561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.next(); 758561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw NoSuchElementException"); 759561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 760561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 761561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 762561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 763561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("test\ntest").useDelimiter(Pattern.compile("^*", 764561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Pattern.MULTILINE)); 765561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("t", s.next()); 766561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("e", s.next()); 767561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 768561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("\ntest\ntest").useDelimiter(Pattern.compile("$", 769561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Pattern.MULTILINE)); 770561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("\ntest", s.next()); 771561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("\ntest", s.next()); 772561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 773561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // test socket inputStream 774561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Harmony uses 1024 as default buffer size, 775561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // what if the leading delimiter is larger than 1023 776561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < 1024; i++) { 777561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes os.write(" ".getBytes()); 778561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 779561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes os.write(" 1 2 ".getBytes()); 780561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(client); 781561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("1", s.next()); 782561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("2", s.next()); 783561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes os.write(" 1 2".getBytes()); 784561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes serverSocket.close(); 785561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("1", s.next()); 786561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("2", s.next()); 787561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 788561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.next(); 789561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw NoSuchElementException"); 790561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 791561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 792561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 793561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 794561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 795561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 796561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 797561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 798561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#next(Pattern) 799561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 800561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_nextLPattern() throws IOException { 801561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Pattern pattern; 802561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("aab*2*").useDelimiter("\\*"); 803561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes pattern = Pattern.compile("a*b"); 804561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("aab", s.next(pattern)); 805561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 806561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.next(pattern); 807561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw InputMismatchException"); 808561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 809561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 810561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 811561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 812561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("word ? "); 813561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes pattern = Pattern.compile("\\w+"); 814561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("word", s.next(pattern)); 815561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 816561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.next(pattern); 817561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw InputMismatchException"); 818561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 819561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 820561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 821561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 822561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("word1 word2 "); 823561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes pattern = Pattern.compile("\\w+"); 824561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("word1", s.next(pattern)); 825561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("word2", s.next(pattern)); 826561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // test boundary case 827561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 828561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.next(pattern); 829561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw NoSuchElementException"); 830561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 831561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 832561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 833561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 834561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // test socket inputStream 835561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 836561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes os.write("aab 2".getBytes()); 837561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes serverSocket.close(); 838561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 839561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(client); 840561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes pattern = Pattern.compile("a*b"); 841561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("aab", s.next(pattern)); 842561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 843561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.next(pattern); 844561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw InputMismatchException"); 845561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 846561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 847561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 848561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 849561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 850561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 851561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 852561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#next(String) 853561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 854561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_nextLString() throws IOException { 855561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("b*a*").useDelimiter("\\*"); 856561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("b", s.next("a*b")); 857561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 858561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.next("a*b"); 859561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw InputMismatchException"); 860561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 861561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 862561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 863561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 864561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("word ? "); 865561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("word", s.next("\\w+")); 866561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 867561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.next("\\w+"); 868561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw InputMismatchException"); 869561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 870561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 871561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 872561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 873561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("word1 next "); 874561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("word1", s.next("\\w+")); 875561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("next", s.next("\\w+")); 876561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // test boundary case 877561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 878561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.next("\\w+"); 879561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw NoSuchElementException"); 880561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 881561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 882561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 883561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 884561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // test socket inputStream 885561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes os.write("aab 2".getBytes()); 886561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes serverSocket.close(); 887561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 888561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(client); 889561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("aab", s.next("a*b")); 890561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 891561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.next("a*b"); 892561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw InputMismatchException"); 893561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 894561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 895561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 896561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 897561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 898561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 899561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 900561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#nextBoolean() 901561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 902561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_nextBoolean() throws IOException { 903561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // case insensitive 904561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("TRue"); 905561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.nextBoolean()); 906561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 907561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("tRue false"); 908561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.nextBoolean()); 909561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.nextBoolean()); 910561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 911561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextBoolean(); 912561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NoSuchElementException"); 913561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 914561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 915561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 916561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 917561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("true1"); 918561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 919561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextBoolean(); 920561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 921561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 922561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 923561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 924561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 925561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 926561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(""); 927561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextBoolean(); 928561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NoSuchElementException"); 929561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 930561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 931561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 932561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 933561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // test socket inputStream 934561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes os.write("true false".getBytes()); 935561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes serverSocket.close(); 936561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 937561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(client); 938561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.nextBoolean()); 939561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.nextBoolean()); 940561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 941561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // ues '*' as delimiter 942561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("true**false").useDelimiter("\\*"); 943561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.nextBoolean()); 944561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 945561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextBoolean(); 946561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw NoSuchElementException"); 947561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 948561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 949561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 950561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 951561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("false( )").useDelimiter("\\( \\)"); 952561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.nextBoolean()); 953561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 954561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 955561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 956561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 957561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 958561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#nextInt(int) 959561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 960561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_nextIntI() throws IOException { 961561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 456"); 962561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(123, s.nextInt(10)); 963561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(456, s.nextInt(10)); 964561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 965561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextInt(10); 966561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NoSuchElementException"); 967561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 968561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 969561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 970561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 971561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If the radix is different from 10 972561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 456"); 973561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(38, s.nextInt(5)); 974561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 975561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextInt(5); 976561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 977561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 978561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 979561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 980561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 981561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If the number is out of range 982561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123456789123456789123456789123456789"); 983561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 984561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextInt(10); 985561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 986561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 987561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 988561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 989561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 990561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 991561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Different locale can only recognize corresponding locale sensitive 992561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * string. ',' is used in many locales as group separator. 993561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 994561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23,456 23,456"); 995561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 996561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 997561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextInt(10); 998561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 999561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 1000561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 1001561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1002561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 1003561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If exception is thrown out, input will not be advanced. 1004561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextInt(10)); 1005561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextInt(10)); 1006561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1007561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1008561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * ''' is used in many locales as group separator. 1009561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1010561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23'456 23'456"); 1011561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 1012561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1013561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextInt(10); 1014561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 1015561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 1016561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 1017561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1018561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("it", "CH")); 1019561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If exception is thrown out, input will not be advanced. 1020561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextInt(10)); 1021561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextInt(10)); 1022561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1023561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1024561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The input string has Arabic-Indic digits. 1025561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1026561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("1\u06602 1\u06662"); 1027561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(102, s.nextInt(10)); 1028561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1029561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextInt(5); 1030561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 1031561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 1032561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1033561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1034561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(162, s.nextInt(10)); 1035561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1036561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1037561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * '.' is used in many locales as group separator. The input string 1038561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * has Arabic-Indic digits . 1039561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1040561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23.45\u0666 23.456"); 1041561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 1042561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1043561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextInt(10); 1044561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 1045561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 1046561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 1047561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1048561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 1049561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If exception is thrown out, input will not be advanced. 1050561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextInt(10)); 1051561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextInt(10)); 1052561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1053561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The input string starts with zero 1054561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("03,456"); 1055561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 1056561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1057561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextInt(10); 1058561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 1059561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 1060561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 1061561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1062561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1063561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("03456"); 1064561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3456, s.nextInt(10)); 1065561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1066561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("\u06603,456"); 1067561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 1068561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3456, s.nextInt(10)); 1069561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1070561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("E3456"); 1071561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(930902, s.nextInt(16)); 1072561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The following test case fails on RI, because RI does not support 1073561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // letter as leading digit 1074561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("E3,456"); 1075561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 1076561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(930902, s.nextInt(16)); 1077561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1078561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1079561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * There are 3 types of zero digit in all locales, '0' '\u0966' '\u0e50' 1080561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * respectively, but they are not differentiated. 1081561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1082561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("12300"); 1083561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 1084561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(12300, s.nextInt(10)); 1085561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1086561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123\u0966\u0966"); 1087561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 1088561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(12300, s.nextInt(10)); 1089561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1090561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123\u0e50\u0e50"); 1091561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 1092561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(12300, s.nextInt(10)); 1093561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1094561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1095561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * There are three types of negative prefix all in all. '' '-' '(' There 1096561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * are three types of negative suffix all in all. '' '-' ')' '(' and ')' 1097561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * must be used togethor. Prefix '-' and suffix '-' must be used 1098561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * exclusively. 1099561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * According to Integer regular expression: Integer :: = ( [-+]? (* 1103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Numeral ) ) | LocalPositivePrefix Numeral LocalPositiveSuffix | 1104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * LocalNegativePrefix Numeral LocalNegativeSuffix 123- should be 1105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * recognized by scanner with locale ar_AE, (123) shouble be recognized 1106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * by scanner with locale mk_MK. But this is not the case on RI. 1107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123 123- -123-"); 1109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("ar", "AE")); 1110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-123, s.nextInt(10)); 1111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The following test case fails on RI 1112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-123, s.nextInt(10)); 1113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextInt(10); 1115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 1116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 1117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 1118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123 123-"); 1121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("mk", "MK")); 1122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-123, s.nextInt(10)); 1123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextInt(); 1125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 1126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 1127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 1128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Skip the un-recognizable token 123-. 1130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("123-", s.next()); 1131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If the parameter radix is illegal, the following test cases fail on 1133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // RI 1134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextInt(Character.MIN_RADIX - 1); 1136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw IllegalArgumentException"); 1137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 1138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextInt(Character.MAX_RADIX + 1); 1142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw IllegalArgumentException"); 1143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 1144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 1150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#nextInt() 1151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_nextInt() throws IOException { 1153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 456"); 1154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(123, s.nextInt()); 1155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(456, s.nextInt()); 1156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextInt(); 1158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NoSuchElementException"); 1159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 1160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If the radix is different from 10 1164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 456"); 1165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useRadix(5); 1166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(38, s.nextInt()); 1167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextInt(); 1169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 1170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 1171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If the number is out of range 1175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123456789123456789123456789123456789"); 1176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextInt(); 1178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 1179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 1180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Different locale can only recognize corresponding locale sensitive 1185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * string. ',' is used in many locales as group separator. 1186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23,456 23,456"); 1188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 1189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextInt(); 1191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 1192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 1193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 1194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 1196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If exception is thrown out, input will not be advanced. 1197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextInt()); 1198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextInt()); 1199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * ''' is used in many locales as group separator. 1202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23'456 23'456"); 1204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 1205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextInt(); 1207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 1208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 1209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 1210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("it", "CH")); 1212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If exception is thrown out, input will not be advanced. 1213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextInt()); 1214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextInt()); 1215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The input string has Arabic-Indic digits. 1218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("1\u06602 1\u06662"); 1220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(102, s.nextInt()); 1221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useRadix(5); 1222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextInt(); 1224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 1225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 1226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useRadix(10); 1229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(162, s.nextInt()); 1230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * '.' is used in many locales as group separator. The input string 1233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * has Arabic-Indic digits . 1234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23.45\u0666 23.456"); 1236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 1237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextInt(); 1239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 1240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 1241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 1242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 1244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If exception is thrown out, input will not be advanced. 1245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextInt()); 1246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextInt()); 1247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The input string starts with zero 1249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("03,456"); 1250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 1251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextInt(); 1253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 1254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 1255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 1256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("03456"); 1259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3456, s.nextInt()); 1260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("\u06603,456"); 1262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 1263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3456, s.nextInt()); 1264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("E3456"); 1266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useRadix(16); 1267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(930902, s.nextInt()); 1268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The following test case fails on RI, because RI does not support 1270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // letter as leading digit 1271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("E3,456"); 1272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 1273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useRadix(16); 1274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(930902, s.nextInt()); 1275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * There are 3 types of zero digit in all locales, '0' '\u0966' '\u0e50' 1278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * respectively, but they are not differentiated. 1279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("12300"); 1281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 1282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(12300, s.nextInt()); 1283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123\u0966\u0966"); 1285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 1286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(12300, s.nextInt()); 1287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123\u0e50\u0e50"); 1289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 1290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(12300, s.nextInt()); 1291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * There are three types of negative prefix all in all. '' '-' '(' There 1294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * are three types of negative suffix all in all. '' '-' ')' '(' and ')' 1295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * must be used togethor. Prefix '-' and suffix '-' must be used 1296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * exclusively. 1297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * According to Integer regular expression: Integer :: = ( [-+]? (* 1301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Numeral ) ) | LocalPositivePrefix Numeral LocalPositiveSuffix | 1302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * LocalNegativePrefix Numeral LocalNegativeSuffix 123- should be 1303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * recognized by scanner with locale ar_AE, (123) shouble be recognized 1304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * by scanner with locale mk_MK. But this is not the case on RI. 1305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123 123- -123-"); 1307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("ar", "AE")); 1308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-123, s.nextInt()); 1309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The following test case fails on RI 1310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-123, s.nextInt()); 1311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextInt(); 1313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 1314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 1315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 1316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123 123-"); 1319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("mk", "MK")); 1320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-123, s.nextInt()); 1321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextInt(); 1323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 1324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 1325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 1326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Skip the un-recognizable token 123-. 1328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("123-", s.next()); 1329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 1333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#nextByte(int) 1334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_nextByteI() throws IOException { 1336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 126"); 1337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(123, s.nextByte(10)); 1338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(126, s.nextByte(10)); 1339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextByte(10); 1341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NoSuchElementException"); 1342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 1343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If the radix is different from 10 1347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 126"); 1348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(38, s.nextByte(5)); 1349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextByte(5); 1351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 1352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 1353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If the number is out of range 1357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("1234"); 1358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextByte(10); 1360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 1361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 1362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The input string has Arabic-Indic digits. 1367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("1\u06602 12\u0666"); 1369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(102, s.nextByte(10)); 1370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextByte(5); 1372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 1373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 1374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(126, s.nextByte(10)); 1377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("012"); 1379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(12, s.nextByte(10)); 1380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("E"); 1382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(14, s.nextByte(16)); 1383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * There are 3 types of zero digit in all locales, '0' '\u0966' '\u0e50' 1386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * respectively, but they are not differentiated. 1387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("100"); 1389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 1390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(100, s.nextByte(10)); 1391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("1\u0966\u0966"); 1393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 1394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(100, s.nextByte(10)); 1395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("1\u0e50\u0e50"); 1397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 1398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(100, s.nextByte(10)); 1399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123"); 1401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("ar", "AE")); 1402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-123, s.nextByte(10)); 1403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123"); 1406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("mk", "MK")); 1407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-123, s.nextByte(10)); 1408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 1412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#nextByte() 1413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_nextByte() throws IOException { 1415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 126"); 1416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(123, s.nextByte()); 1417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(126, s.nextByte()); 1418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextByte(); 1420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NoSuchElementException"); 1421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 1422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If the radix is different from 10 1426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 126"); 1427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useRadix(5); 1428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(38, s.nextByte()); 1429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextByte(); 1431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 1432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 1433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If the number is out of range 1437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("1234"); 1438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextByte(); 1440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 1441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 1442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The input string has Arabic-Indic digits. 1447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("1\u06602 12\u0666"); 1449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(102, s.nextByte()); 1450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useRadix(5); 1451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextByte(); 1453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 1454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 1455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useRadix(10); 1458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(126, s.nextByte()); 1459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("012"); 1461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(12, s.nextByte()); 1462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("E"); 1464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useRadix(16); 1465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(14, s.nextByte()); 1466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * There are 3 types of zero digit in all locales, '0' '\u0966' '\u0e50' 1469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * respectively, but they are not differentiated. 1470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("100"); 1472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 1473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(100, s.nextByte()); 1474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("1\u0966\u0966"); 1476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 1477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(100, s.nextByte()); 1478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("1\u0e50\u0e50"); 1480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 1481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(100, s.nextByte()); 1482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123"); 1484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("ar", "AE")); 1485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-123, s.nextByte()); 1486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123"); 1488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("mk", "MK")); 1489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-123, s.nextByte()); 1490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 1494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#nextFloat() 1495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_nextFloat() throws IOException { 1497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 45\u0666. 123.4 .123 "); 1498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 1499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals((float)123.0, s.nextFloat()); 1500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals((float)456.0, s.nextFloat()); 1501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals((float)123.4, s.nextFloat()); 1502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals((float)0.123, s.nextFloat()); 1503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextFloat(); 1505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NoSuchElementException"); 1506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 1507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("+123.4 -456.7 123,456.789 0.1\u06623,4"); 1511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 1512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals((float)123.4, s.nextFloat()); 1513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals((float)-456.7, s.nextFloat()); 1514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals((float)123456.789, s.nextFloat()); 1515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextFloat(); 1517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 1518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 1519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Scientific notation 1523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("+123.4E10 -456.7e+12 123,456.789E-10"); 1524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 1525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals((float)1.234E12, s.nextFloat()); 1526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals((float)-4.567E14, s.nextFloat()); 1527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals((float)1.23456789E-5, s.nextFloat()); 1528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("NaN Infinity -Infinity"); 1530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(Float.NaN, s.nextFloat()); 1531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(Float.POSITIVE_INFINITY, s.nextFloat()); 1532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(Float.NEGATIVE_INFINITY, s.nextFloat()); 1533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String str=String.valueOf(Float.MAX_VALUE*2); 1535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s=new Scanner(str); 1536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(Float.POSITIVE_INFINITY,s.nextFloat()); 1537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Different locale can only recognize corresponding locale sensitive 1540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * string. ',' is used in many locales as group separator. 1541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23,456 23,456"); 1543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 1544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals((float)23456.0, s.nextFloat()); 1545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 1546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals((float)23.456, s.nextFloat()); 1547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23.456 23.456"); 1549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 1550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals((float)23.456, s.nextFloat()); 1551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 1552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals((float)23456.0, s.nextFloat()); 1553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23,456.7 23.456,7"); 1555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 1556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals((float)23456.7, s.nextFloat()); 1557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 1558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals((float)23456.7, s.nextFloat()); 1559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123.4 123.4- -123.4-"); 1561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("ar", "AE")); 1562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // FIXME 1563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// assertEquals((float)-123.4, s.nextFloat()); 1564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// //The following test case fails on RI 1565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// assertEquals((float)-123.4, s.nextFloat()); 1566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextFloat(); 1568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 1569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 1570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123- -123"); 1574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("mk", "MK")); 1575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextFloat(); 1577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 1578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 1579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Skip the un-recognizable token 123-. 1582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("123-", s.next()); 1583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals((float)-123.0, s.nextFloat()); 1584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 1589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#nextBigInteger(int) 1590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_nextBigIntegerI() throws IOException { 1592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 456"); 1593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("123"), s.nextBigInteger(10)); 1594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("456"), s.nextBigInteger(10)); 1595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextBigInteger(10); 1597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NoSuchElementException"); 1598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 1599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If the radix is different from 10 1603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 456"); 1604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("38"), s.nextBigInteger(5)); 1605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextBigInteger(5); 1607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 1608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 1609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Different locale can only recognize corresponding locale sensitive 1614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * string. ',' is used in many locales as group separator. 1615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23,456 23,456"); 1617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 1618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextBigInteger(10); 1620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 1621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 1622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 1625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If exception is thrown out, input will not be advanced. 1626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("23456"), s.nextBigInteger(10)); 1627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("23456"), s.nextBigInteger(10)); 1628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * ''' is used in many locales as group separator. 1631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23'456 23'456"); 1633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 1634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextBigInteger(10); 1636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 1637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 1638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("it", "CH")); 1641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If exception is thrown out, input will not be advanced. 1642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("23456"), s.nextBigInteger(10)); 1643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("23456"), s.nextBigInteger(10)); 1644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The input string has Arabic-Indic digits. 1647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("1\u06602 1\u06662"); 1649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("102"), s.nextBigInteger(10)); 1650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextBigInteger(5); 1652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 1653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 1654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("162"), s.nextBigInteger(10)); 1657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * '.' is used in many locales as group separator. The input string 1660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * has Arabic-Indic digits . 1661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23.45\u0666 23.456"); 1663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 1664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextBigInteger(10); 1666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 1667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 1668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 1671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If exception is thrown out, input will not be advanced. 1672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("23456"), s.nextBigInteger(10)); 1673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("23456"), s.nextBigInteger(10)); 1674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The input string starts with zero 1676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("03,456"); 1677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 1678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextBigInteger(10); 1680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 1681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 1682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("03456"); 1686561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("3456"), s.nextBigInteger(10)); 1687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("\u06603,456"); 1689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 1690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("3456"), s.nextBigInteger(10)); 1691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("E34"); 1693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("3636"), s.nextBigInteger(16)); 1694561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1695561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1696561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * There are 3 types of zero digit in all locales, '0' '\u0966' '\u0e50' 1697561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * respectively, but they are not differentiated. 1698561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1699561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("12300"); 1700561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 1701561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("12300"), s.nextBigInteger(10)); 1702561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1703561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123\u0966\u0966"); 1704561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 1705561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("12300"), s.nextBigInteger(10)); 1706561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1707561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123\u0e50\u0e50"); 1708561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 1709561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("12300"), s.nextBigInteger(10)); 1710561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1711561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123"); 1712561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("ar", "AE")); 1713561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("-123"), s.nextBigInteger(10)); 1714561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1715561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1716561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123"); 1717561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("mk", "MK")); 1718561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("-123"), s.nextBigInteger(10)); 1719561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1720561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1721561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1722561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 1723561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#nextBigInteger() 1724561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1725561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_nextBigInteger() throws IOException { 1726561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 456"); 1727561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("123"), s.nextBigInteger()); 1728561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("456"), s.nextBigInteger()); 1729561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1730561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextBigInteger(); 1731561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NoSuchElementException"); 1732561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 1733561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1734561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1735561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1736561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If the radix is different from 10 1737561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 456"); 1738561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useRadix(5); 1739561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("38"), s.nextBigInteger()); 1740561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1741561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextBigInteger(); 1742561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 1743561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 1744561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1745561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1746561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1747561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1748561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Different locale can only recognize corresponding locale sensitive 1749561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * string. ',' is used in many locales as group separator. 1750561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1751561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23,456 23,456"); 1752561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 1753561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1754561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextBigInteger(); 1755561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 1756561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 1757561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1758561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1759561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 1760561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If exception is thrown out, input will not be advanced. 1761561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("23456"), s.nextBigInteger()); 1762561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("23456"), s.nextBigInteger()); 1763561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1764561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1765561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * ''' is used in many locales as group separator. 1766561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1767561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23'456 23'456"); 1768561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 1769561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1770561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextBigInteger(); 1771561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 1772561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 1773561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1774561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1775561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("it", "CH")); 1776561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If exception is thrown out, input will not be advanced. 1777561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("23456"), s.nextBigInteger()); 1778561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("23456"), s.nextBigInteger()); 1779561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1780561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1781561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The input string has Arabic-Indic digits. 1782561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1783561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("1\u06602 1\u06662"); 1784561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("102"), s.nextBigInteger()); 1785561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useRadix(5); 1786561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1787561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextBigInteger(); 1788561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 1789561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 1790561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1791561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1792561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useRadix(10); 1793561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("162"), s.nextBigInteger()); 1794561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1795561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1796561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * '.' is used in many locales as group separator. The input string 1797561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * has Arabic-Indic digits . 1798561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1799561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23.45\u0666 23.456"); 1800561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 1801561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1802561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextBigInteger(); 1803561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 1804561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 1805561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1806561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1807561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 1808561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If exception is thrown out, input will not be advanced. 1809561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("23456"), s.nextBigInteger()); 1810561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("23456"), s.nextBigInteger()); 1811561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1812561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The input string starts with zero 1813561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("03,456"); 1814561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 1815561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1816561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextBigInteger(); 1817561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 1818561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 1819561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1820561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1821561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1822561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("03456"); 1823561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("3456"), s.nextBigInteger()); 1824561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1825561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("\u06603,456"); 1826561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 1827561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("3456"), s.nextBigInteger()); 1828561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1829561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("E34"); 1830561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useRadix(16); 1831561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("3636"), s.nextBigInteger()); 1832561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1833561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1834561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * There are 3 types of zero digit in all locales, '0' '\u0966' '\u0e50' 1835561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * respectively, but they are not differentiated. 1836561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1837561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("12300"); 1838561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 1839561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("12300"), s.nextBigInteger()); 1840561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1841561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123\u0966\u0966"); 1842561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 1843561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("12300"), s.nextBigInteger()); 1844561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1845561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123\u0e50\u0e50"); 1846561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 1847561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("12300"), s.nextBigInteger()); 1848561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1849561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123"); 1850561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("ar", "AE")); 1851561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("-123"), s.nextBigInteger()); 1852561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1853561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123"); 1854561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("mk", "MK")); 1855561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("-123"), s.nextBigInteger()); 1856561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1857561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1858561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1859561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 1860561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#nextShort(int) 1861561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1862561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_nextShortI() throws IOException { 1863561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 456"); 1864561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(123, s.nextShort(10)); 1865561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(456, s.nextShort(10)); 1866561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1867561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextShort(10); 1868561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NoSuchElementException"); 1869561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 1870561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1871561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1872561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1873561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If the radix is different from 10 1874561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 456"); 1875561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(38, s.nextShort(5)); 1876561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1877561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextShort(5); 1878561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 1879561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 1880561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1881561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1882561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1883561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If the number is out of range 1884561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123456789"); 1885561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1886561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextShort(10); 1887561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 1888561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 1889561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1890561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1891561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1892561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1893561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Different locale can only recognize corresponding locale sensitive 1894561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * string. ',' is used in many locales as group separator. 1895561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1896561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23,456 23,456"); 1897561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 1898561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1899561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextShort(10); 1900561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 1901561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 1902561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1903561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1904561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 1905561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If exception is thrown out, input will not be advanced. 1906561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextShort(10)); 1907561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextShort(10)); 1908561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1909561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1910561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * ''' is used in many locales as group separator. 1911561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1912561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23'456 23'456"); 1913561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 1914561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1915561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextShort(10); 1916561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 1917561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 1918561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1919561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1920561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("it", "CH")); 1921561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If exception is thrown out, input will not be advanced. 1922561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextShort(10)); 1923561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextShort(10)); 1924561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1925561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1926561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The input string has Arabic-Indic digits. 1927561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1928561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("1\u06602 1\u06662"); 1929561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(102, s.nextShort(10)); 1930561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1931561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextShort(5); 1932561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 1933561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 1934561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1935561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1936561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(162, s.nextShort(10)); 1937561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1938561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1939561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * '.' is used in many locales as group separator. The input string 1940561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * has Arabic-Indic digits . 1941561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1942561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23.45\u0666 23.456"); 1943561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 1944561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1945561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextShort(10); 1946561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 1947561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 1948561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1949561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1950561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 1951561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If exception is thrown out, input will not be advanced. 1952561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextShort(10)); 1953561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextShort(10)); 1954561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1955561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The input string starts with zero 1956561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("03,456"); 1957561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 1958561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1959561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextShort(10); 1960561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 1961561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 1962561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 1963561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1964561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1965561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("03456"); 1966561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3456, s.nextShort(10)); 1967561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1968561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("\u06603,456"); 1969561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 1970561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3456, s.nextShort(10)); 1971561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1972561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("E34"); 1973561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3636, s.nextShort(16)); 1974561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1975561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 1976561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * There are 3 types of zero digit in all locales, '0' '\u0966' '\u0e50' 1977561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * respectively, but they are not differentiated. 1978561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1979561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("12300"); 1980561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 1981561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(12300, s.nextShort(10)); 1982561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1983561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123\u0966\u0966"); 1984561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 1985561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(12300, s.nextShort(10)); 1986561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1987561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123\u0e50\u0e50"); 1988561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 1989561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(12300, s.nextShort(10)); 1990561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1991561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123"); 1992561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("ar", "AE")); 1993561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-123, s.nextShort(10)); 1994561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1995561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1996561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123"); 1997561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("mk", "MK")); 1998561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-123, s.nextShort(10)); 1999561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2000561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2001561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 2002561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 2003561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#nextShort() 2004561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 2005561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_nextShort() throws IOException { 2006561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 456"); 2007561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(123, s.nextShort()); 2008561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(456, s.nextShort()); 2009561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2010561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextShort(); 2011561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NoSuchElementException"); 2012561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 2013561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2014561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2015561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2016561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If the radix is different from 10 2017561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 456"); 2018561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useRadix(5); 2019561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(38, s.nextShort()); 2020561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2021561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextShort(); 2022561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 2023561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 2024561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2025561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2026561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2027561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If the number is out of range 2028561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123456789"); 2029561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2030561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextShort(); 2031561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 2032561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 2033561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2034561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2035561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2036561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 2037561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Different locale can only recognize corresponding locale sensitive 2038561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * string. ',' is used in many locales as group separator. 2039561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 2040561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23,456 23,456"); 2041561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 2042561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2043561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextShort(); 2044561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 2045561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 2046561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2047561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2048561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 2049561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If exception is thrown out, input will not be advanced. 2050561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextShort()); 2051561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextShort()); 2052561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2053561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 2054561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * ''' is used in many locales as group separator. 2055561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 2056561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23'456 23'456"); 2057561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 2058561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2059561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextShort(); 2060561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 2061561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 2062561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2063561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2064561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("it", "CH")); 2065561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If exception is thrown out, input will not be advanced. 2066561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextShort()); 2067561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextShort()); 2068561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2069561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 2070561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The input string has Arabic-Indic digits. 2071561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 2072561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("1\u06602 1\u06662"); 2073561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(102, s.nextShort()); 2074561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useRadix(5); 2075561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2076561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextShort(); 2077561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 2078561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 2079561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2080561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2081561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useRadix(10); 2082561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(162, s.nextShort()); 2083561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2084561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 2085561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * '.' is used in many locales as group separator. The input string 2086561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * has Arabic-Indic digits . 2087561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 2088561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23.45\u0666 23.456"); 2089561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 2090561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2091561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextShort(); 2092561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 2093561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 2094561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2095561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2096561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 2097561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If exception is thrown out, input will not be advanced. 2098561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextShort()); 2099561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextShort()); 2100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The input string starts with zero 2102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("03,456"); 2103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 2104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextShort(); 2106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 2107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 2108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("03456"); 2112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3456, s.nextShort()); 2113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("\u06603,456"); 2115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 2116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3456, s.nextShort()); 2117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("E34"); 2119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useRadix(16); 2120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3636, s.nextShort()); 2121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 2123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * There are 3 types of zero digit in all locales, '0' '\u0966' '\u0e50' 2124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * respectively, but they are not differentiated. 2125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 2126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("12300"); 2127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 2128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(12300, s.nextShort()); 2129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123\u0966\u0966"); 2131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 2132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(12300, s.nextShort()); 2133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123\u0e50\u0e50"); 2135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 2136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(12300, s.nextShort()); 2137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123"); 2139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("ar", "AE")); 2140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-123, s.nextShort()); 2141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123"); 2143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("mk", "MK")); 2144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-123, s.nextShort()); 2145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 2148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 2149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#nextLong(int) 2150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 2151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_nextLongI() throws IOException { 2152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 456"); 2153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(123, s.nextLong(10)); 2154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(456, s.nextLong(10)); 2155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextLong(10); 2157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NoSuchElementException"); 2158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 2159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If the radix is different from 10 2163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 456"); 2164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(38, s.nextLong(5)); 2165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextLong(5); 2167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 2168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 2169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If the number is out of range 2173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123456789123456789123456789123456789"); 2174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextLong(10); 2176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 2177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 2178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 2182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Different locale can only recognize corresponding locale sensitive 2183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * string. ',' is used in many locales as group separator. 2184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 2185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23,456 23,456"); 2186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 2187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextLong(10); 2189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 2190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 2191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 2194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If exception is thrown out, input will not be advanced. 2195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextLong(10)); 2196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextLong(10)); 2197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 2199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * ''' is used in many locales as group separator. 2200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 2201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23'456 23'456"); 2202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 2203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextLong(10); 2205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 2206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 2207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("it", "CH")); 2210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If exception is thrown out, input will not be advanced. 2211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextLong(10)); 2212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextLong(10)); 2213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 2215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The input string has Arabic-Indic digits. 2216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 2217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("1\u06602 1\u06662"); 2218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(102, s.nextLong(10)); 2219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextLong(5); 2221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 2222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 2223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(162, s.nextLong(10)); 2226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 2228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * '.' is used in many locales as group separator. The input string 2229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * has Arabic-Indic digits . 2230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 2231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23.45\u0666 23.456"); 2232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 2233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextLong(10); 2235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 2236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 2237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 2240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If exception is thrown out, input will not be advanced. 2241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextLong(10)); 2242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextLong(10)); 2243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The input string starts with zero 2245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("03,456"); 2246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 2247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextLong(10); 2249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 2250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 2251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("03456"); 2255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3456, s.nextLong(10)); 2256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("\u06603,456"); 2258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 2259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3456, s.nextLong(10)); 2260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("E34"); 2262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3636, s.nextLong(16)); 2263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 2265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * There are 3 types of zero digit in all locales, '0' '\u0966' '\u0e50' 2266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * respectively, but they are not differentiated. 2267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 2268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("12300"); 2269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 2270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(12300, s.nextLong(10)); 2271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123\u0966\u0966"); 2273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 2274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(12300, s.nextLong(10)); 2275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123\u0e50\u0e50"); 2277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 2278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(12300, s.nextLong(10)); 2279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123"); 2281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("ar", "AE")); 2282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-123, s.nextLong(10)); 2283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123"); 2286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("mk", "MK")); 2287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-123, s.nextLong(10)); 2288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 2291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 2292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#nextLong() 2293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 2294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_nextLong() throws IOException { 2295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 456"); 2296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(123, s.nextLong()); 2297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(456, s.nextLong()); 2298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextLong(); 2300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NoSuchElementException"); 2301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 2302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If the radix is different from 10 2306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 456"); 2307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useRadix(5); 2308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(38, s.nextLong()); 2309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextLong(); 2311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 2312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 2313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If the number is out of range 2317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123456789123456789123456789123456789"); 2318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextLong(); 2320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 2321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 2322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 2326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Different locale can only recognize corresponding locale sensitive 2327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * string. ',' is used in many locales as group separator. 2328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 2329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23,456 23,456"); 2330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 2331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextLong(); 2333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 2334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 2335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 2338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If exception is thrown out, input will not be advanced. 2339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextLong()); 2340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextLong()); 2341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 2343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * ''' is used in many locales as group separator. 2344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 2345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23'456 23'456"); 2346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 2347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextLong(); 2349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 2350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 2351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("it", "CH")); 2354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If exception is thrown out, input will not be advanced. 2355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextLong()); 2356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextLong()); 2357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 2359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The input string has Arabic-Indic digits. 2360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 2361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("1\u06602 1\u06662"); 2362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(102, s.nextLong()); 2363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useRadix(5); 2364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextLong(); 2366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 2367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 2368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useRadix(10); 2371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(162, s.nextLong()); 2372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 2374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * '.' is used in many locales as group separator. The input string 2375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * has Arabic-Indic digits . 2376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 2377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23.45\u0666 23.456"); 2378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 2379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextLong(); 2381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 2382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 2383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 2386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If exception is thrown out, input will not be advanced. 2387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextLong()); 2388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextLong()); 2389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The input string starts with zero 2391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("03,456"); 2392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 2393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextLong(); 2395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 2396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 2397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("03456"); 2401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3456, s.nextLong()); 2402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("\u06603,456"); 2404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 2405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3456, s.nextLong()); 2406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("E34"); 2408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useRadix(16); 2409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3636, s.nextLong()); 2410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 2412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * There are 3 types of zero digit in all locales, '0' '\u0966' '\u0e50' 2413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * respectively, but they are not differentiated. 2414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 2415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("12300"); 2416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 2417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(12300, s.nextLong()); 2418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123\u0966\u0966"); 2420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 2421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(12300, s.nextLong()); 2422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123\u0e50\u0e50"); 2424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 2425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(12300, s.nextLong()); 2426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123"); 2428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("ar", "AE")); 2429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-123, s.nextLong()); 2430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123"); 2432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("mk", "MK")); 2433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-123, s.nextLong()); 2434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 2437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 2438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#hasNext() 2439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 2440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_hasNext() throws IOException { 2441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("1##2").useDelimiter("\\#"); 2442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNext()); 2443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("1", s.next()); 2444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("", s.next()); 2445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("2", s.next()); 2446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNext()); 2447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.close(); 2448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.hasNext(); 2450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw IllegalStateException"); 2451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalStateException e) { 2452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 2453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("1( )2( )").useDelimiter("\\( \\)"); 2456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNext()); 2457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNext()); 2458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("1", s.next()); 2459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("2", s.next()); 2460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("1 2 ").useDelimiter("( )"); 2462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("1", s.next()); 2463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("2", s.next()); 2464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNext()); 2465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("", s.next()); 2466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("1\n2 "); 2468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("1", s.next()); 2469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNext()); 2470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("2", s.next()); 2471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNext()); 2472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // test boundary case 2473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.next(); 2475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw NoSuchElementException"); 2476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 2477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("1'\n'2 "); 2481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("1'", s.next()); 2482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNext()); 2483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("'2", s.next()); 2484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNext()); 2485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // test boundary case 2486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.next(); 2488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw NoSuchElementException"); 2489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 2490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(" "); 2494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNext()); 2495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // test socket inputStream 2497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes os.write("1 2".getBytes()); 2499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes serverSocket.close(); 2500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(client); 2502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("1", s.next()); 2503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNext()); 2504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("2", s.next()); 2505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNext()); 2506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.next(); 2508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw NoSuchElementException"); 2509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 2510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 2515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 2516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#hasNext(Pattern) 2517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 2518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_hasNextLPattern() throws IOException { 2519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Pattern pattern; 2520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("aab@2@abb@").useDelimiter("\\@"); 2521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes pattern = Pattern.compile("a*b"); 2522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNext(pattern)); 2523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("aab", s.next(pattern)); 2524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNext(pattern)); 2525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.next(pattern); 2527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw InputMismatchException"); 2528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 2529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("word ? "); 2533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes pattern = Pattern.compile("\\w+"); 2534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNext(pattern)); 2535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("word", s.next(pattern)); 2536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNext(pattern)); 2537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.next(pattern); 2539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw InputMismatchException"); 2540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 2541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("word1 WorD2 "); 2545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes pattern = Pattern.compile("\\w+"); 2546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNext(pattern)); 2547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("word1", s.next(pattern)); 2548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNext(pattern)); 2549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("WorD2", s.next(pattern)); 2550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNext(pattern)); 2551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.next(pattern); 2553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw NoSuchElementException"); 2554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 2555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("word1 WorD2 "); 2559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes pattern = Pattern.compile("\\w+"); 2560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.hasNext((Pattern) null); 2562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NullPointerException"); 2563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 2564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 2565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.close(); 2567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.hasNext(pattern); 2569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw IllegalStateException"); 2570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalStateException e) { 2571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 2572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // test socket inputStream 2575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes os.write("aab b".getBytes()); 2576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes serverSocket.close(); 2577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(client); 2579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes pattern = Pattern.compile("a+b"); 2580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNext(pattern)); 2581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("aab", s.next(pattern)); 2582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNext(pattern)); 2583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.next(pattern); 2585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw InputMismatchException"); 2586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 2587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 2592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 2593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#hasNext(String) 2594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 2595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_hasNextLString() throws IOException { 2596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("aab@2@abb@").useDelimiter("\\@"); 2597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.hasNext((String)null); 2599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NullPointerException"); 2600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 2601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 2602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("aab*b*").useDelimiter("\\*"); 2605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNext("a+b")); 2606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("aab", s.next("a+b")); 2607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNext("a+b")); 2608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.next("a+b"); 2610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw InputMismatchException"); 2611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 2612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.close(); 2615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.hasNext("a+b"); 2617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw IllegalStateException"); 2618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalStateException e) { 2619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 2620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("WORD ? "); 2623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNext("\\w+")); 2624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("WORD", s.next("\\w+")); 2625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNext("\\w+")); 2626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.next("\\w+"); 2628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw InputMismatchException"); 2629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 2630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("word1 word2 "); 2634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("word1", s.next("\\w+")); 2635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("word2", s.next("\\w+")); 2636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // test boundary case 2637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.next("\\w+"); 2639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw NoSuchElementException"); 2640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 2641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // test socket inputStream 2645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes os.write("aab 2".getBytes()); 2647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes serverSocket.close(); 2648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(client); 2650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNext("a*b")); 2651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("aab", s.next("a*b")); 2652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNext("a*b")); 2653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.next("a*b"); 2655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw InputMismatchException"); 2656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 2657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 2662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 2663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#hasNextBoolean() 2664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 2665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_hasNextBoolean() throws IOException { 2666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("TRue"); 2668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBoolean()); 2669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.nextBoolean()); 2670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("tRue false"); 2672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBoolean()); 2673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.nextBoolean()); 2674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBoolean()); 2675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.nextBoolean()); 2676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(""); 2678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextBoolean()); 2679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // test socket inputStream 2681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes os.write("true false ".getBytes()); 2683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes serverSocket.close(); 2684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(client); 2686561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBoolean()); 2687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.nextBoolean()); 2688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // ues '*' as delimiter 2690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("true**false").useDelimiter("\\*"); 2691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBoolean()); 2692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.nextBoolean()); 2693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextBoolean()); 2694561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2695561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextBoolean(); 2696561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw NoSuchElementException"); 2697561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 2698561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2699561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2700561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2701561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("false( )").useDelimiter("\\( \\)"); 2702561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBoolean()); 2703561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.nextBoolean()); 2704561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextBoolean()); 2705561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2706561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2707561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2708561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 2709561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 2710561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#hasNextByte(int) 2711561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 2712561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_hasNextByteI() throws IOException { 2713561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 126"); 2714561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextByte(10)); 2715561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(123, s.nextByte(10)); 2716561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextByte(10)); 2717561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(126, s.nextByte(10)); 2718561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextByte(10)); 2719561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2720561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextByte(10); 2721561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NoSuchElementException"); 2722561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 2723561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2724561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2725561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2726561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If the radix is different from 10 2727561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 126"); 2728561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextByte(5)); 2729561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(38, s.nextByte(5)); 2730561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextByte(5)); 2731561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2732561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextByte(5); 2733561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 2734561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 2735561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2736561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2737561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2738561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If the number is out of range 2739561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("1234"); 2740561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextByte(10)); 2741561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2742561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextByte(10); 2743561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 2744561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 2745561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2746561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2747561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2748561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 2749561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The input string has Arabic-Indic digits. 2750561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 2751561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("1\u06602 12\u0666"); 2752561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextByte(10)); 2753561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(102, s.nextByte(10)); 2754561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextByte(5)); 2755561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2756561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextByte(5); 2757561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 2758561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 2759561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2760561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2761561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextByte(10)); 2762561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(126, s.nextByte(10)); 2763561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2764561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("012"); 2765561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextByte(10)); 2766561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(12, s.nextByte(10)); 2767561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2768561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("E"); 2769561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextByte(16)); 2770561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(14, s.nextByte(16)); 2771561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2772561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 2773561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * There are 3 types of zero digit in all locales, '0' '\u0966' '\u0e50' 2774561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * respectively, but they are not differentiated. 2775561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 2776561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("100"); 2777561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 2778561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextByte(10)); 2779561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(100, s.nextByte(10)); 2780561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2781561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("1\u0966\u0966"); 2782561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 2783561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextByte(10)); 2784561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(100, s.nextByte(10)); 2785561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2786561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("1\u0e50\u0e50"); 2787561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 2788561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextByte(10)); 2789561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(100, s.nextByte(10)); 2790561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2791561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123"); 2792561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("ar", "AE")); 2793561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextByte(10)); 2794561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-123, s.nextByte(10)); 2795561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2796561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2797561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123"); 2798561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("mk", "MK")); 2799561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextByte(10)); 2800561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-123, s.nextByte(10)); 2801561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2802561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2803561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 2804561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 2805561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#hasNextByte(int) 2806561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 2807561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_hasNextByteI_cache() throws IOException{ 2808561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //regression for HARMONY-2063 2809561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 45"); 2810561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextByte(8)); 2811561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(83, s.nextByte()); 2812561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(45, s.nextByte()); 2813561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2814561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 45"); 2815561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextByte(10)); 2816561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextByte(8)); 2817561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(83, s.nextByte()); 2818561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(45, s.nextByte()); 2819561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2820561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123 -45"); 2821561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextByte(8)); 2822561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-123, s.nextInt()); 2823561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-45, s.nextByte()); 2824561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2825561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 45"); 2826561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextByte()); 2827561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.close(); 2828561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2829561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextByte(); 2830561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw IllegalStateException"); 2831561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalStateException e) { 2832561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 2833561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2834561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2835561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 2836561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 2837561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#hasNextByte() 2838561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 2839561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_hasNextByte() throws IOException { 2840561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 126"); 2841561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextByte()); 2842561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(123, s.nextByte()); 2843561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextByte()); 2844561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(126, s.nextByte()); 2845561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextByte()); 2846561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2847561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextByte(); 2848561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NoSuchElementException"); 2849561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 2850561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2851561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2852561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2853561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If the radix is different from 10 2854561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 126"); 2855561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useRadix(5); 2856561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextByte()); 2857561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(38, s.nextByte()); 2858561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextByte()); 2859561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2860561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextByte(); 2861561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 2862561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 2863561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2864561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2865561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2866561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If the number is out of range 2867561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("1234"); 2868561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextByte()); 2869561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2870561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextByte(); 2871561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 2872561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 2873561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2874561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2875561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2876561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 2877561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The input string has Arabic-Indic digits. 2878561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 2879561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("1\u06602 12\u0666"); 2880561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextByte()); 2881561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(102, s.nextByte()); 2882561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useRadix(5); 2883561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextByte()); 2884561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2885561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextByte(); 2886561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 2887561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 2888561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2889561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2890561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useRadix(10); 2891561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextByte()); 2892561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(126, s.nextByte()); 2893561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2894561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("012"); 2895561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(12, s.nextByte()); 2896561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2897561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("E"); 2898561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useRadix(16); 2899561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextByte()); 2900561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(14, s.nextByte()); 2901561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2902561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 2903561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * There are 3 types of zero digit in all locales, '0' '\u0966' '\u0e50' 2904561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * respectively, but they are not differentiated. 2905561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 2906561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("100"); 2907561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 2908561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextByte()); 2909561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(100, s.nextByte()); 2910561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2911561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("1\u0966\u0966"); 2912561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 2913561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextByte()); 2914561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(100, s.nextByte()); 2915561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2916561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("1\u0e50\u0e50"); 2917561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 2918561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextByte()); 2919561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(100, s.nextByte()); 2920561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2921561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123"); 2922561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("ar", "AE")); 2923561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextByte()); 2924561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-123, s.nextByte()); 2925561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2926561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123"); 2927561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("mk", "MK")); 2928561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextByte()); 2929561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-123, s.nextByte()); 2930561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2931561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2932561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 2933561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 2934561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#hasNextBigInteger(int) 2935561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 2936561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_hasNextBigIntegerI() throws IOException { 2937561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 456"); 2938561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigInteger(10)); 2939561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("123"), s.nextBigInteger(10)); 2940561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigInteger(10)); 2941561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("456"), s.nextBigInteger(10)); 2942561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextBigInteger(10)); 2943561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2944561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextBigInteger(10); 2945561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NoSuchElementException"); 2946561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 2947561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2948561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2949561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2950561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If the radix is different from 10 2951561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 456"); 2952561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigInteger(5)); 2953561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("38"), s.nextBigInteger(5)); 2954561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextBigInteger(5)); 2955561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2956561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextBigInteger(5); 2957561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 2958561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 2959561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2960561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2961561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2962561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 2963561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Different locale can only recognize corresponding locale sensitive 2964561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * string. ',' is used in many locales as group separator. 2965561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 2966561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23,456 23,456"); 2967561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 2968561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextBigInteger(10)); 2969561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2970561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextBigInteger(10); 2971561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 2972561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 2973561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2974561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2975561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 2976561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If exception is thrown out, input will not be advanced. 2977561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigInteger(10)); 2978561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("23456"), s.nextBigInteger(10)); 2979561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigInteger(10)); 2980561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("23456"), s.nextBigInteger(10)); 2981561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 2982561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 2983561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * ''' is used in many locales as group separator. 2984561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 2985561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23'456 23'456"); 2986561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 2987561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextBigInteger(10)); 2988561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 2989561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextBigInteger(10); 2990561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 2991561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 2992561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 2993561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2994561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("it", "CH")); 2995561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If exception is thrown out, input will not be advanced. 2996561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigInteger(10)); 2997561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("23456"), s.nextBigInteger(10)); 2998561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigInteger(10)); 2999561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("23456"), s.nextBigInteger(10)); 3000561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3001561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 3002561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The input string has Arabic-Indic digits. 3003561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 3004561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("1\u06602 1\u06662"); 3005561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigInteger(10)); 3006561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("102"), s.nextBigInteger(10)); 3007561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextBigInteger(5)); 3008561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 3009561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextBigInteger(5); 3010561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 3011561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 3012561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 3013561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3014561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigInteger(10)); 3015561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("162"), s.nextBigInteger(10)); 3016561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3017561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 3018561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * '.' is used in many locales as group separator. The input string 3019561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * has Arabic-Indic digits . 3020561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 3021561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23.45\u0666 23.456"); 3022561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 3023561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextBigInteger(10)); 3024561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 3025561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextBigInteger(10); 3026561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 3027561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 3028561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 3029561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3030561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 3031561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If exception is thrown out, input will not be advanced. 3032561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigInteger(10)); 3033561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("23456"), s.nextBigInteger(10)); 3034561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigInteger(10)); 3035561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("23456"), s.nextBigInteger(10)); 3036561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3037561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The input string starts with zero 3038561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("03,456"); 3039561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 3040561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextBigInteger(10)); 3041561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 3042561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextBigInteger(10); 3043561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 3044561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 3045561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 3046561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3047561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3048561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("03456"); 3049561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigInteger(10)); 3050561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("3456"), s.nextBigInteger(10)); 3051561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3052561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("\u06603,456"); 3053561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 3054561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigInteger(10)); 3055561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("3456"), s.nextBigInteger(10)); 3056561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3057561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("E34"); 3058561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigInteger(16)); 3059561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("3636"), s.nextBigInteger(16)); 3060561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3061561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 3062561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * There are 3 types of zero digit in all locales, '0' '\u0966' '\u0e50' 3063561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * respectively, but they are not differentiated. 3064561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 3065561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("12300"); 3066561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 3067561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigInteger(10)); 3068561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("12300"), s.nextBigInteger(10)); 3069561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3070561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123\u0966\u0966"); 3071561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 3072561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigInteger(10)); 3073561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("12300"), s.nextBigInteger(10)); 3074561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3075561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123\u0e50\u0e50"); 3076561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 3077561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigInteger(10)); 3078561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("12300"), s.nextBigInteger(10)); 3079561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3080561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123"); 3081561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("ar", "AE")); 3082561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigInteger(10)); 3083561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("-123"), s.nextBigInteger(10)); 3084561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3085561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3086561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123"); 3087561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("mk", "MK")); 3088561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigInteger(10)); 3089561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("-123"), s.nextBigInteger(10)); 3090561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3091561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3092561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 3093561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 3094561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#hasNextBigInteger(int) 3095561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 3096561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_hasNextBigIntegerI_cache() throws IOException { 3097561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //regression for HARMONY-2063 3098561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 123456789123456789"); 3099561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigInteger(16)); 3100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("291"), s.nextBigInteger()); 3101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("123456789123456789"), s.nextBigInteger()); 3102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123456789123456789 456"); 3104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigInteger(16)); 3105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigInteger(10)); 3106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("123456789123456789"), s.nextBigInteger()); 3107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("456"), s.nextBigInteger()); 3108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123 -123456789123456789"); 3110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigInteger(8)); 3111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-123, s.nextShort()); 3112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("-123456789123456789"), s.nextBigInteger()); 3113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 456"); 3115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigInteger()); 3116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.close(); 3117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 3118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextBigInteger(); 3119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw IllegalStateException"); 3120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalStateException e) { 3121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 3122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 3126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 3127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#hasNextBigInteger() 3128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 3129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_hasNextBigInteger() throws IOException { 3130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 456"); 3131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigInteger()); 3132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("123"), s.nextBigInteger()); 3133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigInteger()); 3134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("456"), s.nextBigInteger()); 3135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextBigInteger()); 3136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 3137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextBigInteger(); 3138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NoSuchElementException"); 3139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 3140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 3141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If the radix is different from 10 3144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 456"); 3145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useRadix(5); 3146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigInteger()); 3147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("38"), s.nextBigInteger()); 3148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextBigInteger()); 3149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 3150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextBigInteger(); 3151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 3152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 3153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 3154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 3157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Different locale can only recognize corresponding locale sensitive 3158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * string. ',' is used in many locales as group separator. 3159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 3160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23,456 23,456"); 3161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 3162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextBigInteger()); 3163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 3164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextBigInteger(); 3165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 3166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 3167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 3168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 3170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If exception is thrown out, input will not be advanced. 3171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigInteger()); 3172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("23456"), s.nextBigInteger()); 3173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigInteger()); 3174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("23456"), s.nextBigInteger()); 3175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 3177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * ''' is used in many locales as group separator. 3178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 3179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23'456 23'456"); 3180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 3181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextBigInteger()); 3182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 3183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextBigInteger(); 3184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 3185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 3186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 3187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("it", "CH")); 3189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If exception is thrown out, input will not be advanced. 3190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigInteger()); 3191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("23456"), s.nextBigInteger()); 3192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigInteger()); 3193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("23456"), s.nextBigInteger()); 3194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 3196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The input string has Arabic-Indic digits. 3197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 3198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("1\u06602 1\u06662"); 3199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("102"), s.nextBigInteger()); 3200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useRadix(5); 3201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextBigInteger()); 3202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 3203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextBigInteger(); 3204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 3205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 3206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 3207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useRadix(10); 3209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigInteger()); 3210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("162"), s.nextBigInteger()); 3211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 3213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * '.' is used in many locales as group separator. The input string 3214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * has Arabic-Indic digits . 3215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 3216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23.45\u0666 23.456"); 3217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 3218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextBigInteger()); 3219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 3220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextBigInteger(); 3221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 3222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 3223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 3224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 3226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If exception is thrown out, input will not be advanced. 3227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigInteger()); 3228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("23456"), s.nextBigInteger()); 3229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigInteger()); 3230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("23456"), s.nextBigInteger()); 3231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The input string starts with zero 3233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("03,456"); 3234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 3235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextBigInteger()); 3236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 3237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextBigInteger(); 3238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 3239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 3240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 3241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("03456"); 3244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigInteger()); 3245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("3456"), s.nextBigInteger()); 3246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("\u06603,456"); 3248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 3249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigInteger()); 3250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("3456"), s.nextBigInteger()); 3251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("E34"); 3253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useRadix(16); 3254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigInteger()); 3255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("3636"), s.nextBigInteger()); 3256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 3258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * There are 3 types of zero digit in all locales, '0' '\u0966' '\u0e50' 3259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * respectively, but they are not differentiated. 3260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 3261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("12300"); 3262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 3263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigInteger()); 3264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("12300"), s.nextBigInteger()); 3265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123\u0966\u0966"); 3267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 3268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigInteger()); 3269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("12300"), s.nextBigInteger()); 3270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123\u0e50\u0e50"); 3272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 3273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigInteger()); 3274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("12300"), s.nextBigInteger()); 3275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123"); 3277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("ar", "AE")); 3278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigInteger()); 3279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("-123"), s.nextBigInteger()); 3280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123"); 3282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("mk", "MK")); 3283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigInteger()); 3284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigInteger("-123"), s.nextBigInteger()); 3285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 3288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 3289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#hasNextInt(int) 3290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 3291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_hasNextIntI() throws IOException { 3292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 456"); 3293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(123, s.nextInt(10)); 3294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextInt(10)); 3295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(456, s.nextInt(10)); 3296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextInt(10)); 3297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 3298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextInt(10); 3299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NoSuchElementException"); 3300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 3301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 3302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If the radix is different from 10 3305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 456"); 3306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextInt(5)); 3307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(38, s.nextInt(5)); 3308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextInt(5)); 3309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 3310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextInt(5); 3311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 3312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 3313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 3314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If the number is out of range 3317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123456789123456789123456789123456789"); 3318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextInt(10)); 3319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 3321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Different locale can only recognize corresponding locale sensitive 3322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * string. ',' is used in many locales as group separator. 3323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 3324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23,456"); 3325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 3326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextInt(10)); 3327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 3328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If exception is thrown out, input will not be advanced. 3329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextInt(10)); 3330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 3331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * ''' is used in many locales as group separator. 3332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 3333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23'456"); 3334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 3335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextInt(10)); 3336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("it", "CH")); 3337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If exception is thrown out, input will not be advanced. 3338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextInt(10)); 3339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 3341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The input string has Arabic-Indic digits. 3342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 3343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("1\u06662"); 3344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextInt(10)); 3345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextInt(5)); 3346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 3348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * '.' is used in many locales as group separator. The input string 3349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * has Arabic-Indic digits . 3350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 3351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23.45\u0666"); 3352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 3353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextInt(10)); 3354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 3355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextInt(10); 3356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 3357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 3358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 3359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 3361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextInt(10)); 3362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The input string starts with zero 3364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("03,456"); 3365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 3366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextInt(10)); 3367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 3368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextInt(10); 3369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 3370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 3371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 3372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("03456"); 3375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextInt(10)); 3376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3456, s.nextInt(10)); 3377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("\u06603,456"); 3379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 3380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextInt(10)); 3381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3456, s.nextInt(10)); 3382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("E3456"); 3384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextInt(16)); 3385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(930902, s.nextInt(16)); 3386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The following test case fails on RI, because RI does not support 3387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // letter as leading digit 3388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("E3,456"); 3389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 3390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextInt(16)); 3391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(930902, s.nextInt(16)); 3392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If parameter radix is illegal, the following test case fails on RI 3394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 3395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.hasNextInt(Character.MIN_RADIX - 1); 3396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw IllegalArgumentException"); 3397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 3398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 3399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 3402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * There are 3 types of zero digit in all locales, '0' '\u0966' '\u0e50' 3403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * respectively, but they are not differentiated. 3404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 3405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("12300"); 3406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 3407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextInt(10)); 3408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(12300, s.nextInt(10)); 3409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123\u0966\u0966"); 3411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 3412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextInt(10)); 3413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(12300, s.nextInt(10)); 3414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123\u0e50\u0e50"); 3416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 3417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextInt(10)); 3418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(12300, s.nextInt(10)); 3419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 3421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * There are three types of negative prefix all in all. '' '-' '(' There 3422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * are three types of negative suffix all in all. '' '-' ')' '(' and ')' 3423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * must be used togethor. Prefix '-' and suffix '-' must be used 3424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * exclusively. 3425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 3426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 3428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * According to Integer regular expression: Integer :: = ( [-+]? (* 3429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Numeral ) ) | LocalPositivePrefix Numeral LocalPositiveSuffix | 3430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * LocalNegativePrefix Numeral LocalNegativeSuffix 123- should be 3431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * recognized by scanner with locale ar_AE, (123) shouble be recognized 3432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * by scanner with locale mk_MK. But this is not the case on RI. 3433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 3434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123 123- -123-"); 3435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("ar", "AE")); 3436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextInt(10)); 3437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-123, s.nextInt(10)); 3438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The following test case fails on RI 3439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextInt(10)); 3440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-123, s.nextInt(10)); 3441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextInt(10)); 3442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 3443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextInt(10); 3444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 3445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 3446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 3447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123 123-"); 3450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("mk", "MK")); 3451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextInt(10)); 3452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-123, s.nextInt(10)); 3453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextInt(10)); 3454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 3455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextInt(); 3456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 3457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 3458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 3459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Skip the un-recognizable token 123-. 3461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("123-", s.next()); 3462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 3465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 3466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#hasNextInt(int) 3467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 3468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_hasNextIntI_cache() throws IOException { 3469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //regression for HARMONY-2063 3470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 456"); 3471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextInt(16)); 3472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(291, s.nextInt(10)); 3473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(456, s.nextInt()); 3474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 456"); 3476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextInt(16)); 3477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextInt(8)); 3478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(83, s.nextInt()); 3479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(456, s.nextInt()); 3480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123 -456 -789"); 3482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextInt(8)); 3483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-123, s.nextShort()); 3484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-456, s.nextInt()); 3485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextShort(16)); 3486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-789, s.nextInt()); 3487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 456"); 3489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextInt()); 3490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.close(); 3491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 3492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextInt(); 3493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw IllegalStateException"); 3494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalStateException e) { 3495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 3496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 3499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 3500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#hasNextInt() 3501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 3502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_hasNextInt() throws IOException { 3503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 456"); 3504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextInt()); 3505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(123, s.nextInt()); 3506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(456, s.nextInt()); 3507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextInt()); 3508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 3509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextInt(); 3510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NoSuchElementException"); 3511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 3512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 3513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If the radix is different from 10 3516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 456"); 3517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useRadix(5); 3518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextInt()); 3519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(38, s.nextInt()); 3520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextInt()); 3521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 3522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextInt(); 3523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 3524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 3525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 3526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If the number is out of range 3529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123456789123456789123456789123456789"); 3530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextInt()); 3531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 3533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Different locale can only recognize corresponding locale sensitive 3534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * string. ',' is used in many locales as group separator. 3535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 3536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23,456"); 3537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 3538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextInt()); 3539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 3540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextInt()); 3541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 3543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * ''' is used in many locales as group separator. 3544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 3545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23'456"); 3546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 3547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextInt()); 3548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("it", "CH")); 3549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextInt()); 3550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 3552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The input string has Arabic-Indic digits. 3553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 3554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("1\u06662"); 3555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useRadix(5); 3556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextInt()); 3557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 3559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * '.' is used in many locales as group separator. The input string 3560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * has Arabic-Indic digits . 3561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 3562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23.45\u0666"); 3563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 3564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextInt()); 3565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 3566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextInt()); 3567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The input string starts with zero 3569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("03,456"); 3570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 3571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextInt()); 3572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 3573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextInt(); 3574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 3575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 3576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 3577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("03456"); 3580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextInt()); 3581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3456, s.nextInt()); 3582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("\u06603,456"); 3584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 3585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3456, s.nextInt()); 3586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("E3456"); 3588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useRadix(16); 3589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextInt()); 3590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(930902, s.nextInt()); 3591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The following test case fails on RI, because RI does not support 3593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // letter as leading digit 3594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("E3,456"); 3595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 3596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useRadix(16); 3597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextInt()); 3598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(930902, s.nextInt()); 3599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 3601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * There are 3 types of zero digit in all locales, '0' '\u0966' '\u0e50' 3602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * respectively, but they are not differentiated. 3603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 3604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("12300"); 3605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 3606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextInt()); 3607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(12300, s.nextInt()); 3608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123\u0966\u0966"); 3610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 3611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextInt()); 3612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(12300, s.nextInt()); 3613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123\u0e50\u0e50"); 3615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 3616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextInt()); 3617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(12300, s.nextInt()); 3618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 3620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * There are three types of negative prefix all in all. '' '-' '(' There 3621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * are three types of negative suffix all in all. '' '-' ')' '(' and ')' 3622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * must be used togethor. Prefix '-' and suffix '-' must be used 3623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * exclusively. 3624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 3625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 3627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * According to Integer regular expression: Integer :: = ( [-+]? (* 3628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Numeral ) ) | LocalPositivePrefix Numeral LocalPositiveSuffix | 3629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * LocalNegativePrefix Numeral LocalNegativeSuffix 123- should be 3630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * recognized by scanner with locale ar_AE, (123) shouble be recognized 3631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * by scanner with locale mk_MK. But this is not the case on RI. 3632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 3633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123 123- -123-"); 3634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("ar", "AE")); 3635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextInt()); 3636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-123, s.nextInt()); 3637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The following test case fails on RI 3638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextInt()); 3639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-123, s.nextInt()); 3640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextInt()); 3641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 3642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextInt(); 3643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 3644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 3645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 3646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123 123-"); 3649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("mk", "MK")); 3650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextInt()); 3651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-123, s.nextInt()); 3652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 3653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextInt(); 3654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 3655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 3656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 3657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Skip the un-recognizable token 123-. 3659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("123-", s.next()); 3660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 3663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 3664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#hasNextFloat() 3665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 3666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_hasNextFloat() throws IOException { 3667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 45\u0666. 123.4 .123 "); 3668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 3669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextFloat()); 3670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals((float)123.0, s.nextFloat()); 3671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextFloat()); 3672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals((float)456.0, s.nextFloat()); 3673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextFloat()); 3674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals((float)123.4, s.nextFloat()); 3675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextFloat()); 3676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals((float)0.123, s.nextFloat()); 3677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextFloat()); 3678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 3679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextFloat(); 3680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NoSuchElementException"); 3681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 3682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 3683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("+123.4 -456.7 123,456.789 0.1\u06623,4"); 3686561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 3687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextFloat()); 3688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals((float)123.4, s.nextFloat()); 3689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextFloat()); 3690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals((float)-456.7, s.nextFloat()); 3691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextFloat()); 3692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals((float)123456.789, s.nextFloat()); 3693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextFloat()); 3694561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 3695561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextFloat(); 3696561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 3697561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 3698561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 3699561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3700561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3701561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Scientific notation 3702561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("+123.4E10 -456.7e+12 123,456.789E-10"); 3703561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 3704561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextFloat()); 3705561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals((float)1.234E12, s.nextFloat()); 3706561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextFloat()); 3707561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals((float)-4.567E14, s.nextFloat()); 3708561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextFloat()); 3709561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals((float)1.23456789E-5, s.nextFloat()); 3710561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3711561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("NaN Infinity -Infinity"); 3712561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextFloat()); 3713561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(Float.NaN, s.nextFloat()); 3714561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextFloat()); 3715561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(Float.POSITIVE_INFINITY, s.nextFloat()); 3716561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextFloat()); 3717561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(Float.NEGATIVE_INFINITY, s.nextFloat()); 3718561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3719561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String str=String.valueOf(Float.MAX_VALUE*2); 3720561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s=new Scanner(str); 3721561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextFloat()); 3722561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(Float.POSITIVE_INFINITY,s.nextFloat()); 3723561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3724561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 3725561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Different locale can only recognize corresponding locale sensitive 3726561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * string. ',' is used in many locales as group separator. 3727561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 3728561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23,456 23,456"); 3729561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 3730561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextFloat()); 3731561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals((float)23456.0, s.nextFloat()); 3732561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 3733561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextFloat()); 3734561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals((float)23.456, s.nextFloat()); 3735561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3736561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23.456 23.456"); 3737561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 3738561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextFloat()); 3739561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals((float)23.456, s.nextFloat()); 3740561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 3741561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextFloat()); 3742561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals((float)23456.0, s.nextFloat()); 3743561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3744561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23,456.7 23.456,7"); 3745561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 3746561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextFloat()); 3747561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals((float)23456.7, s.nextFloat()); 3748561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 3749561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextFloat()); 3750561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals((float)23456.7, s.nextFloat()); 3751561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3752561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //FIXME 3753561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// s = new Scanner("-123.4 123.4- -123.4-"); 3754561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// s.useLocale(new Locale("ar", "AE")); 3755561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// assertTrue(s.hasNextFloat()); 3756561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// assertEquals((float)-123.4, s.nextFloat()); 3757561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// //The following test case fails on RI 3758561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// assertTrue(s.hasNextFloat()); 3759561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// assertEquals((float)-123.4, s.nextFloat()); 3760561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// try { 3761561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// s.nextFloat(); 3762561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// fail("Should throw InputMismatchException"); 3763561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// } catch (InputMismatchException e) { 3764561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// // Expected 3765561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes// } 3766561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3767561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123- -123"); 3768561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("mk", "MK")); 3769561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextFloat()); 3770561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 3771561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextFloat(); 3772561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 3773561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 3774561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 3775561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3776561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Skip the un-recognizable token 123-. 3777561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("123-", s.next()); 3778561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextFloat()); 3779561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals((float)-123.0, s.nextFloat()); 3780561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3781561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("+123.4 -456.7"); 3782561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 3783561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextFloat()); 3784561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.close(); 3785561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try{ 3786561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextFloat(); 3787561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw IllegalStateException"); 3788561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }catch(IllegalStateException e){ 3789561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //expected 3790561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3791561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3792561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3793561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3794561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 3795561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 3796561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#hasNextShort(int) 3797561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 3798561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_hasNextShortI() throws IOException { 3799561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 456"); 3800561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextShort(10)); 3801561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(123, s.nextShort(10)); 3802561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextShort(10)); 3803561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(456, s.nextShort(10)); 3804561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextShort(10)); 3805561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 3806561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextShort(10); 3807561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NoSuchElementException"); 3808561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 3809561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 3810561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3811561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3812561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If the radix is different from 10 3813561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 456"); 3814561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextShort(5)); 3815561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(38, s.nextShort(5)); 3816561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextShort(5)); 3817561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 3818561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextShort(5); 3819561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 3820561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 3821561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 3822561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3823561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3824561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If the number is out of range 3825561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123456789"); 3826561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextShort(10)); 3827561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 3828561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextShort(10); 3829561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 3830561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 3831561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 3832561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3833561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3834561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 3835561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Different locale can only recognize corresponding locale sensitive 3836561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * string. ',' is used in many locales as group separator. 3837561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 3838561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23,456 23,456"); 3839561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 3840561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextShort(10)); 3841561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 3842561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextShort(10); 3843561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 3844561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 3845561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 3846561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3847561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 3848561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If exception is thrown out, input will not be advanced. 3849561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextShort(10)); 3850561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextInt(10)); 3851561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextShort(10)); 3852561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextInt(10)); 3853561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3854561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 3855561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * ''' is used in many locales as group separator. 3856561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 3857561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23'456 23'456"); 3858561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 3859561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextShort(10)); 3860561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 3861561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextShort(10); 3862561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 3863561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 3864561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 3865561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3866561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("it", "CH")); 3867561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If exception is thrown out, input will not be advanced. 3868561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextShort(10)); 3869561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextShort(10)); 3870561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextShort(10)); 3871561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextShort(10)); 3872561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3873561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 3874561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The input string has Arabic-Indic digits. 3875561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 3876561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("1\u06602 1\u06662"); 3877561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextShort(10)); 3878561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(102, s.nextShort(10)); 3879561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextShort(5)); 3880561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 3881561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextShort(5); 3882561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 3883561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 3884561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 3885561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3886561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextShort(10)); 3887561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(162, s.nextShort(10)); 3888561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3889561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 3890561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * '.' is used in many locales as group separator. The input string 3891561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * has Arabic-Indic digits . 3892561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 3893561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23.45\u0666 23.456"); 3894561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 3895561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextShort(10)); 3896561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 3897561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextShort(10); 3898561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 3899561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 3900561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 3901561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3902561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 3903561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If exception is thrown out, input will not be advanced. 3904561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextShort(10)); 3905561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextShort(10)); 3906561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextShort(10)); 3907561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextShort(10)); 3908561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3909561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The input string starts with zero 3910561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("03,456"); 3911561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 3912561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextShort(10)); 3913561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 3914561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextShort(10); 3915561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 3916561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 3917561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 3918561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3919561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3920561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("03456"); 3921561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextShort(10)); 3922561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3456, s.nextShort(10)); 3923561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3924561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("\u06603,456"); 3925561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 3926561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextShort(10)); 3927561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3456, s.nextShort(10)); 3928561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3929561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("E34"); 3930561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextShort(16)); 3931561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3636, s.nextShort(16)); 3932561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3933561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 3934561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * There are 3 types of zero digit in all locales, '0' '\u0966' '\u0e50' 3935561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * respectively, but they are not differentiated. 3936561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 3937561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("12300"); 3938561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 3939561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextShort(10)); 3940561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(12300, s.nextShort(10)); 3941561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3942561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123\u0966\u0966"); 3943561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 3944561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextShort(10)); 3945561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(12300, s.nextShort(10)); 3946561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3947561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123\u0e50\u0e50"); 3948561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 3949561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextShort(10)); 3950561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(12300, s.nextShort(10)); 3951561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3952561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123"); 3953561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("ar", "AE")); 3954561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextShort(10)); 3955561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-123, s.nextShort(10)); 3956561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3957561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3958561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123"); 3959561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("mk", "MK")); 3960561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextShort(10)); 3961561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-123, s.nextShort(10)); 3962561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3963561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3964561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 3965561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 3966561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#hasNextShort() 3967561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 3968561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_hasNextShort() throws IOException { 3969561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 456"); 3970561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextShort()); 3971561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(123, s.nextShort()); 3972561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextShort()); 3973561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(456, s.nextShort()); 3974561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextShort()); 3975561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 3976561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextShort(); 3977561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NoSuchElementException"); 3978561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 3979561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 3980561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3981561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3982561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If the radix is different from 10 3983561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 456"); 3984561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useRadix(5); 3985561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextShort()); 3986561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(38, s.nextShort()); 3987561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextShort()); 3988561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 3989561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextShort(); 3990561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 3991561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 3992561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 3993561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 3994561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 3995561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If the number is out of range 3996561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123456789"); 3997561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextShort()); 3998561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 3999561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextShort(); 4000561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 4001561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 4002561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 4003561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4004561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4005561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 4006561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Different locale can only recognize corresponding locale sensitive 4007561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * string. ',' is used in many locales as group separator. 4008561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 4009561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23,456 23,456"); 4010561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 4011561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextShort()); 4012561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 4013561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextShort(); 4014561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 4015561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 4016561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 4017561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4018561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 4019561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If exception is thrown out, input will not be advanced. 4020561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextShort()); 4021561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextShort()); 4022561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextShort()); 4023561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextShort()); 4024561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4025561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 4026561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * ''' is used in many locales as group separator. 4027561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 4028561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23'456 23'456"); 4029561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 4030561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextShort()); 4031561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 4032561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextShort(); 4033561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 4034561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 4035561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 4036561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4037561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("it", "CH")); 4038561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If exception is thrown out, input will not be advanced. 4039561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextShort()); 4040561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextShort()); 4041561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextShort()); 4042561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextShort()); 4043561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4044561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 4045561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The input string has Arabic-Indic digits. 4046561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 4047561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("1\u06602 1\u06662"); 4048561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(102, s.nextShort()); 4049561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useRadix(5); 4050561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextShort()); 4051561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 4052561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextShort(); 4053561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 4054561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 4055561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 4056561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4057561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useRadix(10); 4058561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextShort()); 4059561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(162, s.nextShort()); 4060561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4061561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 4062561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * '.' is used in many locales as group separator. The input string 4063561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * has Arabic-Indic digits . 4064561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 4065561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23.45\u0666 23.456"); 4066561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 4067561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextShort()); 4068561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 4069561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextShort(); 4070561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 4071561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 4072561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 4073561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4074561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 4075561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If exception is thrown out, input will not be advanced. 4076561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextShort()); 4077561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextShort()); 4078561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextShort()); 4079561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextShort()); 4080561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4081561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The input string starts with zero 4082561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("03,456"); 4083561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 4084561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextShort()); 4085561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 4086561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextShort(); 4087561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 4088561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 4089561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 4090561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4091561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4092561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("03456"); 4093561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextShort()); 4094561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3456, s.nextShort()); 4095561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4096561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("\u06603,456"); 4097561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 4098561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextShort()); 4099561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3456, s.nextShort()); 4100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("E34"); 4102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useRadix(16); 4103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextShort()); 4104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3636, s.nextShort()); 4105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 4107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * There are 3 types of zero digit in all locales, '0' '\u0966' '\u0e50' 4108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * respectively, but they are not differentiated. 4109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 4110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("12300"); 4111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 4112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextShort()); 4113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(12300, s.nextShort()); 4114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123\u0966\u0966"); 4116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 4117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextShort()); 4118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(12300, s.nextShort()); 4119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123\u0e50\u0e50"); 4121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 4122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextShort()); 4123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(12300, s.nextShort()); 4124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123"); 4126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("ar", "AE")); 4127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextShort()); 4128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-123, s.nextShort()); 4129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123"); 4131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("mk", "MK")); 4132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextShort()); 4133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-123, s.nextShort()); 4134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 4137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 4138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#hasNextShort(int) 4139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 4140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_hasNextShortI_cache() throws IOException { 4141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //regression for HARMONY-2063 4142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 456"); 4143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextShort(16)); 4144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(291, s.nextShort()); 4145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(456, s.nextShort()); 4146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 456"); 4148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextShort(16)); 4149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextShort(8)); 4150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(83, s.nextShort()); 4151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(456, s.nextShort()); 4152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123 -456 -789"); 4154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextShort(8)); 4155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-123, s.nextInt()); 4156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-456, s.nextShort()); 4157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextInt(16)); 4158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-789, s.nextShort()); 4159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 456"); 4161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextShort()); 4162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.close(); 4163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 4164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextShort(); 4165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw IllegalStateException"); 4166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalStateException e) { 4167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 4168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 4172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 4173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#hasNextLong(int) 4174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 4175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_hasNextLongI() throws IOException { 4176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 456"); 4177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLong(10)); 4178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(123, s.nextLong(10)); 4179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLong(10)); 4180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(456, s.nextLong(10)); 4181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextLong(10)); 4182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 4183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextLong(10); 4184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NoSuchElementException"); 4185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 4186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 4187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If the radix is different from 10 4190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 456"); 4191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLong(5)); 4192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(38, s.nextLong(5)); 4193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextLong(5)); 4194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 4195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextLong(5); 4196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 4197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 4198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 4199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If the number is out of range 4202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123456789123456789123456789123456789"); 4203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextLong(10)); 4204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 4205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextLong(10); 4206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 4207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 4208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 4209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 4212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Different locale can only recognize corresponding locale sensitive 4213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * string. ',' is used in many locales as group separator. 4214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 4215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23,456 23,456"); 4216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 4217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextShort(10)); 4218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 4219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextLong(10); 4220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 4221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 4222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 4223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 4225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If exception is thrown out, input will not be advanced. 4226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLong(10)); 4227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextLong(10)); 4228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLong(10)); 4229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextLong(10)); 4230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 4232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * ''' is used in many locales as group separator. 4233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 4234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23'456 23'456"); 4235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 4236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextLong(10)); 4237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 4238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextLong(10); 4239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 4240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 4241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 4242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("it", "CH")); 4244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If exception is thrown out, input will not be advanced. 4245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLong(10)); 4246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextLong(10)); 4247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLong(10)); 4248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextLong(10)); 4249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 4251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The input string has Arabic-Indic digits. 4252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 4253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("1\u06602 1\u06662"); 4254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLong(10)); 4255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(102, s.nextLong(10)); 4256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextLong(5)); 4257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 4258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextLong(5); 4259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 4260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 4261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 4262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLong(10)); 4264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(162, s.nextLong(10)); 4265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 4267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * '.' is used in many locales as group separator. The input string 4268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * has Arabic-Indic digits . 4269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 4270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23.45\u0666 23.456"); 4271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 4272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextLong(10)); 4273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 4274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextLong(10); 4275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 4276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 4277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 4278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 4280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If exception is thrown out, input will not be advanced. 4281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLong(10)); 4282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextLong(10)); 4283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLong(10)); 4284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextLong(10)); 4285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The input string starts with zero 4287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("03,456"); 4288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 4289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextLong(10)); 4290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 4291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextLong(10); 4292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 4293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 4294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 4295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("03456"); 4298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLong(10)); 4299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3456, s.nextLong(10)); 4300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("\u06603,456"); 4302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 4303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLong(10)); 4304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3456, s.nextLong(10)); 4305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("E34"); 4307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLong(16)); 4308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3636, s.nextLong(16)); 4309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 4311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * There are 3 types of zero digit in all locales, '0' '\u0966' '\u0e50' 4312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * respectively, but they are not differentiated. 4313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 4314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("12300"); 4315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 4316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLong(10)); 4317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(12300, s.nextLong(10)); 4318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123\u0966\u0966"); 4320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 4321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLong(10)); 4322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(12300, s.nextLong(10)); 4323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123\u0e50\u0e50"); 4325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 4326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLong(10)); 4327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(12300, s.nextLong(10)); 4328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123"); 4330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("ar", "AE")); 4331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLong(10)); 4332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-123, s.nextLong(10)); 4333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123"); 4336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("mk", "MK")); 4337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLong(10)); 4338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-123, s.nextLong(10)); 4339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 4342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 4343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#hasNextLong(int) 4344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 4345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_hasNextLongI_cache() throws IOException { 4346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //regression for HARMONY-2063 4347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 456"); 4348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLong(16)); 4349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(291, s.nextLong()); 4350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(456, s.nextLong()); 4351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 456"); 4353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLong(16)); 4354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLong(8)); 4355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(83, s.nextLong()); 4356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(456, s.nextLong()); 4357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123 -456 -789"); 4359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLong(8)); 4360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-123, s.nextInt()); 4361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-456, s.nextLong()); 4362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextShort(16)); 4363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-789, s.nextLong()); 4364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 456"); 4366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLong()); 4367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.close(); 4368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 4369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextLong(); 4370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw IllegalStateException"); 4371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalStateException e) { 4372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 4373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 4377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 4378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#hasNextLong() 4379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 4380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_hasNextLong() throws IOException { 4381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 456"); 4382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLong()); 4383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(123, s.nextLong()); 4384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLong()); 4385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(456, s.nextLong()); 4386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextLong()); 4387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 4388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextLong(); 4389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NoSuchElementException"); 4390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 4391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 4392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If the radix is different from 10 4395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 456"); 4396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useRadix(5); 4397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLong()); 4398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(38, s.nextLong()); 4399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextLong()); 4400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 4401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextLong(); 4402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 4403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 4404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 4405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If the number is out of range 4408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123456789123456789123456789123456789"); 4409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextLong()); 4410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 4411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextLong(); 4412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 4413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 4414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 4415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 4418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Different locale can only recognize corresponding locale sensitive 4419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * string. ',' is used in many locales as group separator. 4420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 4421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23,456 23,456"); 4422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 4423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextLong()); 4424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 4425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextLong(); 4426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 4427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 4428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 4429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 4431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If exception is thrown out, input will not be advanced. 4432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLong()); 4433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextLong()); 4434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLong()); 4435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextLong()); 4436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 4438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * ''' is used in many locales as group separator. 4439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 4440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23'456 23'456"); 4441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 4442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextLong()); 4443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 4444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextLong(); 4445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 4446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 4447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 4448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("it", "CH")); 4450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If exception is thrown out, input will not be advanced. 4451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLong()); 4452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextLong()); 4453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLong()); 4454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextLong()); 4455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 4457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The input string has Arabic-Indic digits. 4458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 4459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("1\u06602 1\u06662"); 4460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(102, s.nextLong()); 4461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useRadix(5); 4462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextLong()); 4463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 4464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextLong(); 4465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 4466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 4467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 4468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useRadix(10); 4470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLong()); 4471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(162, s.nextLong()); 4472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 4474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * '.' is used in many locales as group separator. The input string 4475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * has Arabic-Indic digits . 4476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 4477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23.45\u0666 23.456"); 4478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 4479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextLong()); 4480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 4481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextLong(); 4482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 4483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 4484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 4485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 4487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If exception is thrown out, input will not be advanced. 4488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLong()); 4489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextLong()); 4490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLong()); 4491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456, s.nextLong()); 4492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The input string starts with zero 4494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("03,456"); 4495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 4496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextLong()); 4497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 4498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextLong(); 4499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 4500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 4501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 4502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("03456"); 4505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLong()); 4506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3456, s.nextLong()); 4507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("\u06603,456"); 4509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 4510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLong()); 4511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3456, s.nextLong()); 4512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("E34"); 4514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useRadix(16); 4515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLong()); 4516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3636, s.nextLong()); 4517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 4519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * There are 3 types of zero digit in all locales, '0' '\u0966' '\u0e50' 4520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * respectively, but they are not differentiated. 4521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 4522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("12300"); 4523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 4524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLong()); 4525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(12300, s.nextLong()); 4526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123\u0966\u0966"); 4528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 4529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLong()); 4530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(12300, s.nextLong()); 4531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123\u0e50\u0e50"); 4533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.CHINESE); 4534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLong()); 4535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(12300, s.nextLong()); 4536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123"); 4538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("ar", "AE")); 4539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLong()); 4540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-123, s.nextLong()); 4541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123"); 4543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(new Locale("mk", "MK")); 4544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLong()); 4545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-123, s.nextLong()); 4546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 4549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 4550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#nextDouble() 4551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 4552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_hasNextDouble() throws IOException { 4553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 45\u0666. 123.4 .123 "); 4554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 4555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextDouble()); 4556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(123.0, s.nextDouble()); 4557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextDouble()); 4558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(456.0, s.nextDouble()); 4559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextDouble()); 4560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(123.4, s.nextDouble()); 4561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextDouble()); 4562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0.123, s.nextDouble()); 4563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextDouble()); 4564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 4565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextDouble(); 4566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NoSuchElementException"); 4567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 4568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 4569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("+123.4 -456.7 123,456.789 0.1\u06623,4"); 4572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 4573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextDouble()); 4574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(123.4, s.nextDouble()); 4575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextDouble()); 4576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-456.7, s.nextDouble()); 4577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextDouble()); 4578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(123456.789, s.nextDouble()); 4579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextDouble()); 4580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 4581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextDouble(); 4582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 4583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 4584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 4585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Scientific notation 4588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("+123.4E10 -456.7e+12 123,456.789E-10"); 4589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 4590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextDouble()); 4591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1.234E12, s.nextDouble()); 4592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextDouble()); 4593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-4.567E14, s.nextDouble()); 4594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextDouble()); 4595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1.23456789E-5, s.nextDouble()); 4596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("NaN Infinity -Infinity"); 4598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextDouble()); 4599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(Double.NaN, s.nextDouble()); 4600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextDouble()); 4601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(Double.POSITIVE_INFINITY, s.nextDouble()); 4602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextDouble()); 4603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(Double.NEGATIVE_INFINITY, s.nextDouble()); 4604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String str=String.valueOf(Double.MAX_VALUE*2); 4606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s=new Scanner(str); 4607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextDouble()); 4608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(Double.POSITIVE_INFINITY,s.nextDouble()); 4609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 4611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Different locale can only recognize corresponding locale sensitive 4612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * string. ',' is used in many locales as group separator. 4613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 4614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23,456 23,456"); 4615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 4616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextDouble()); 4617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456.0, s.nextDouble()); 4618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 4619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextDouble()); 4620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23.456, s.nextDouble()); 4621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23.456 23.456"); 4623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 4624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextDouble()); 4625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23.456, s.nextDouble()); 4626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 4627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextDouble()); 4628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456.0, s.nextDouble()); 4629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23,456.7 23.456,7"); 4631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 4632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextDouble()); 4633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456.7, s.nextDouble()); 4634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 4635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextDouble()); 4636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456.7, s.nextDouble()); 4637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123.4"); 4639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 4640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextDouble()); 4641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-123.4, s.nextDouble()); 4642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("+123.4 -456.7"); 4644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 4645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextDouble()); 4646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.close(); 4647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try{ 4648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextDouble(); 4649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw IllegalStateException"); 4650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }catch(IllegalStateException e){ 4651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //expected 4652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 4656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 4657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#hasNextBigDecimal() 4658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 4659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_hasNextBigDecimal() throws IOException { 4660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 45\u0666. 123.4 .123 "); 4661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 4662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigDecimal()); 4663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigDecimal("123"), s.nextBigDecimal()); 4664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigDecimal()); 4665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigDecimal("456"), s.nextBigDecimal()); 4666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigDecimal()); 4667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigDecimal("123.4"), s.nextBigDecimal()); 4668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigDecimal()); 4669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigDecimal("0.123"), s.nextBigDecimal()); 4670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextBigDecimal()); 4671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 4672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextBigDecimal(); 4673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NoSuchElementException"); 4674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 4675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 4676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("+123.4 -456.7 123,456.789 0.1\u06623,4"); 4679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 4680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigDecimal()); 4681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigDecimal("123.4"), s.nextBigDecimal()); 4682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigDecimal()); 4683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigDecimal("-456.7"), s.nextBigDecimal()); 4684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigDecimal()); 4685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigDecimal("123456.789"), s.nextBigDecimal()); 4686561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextBigDecimal()); 4687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 4688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextBigDecimal(); 4689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 4690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 4691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 4692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4694561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Scientific notation 4695561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("+123.4E10 -456.7e+12 123,456.789E-10"); 4696561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 4697561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigDecimal()); 4698561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigDecimal("1.234E12"), s.nextBigDecimal()); 4699561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigDecimal()); 4700561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigDecimal("-4.567E14"), s.nextBigDecimal()); 4701561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigDecimal()); 4702561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigDecimal("1.23456789E-5"), s.nextBigDecimal()); 4703561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4704561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("NaN"); 4705561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(s.hasNextBigDecimal()); 4706561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 4707561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextBigDecimal(); 4708561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 4709561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 4710561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 4711561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4712561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4713561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 4714561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Different locale can only recognize corresponding locale sensitive 4715561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * string. ',' is used in many locales as group separator. 4716561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 4717561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23,456 23,456"); 4718561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 4719561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigDecimal()); 4720561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigDecimal("23456"), s.nextBigDecimal()); 4721561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 4722561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigDecimal()); 4723561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigDecimal("23.456"), s.nextBigDecimal()); 4724561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4725561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23.456 23.456"); 4726561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 4727561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigDecimal()); 4728561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigDecimal("23.456"), s.nextBigDecimal()); 4729561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 4730561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigDecimal()); 4731561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigDecimal("23456"), s.nextBigDecimal()); 4732561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4733561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23,456.7"); 4734561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 4735561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigDecimal()); 4736561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigDecimal("23456.7"), s.nextBigDecimal()); 4737561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4738561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123.4"); 4739561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 4740561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextBigDecimal()); 4741561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigDecimal("-123.4"), s.nextBigDecimal()); 4742561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4743561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4744561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static class MockStringReader extends StringReader { 4745561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4746561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public MockStringReader(String param) { 4747561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super(param); 4748561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4749561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4750561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public int read(CharBuffer target) throws IOException { 4751561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes target.append('t'); 4752561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes target.append('e'); 4753561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes target.append('s'); 4754561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes target.append('t'); 4755561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw new IOException(); 4756561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4757561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4758561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4759561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4760561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static class MockStringReader2Read extends StringReader { 4761561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private int timesRead = 1; 4762561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4763561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public MockStringReader2Read(String param) { 4764561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super(param); 4765561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4766561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4767561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public int read(CharBuffer target) throws IOException { 4768561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (timesRead == 1) { 4769561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes target.append('1'); 4770561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes target.append('2'); 4771561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes target.append('3'); 4772561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes timesRead++; 4773561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return 3; 4774561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } else if (timesRead == 2) { 4775561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes target.append('t'); 4776561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes timesRead++; 4777561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return 1; 4778561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } else { 4779561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw new IOException(); 4780561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4781561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4782561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4783561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4784561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4785561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 4786561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#findWithinHorizon(Pattern, int) 4787561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 4788561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_findWithinHorizon_LPatternI(){ 4789561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4790561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // This method searches through the input up to the specified search 4791561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // horizon(exclusive). 4792561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123test"); 4793561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String result = s.findWithinHorizon(Pattern.compile("\\p{Lower}"), 5); 4794561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("t", result); 4795561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MatchResult mresult = s.match(); 4796561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3, mresult.start()); 4797561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(4, mresult.end()); 4798561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4799561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("12345test1234test next"); 4800561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 4801561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * If the pattern is found the scanner advances past the input that 4802561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * matched and returns the string that matched the pattern. 4803561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 4804561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.findWithinHorizon(Pattern.compile("\\p{Digit}+"), 2); 4805561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("12", result); 4806561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes mresult = s.match(); 4807561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, mresult.start()); 4808561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(2, mresult.end()); 4809561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Position is now pointing at the bar. "12|345test1234test next" 4810561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4811561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.findWithinHorizon(Pattern.compile("\\p{Digit}+"), 6); 4812561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("345", result); 4813561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4814561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes mresult = s.match(); 4815561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(2, mresult.start()); 4816561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(5, mresult.end()); 4817561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Position is now pointing at the bar. "12345|test1234test next" 4818561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4819561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If no such pattern is detected then the null is returned and the 4820561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // scanner's position remains unchanged. 4821561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.findWithinHorizon(Pattern.compile("\\p{Digit}+"), 3); 4822561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(result); 4823561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4824561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 4825561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.match(); 4826561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw IllegalStateException"); 4827561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalStateException e) { 4828561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 4829561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4830561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("345", mresult.group()); 4831561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(2, mresult.start()); 4832561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(5, mresult.end()); 4833561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Position is now still pointing at the bar. "12345|test1234test next" 4834561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4835561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If horizon is 0, then the horizon is ignored and this method 4836561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // continues to search through the input looking for the specified 4837561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // pattern without bound. 4838561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.findWithinHorizon(Pattern.compile("\\p{Digit}+"), 0); 4839561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes mresult = s.match(); 4840561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(9, mresult.start()); 4841561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(13, mresult.end()); 4842561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Position is now pointing at the bar. "12345test1234|test next" 4843561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4844561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("test", s.next()); 4845561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes mresult = s.match(); 4846561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(13, mresult.start()); 4847561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(17, mresult.end()); 4848561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4849561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("next", s.next()); 4850561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes mresult = s.match(); 4851561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(18, mresult.start()); 4852561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(22, mresult.end()); 4853561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4854561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 4855561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.findWithinHorizon((Pattern) null, -1); 4856561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NullPointerException"); 4857561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 4858561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 4859561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4860561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4861561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 4862561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.findWithinHorizon(Pattern.compile("\\p{Digit}+"), -1); 4863561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw IllegalArgumentException"); 4864561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException e) { 4865561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 4866561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4867561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4868561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.close(); 4869561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 4870561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.findWithinHorizon((Pattern) null, -1); 4871561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw IllegalStateException"); 4872561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalStateException e) { 4873561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 4874561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4875561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4876561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("test"); 4877561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.findWithinHorizon(Pattern.compile("\\w+"), 10); 4878561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("test", result); 4879561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4880561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("aa\n\rb"); 4881561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String patternStr = "^(a)$"; 4882561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.findWithinHorizon(Pattern.compile("a"), 5); 4883561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("a", result); 4884561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes mresult = s.match(); 4885561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, mresult.start()); 4886561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1, mresult.end()); 4887561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4888561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.findWithinHorizon(Pattern.compile(patternStr, 4889561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Pattern.MULTILINE), 5); 4890561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(result); 4891561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4892561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 4893561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes mresult = s.match(); 4894561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw IllegalStateException"); 4895561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalStateException e) { 4896561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 4897561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4898561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4899561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(""); 4900561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.findWithinHorizon(Pattern.compile("^"), 0); 4901561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("", result); 4902561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MatchResult matchResult = s.match(); 4903561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, matchResult.start()); 4904561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, matchResult.end()); 4905561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4906561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.findWithinHorizon(Pattern.compile("$"), 0); 4907561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("", result); 4908561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes matchResult = s.match(); 4909561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, matchResult.start()); 4910561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, matchResult.end()); 4911561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4912561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("1 fish 2 fish red fish blue fish"); 4913561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.findWithinHorizon(Pattern 4914561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .compile("(\\d+) fish (\\d+) fish (\\w+) fish (\\w+)"), 10); 4915561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(result); 4916561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4917561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 4918561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes mresult = s.match(); 4919561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw IllegalStateException"); 4920561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalStateException e) { 4921561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 4922561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4923561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, mresult.groupCount()); 4924561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4925561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.findWithinHorizon(Pattern 4926561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .compile("(\\d+) fish (\\d+) fish (\\w+) fish (\\w+)"), 100); 4927561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("1 fish 2 fish red fish blue", result); 4928561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes mresult = s.match(); 4929561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(4, mresult.groupCount()); 4930561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("1", mresult.group(1)); 4931561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("2", mresult.group(2)); 4932561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("red", mresult.group(3)); 4933561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("blue", mresult.group(4)); 4934561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4935561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("test"); 4936561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.close(); 4937561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 4938561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.findWithinHorizon(Pattern.compile("test"), 1); 4939561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw IllegalStateException"); 4940561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalStateException e) { 4941561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 4942561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4943561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4944561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("word1 WorD2 "); 4945561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.close(); 4946561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 4947561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.findWithinHorizon(Pattern.compile("\\d+"), 10); 4948561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw IllegalStateException"); 4949561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalStateException e) { 4950561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 4951561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4952561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4953561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("word1 WorD2 wOrd3 "); 4954561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Pattern pattern = Pattern.compile("\\d+"); 4955561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("1", s.findWithinHorizon(pattern, 10)); 4956561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("WorD2", s.next()); 4957561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("3", s.findWithinHorizon(pattern, 15)); 4958561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4959561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Regression test 4960561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(new MockStringReader("MockStringReader")); 4961561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes pattern = Pattern.compile("test"); 4962561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.findWithinHorizon(pattern, 10); 4963561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("test", result); 4964561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4965561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test the situation when input length is longer than buffer size. 4966561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes StringBuilder stringBuilder = new StringBuilder(); 4967561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < 1026; i++) { 4968561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes stringBuilder.append('a'); 4969561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4970561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(stringBuilder.toString()); 4971561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes pattern = Pattern.compile("\\p{Lower}+"); 4972561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.findWithinHorizon(pattern, 1026); 4973561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(stringBuilder.toString(), result); 4974561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4975561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test the situation when input length is longer than buffer size and 4976561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // set horizon to buffer size. 4977561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes stringBuilder = new StringBuilder(); 4978561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < 1026; i++) { 4979561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes stringBuilder.append('a'); 4980561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4981561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(stringBuilder.toString()); 4982561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes pattern = Pattern.compile("\\p{Lower}+"); 4983561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.findWithinHorizon(pattern, 1022); 4984561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1022, result.length()); 4985561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(stringBuilder.subSequence(0, 1022), result); 4986561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4987561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test the situation, under which pattern is clipped by buffer. 4988561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes stringBuilder = new StringBuilder(); 4989561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < 1022; i++) { 4990561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes stringBuilder.append(' '); 4991561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 4992561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes stringBuilder.append("bbc"); 4993561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1025, stringBuilder.length()); 4994561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(stringBuilder.toString()); 4995561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes pattern = Pattern.compile("bbc"); 4996561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.findWithinHorizon(pattern, 1025); 4997561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(3, result.length()); 4998561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(stringBuilder.subSequence(1022, 1025), result); 4999561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5000561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes stringBuilder = new StringBuilder(); 5001561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < 1026; i++) { 5002561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes stringBuilder.append('a'); 5003561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5004561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(stringBuilder.toString()); 5005561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes pattern = Pattern.compile("\\p{Lower}+"); 5006561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.findWithinHorizon(pattern, 0); 5007561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(stringBuilder.toString(), result); 5008561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5009561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes stringBuilder = new StringBuilder(); 5010561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < 10240; i++) { 5011561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes stringBuilder.append('-'); 5012561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5013561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes stringBuilder.replace(0, 2, "aa"); 5014561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(stringBuilder.toString()); 5015561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.findWithinHorizon(Pattern.compile("aa"), 0); 5016561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("aa", result); 5017561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5018561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("aaaa"); 5019561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.findWithinHorizon(Pattern.compile("a*"), 0); 5020561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("aaaa", result); 5021561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5022561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5023561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 5024561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#findInLine(Pattern) 5025561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 5026561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_findInLine_LPattern() { 5027561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5028561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Scanner s = new Scanner(""); 5029561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 5030561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.findInLine((Pattern) null); 5031561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NullPointerException"); 5032561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 5033561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 5034561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5035561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String result = s.findInLine(Pattern.compile("^")); 5036561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("", result); 5037561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MatchResult matchResult = s.match(); 5038561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, matchResult.start()); 5039561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, matchResult.end()); 5040561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5041561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.findInLine(Pattern.compile("$")); 5042561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("", result); 5043561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes matchResult = s.match(); 5044561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, matchResult.start()); 5045561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, matchResult.end()); 5046561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5047561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 5048561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * When we use the operation of findInLine(Pattern), the match region 5049561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * should not span the line separator. 5050561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 5051561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("aa\nb.b"); 5052561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.findInLine(Pattern.compile("a\nb*")); 5053561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(result); 5054561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5055561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("aa\nbb.b"); 5056561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.findInLine(Pattern.compile("\\.")); 5057561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(result); 5058561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5059561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("abcd1234test\n"); 5060561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.findInLine(Pattern.compile("\\p{Lower}+")); 5061561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("abcd", result); 5062561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes matchResult = s.match(); 5063561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, matchResult.start()); 5064561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(4, matchResult.end()); 5065561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5066561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.findInLine(Pattern.compile("\\p{Digit}{5}")); 5067561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(result); 5068561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 5069561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes matchResult = s.match(); 5070561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw IllegalStateException"); 5071561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalStateException e) { 5072561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 5073561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5074561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, matchResult.start()); 5075561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(4, matchResult.end()); 5076561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5077561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.findInLine(Pattern.compile("\\p{Lower}+")); 5078561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("test", result); 5079561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes matchResult = s.match(); 5080561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(8, matchResult.start()); 5081561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(12, matchResult.end()); 5082561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5083561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes char[] chars = new char[2048]; 5084561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Arrays.fill(chars, 'a'); 5085561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes StringBuilder stringBuilder = new StringBuilder(); 5086561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes stringBuilder.append(chars); 5087561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes stringBuilder.append("1234"); 5088561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(stringBuilder.toString()); 5089561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.findInLine(Pattern.compile("\\p{Digit}+")); 5090561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("1234", result); 5091561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes matchResult = s.match(); 5092561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(2048, matchResult.start()); 5093561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(2052, matchResult.end()); 5094561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5095561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("test"); 5096561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.close(); 5097561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 5098561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.findInLine((Pattern) null); 5099561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw IllegalStateException"); 5100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalStateException e) { 5101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 5102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("test1234\n1234 test"); 5105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.findInLine(Pattern.compile("test")); 5106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("test", result); 5107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes matchResult = s.match(); 5108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, matchResult.start()); 5109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(4, matchResult.end()); 5110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int number = s.nextInt(); 5112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1234, number); 5113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes matchResult = s.match(); 5114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(4, matchResult.start()); 5115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(8, matchResult.end()); 5116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.next(); 5118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("1234", result); 5119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes matchResult = s.match(); 5120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(9, matchResult.start()); 5121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(13, matchResult.end()); 5122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.findInLine(Pattern.compile("test")); 5124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("test", result); 5125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes matchResult = s.match(); 5126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(14, matchResult.start()); 5127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(18, matchResult.end()); 5128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("test\u0085\ntest"); 5130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.findInLine("est"); 5131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("est", result); 5132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.findInLine("est"); 5133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("est", result); 5134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("test\ntest"); 5136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.findInLine("est"); 5137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("est", result); 5138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.findInLine("est"); 5139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("est", result); 5140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("test\n123\ntest"); 5142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.findInLine("est"); 5143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("est", result); 5144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.findInLine("est"); 5145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // RI fails. It is a RI's bug. 5146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(result); 5147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner( " *\n"); 5149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.findInLine(Pattern.compile( "^\\s*(?:\\*(?=[^/]))")); 5150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(" *", result); 5151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 5154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#findInLine(String) 5155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 5156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_findInLine_LString() { 5157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("test"); 5158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 5159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.findInLine((String) null); 5160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NullPointerException"); 5161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 5162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 5163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.close(); 5166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 5167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.findInLine((String) null); 5168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NullPointerException"); 5169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 5170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 5171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 5173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.findInLine("test"); 5174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw IllegalStateException"); 5175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalStateException e) { 5176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // exptected 5177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 5181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#skip(Pattern) 5182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 5183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_skip_LPattern() { 5184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("test"); 5185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 5186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.skip((String) null); 5187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NullPointerException"); 5188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 5189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 5190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // If pattern does not match, NoSuchElementException will be thrown out. 5193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("1234"); 5194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 5195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.skip(Pattern.compile("\\p{Lower}")); 5196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NoSuchElementException"); 5197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 5198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 5199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Then, no matchResult will be thrown out. 5201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 5202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.match(); 5203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw IllegalStateException"); 5204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalStateException e) { 5205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 5206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.skip(Pattern.compile("\\p{Digit}")); 5209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MatchResult matchResult = s.match(); 5210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, matchResult.start()); 5211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1, matchResult.end()); 5212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.skip(Pattern.compile("\\p{Digit}+")); 5214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes matchResult = s.match(); 5215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1, matchResult.start()); 5216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(4, matchResult.end()); 5217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.close(); 5219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 5220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.skip(Pattern.compile("test")); 5221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw IllegalStateException"); 5222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalStateException e) { 5223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 5224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MockStringReader2Read reader = new MockStringReader2Read("test"); 5227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(reader); 5228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 5229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.skip(Pattern.compile("\\p{Digit}{4}")); 5230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NoSuchElementException"); 5231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 5232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 5233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 5235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.match(); 5236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw IllegalStateException"); 5237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalStateException e) { 5238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 5239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.skip(Pattern.compile("\\p{Digit}{3}\\p{Lower}")); 5241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes matchResult = s.match(); 5242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, matchResult.start()); 5243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(4, matchResult.end()); 5244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.close(); 5246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 5247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.skip((Pattern) null); 5248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw IllegalStateException"); 5249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalStateException e) { 5250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 5251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes StringBuilder stringBuilder = new StringBuilder(); 5254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes char [] chars = new char[1024]; 5255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Arrays.fill(chars, 'a'); 5256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes stringBuilder.append(chars); 5257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes stringBuilder.append('3'); 5258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(stringBuilder.toString()); 5259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.skip(Pattern.compile("\\p{Lower}+\\p{Digit}")); 5260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes matchResult = s.match(); 5261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, matchResult.start()); 5262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1025, matchResult.end()); 5263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Large amount of input may be cached 5265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes chars = new char[102400]; 5266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Arrays.fill(chars, 'a'); 5267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes stringBuilder = new StringBuilder(); 5268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes stringBuilder.append(chars); 5269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(stringBuilder.toString()); 5270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.skip(Pattern.compile(".*")); 5271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes matchResult = s.match(); 5272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, matchResult.start()); 5273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(102400, matchResult.end()); 5274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // skip something without risking a NoSuchElementException 5276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.skip(Pattern.compile("[ \t]*")); 5277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes matchResult = s.match(); 5278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(102400, matchResult.start()); 5279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(102400, matchResult.end()); 5280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 5283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#skip(String) 5284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 5285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_skip_LString() { 5286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("test"); 5287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 5288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.skip((String) null); 5289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NullPointerException"); 5290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 5291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 5292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 5296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 5297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#nextDouble() 5298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 5299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_nextDouble() throws IOException { 5300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 45\u0666. 123.4 .123 "); 5301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 5302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(123.0, s.nextDouble()); 5303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(456.0, s.nextDouble()); 5304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(123.4, s.nextDouble()); 5305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0.123, s.nextDouble()); 5306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 5307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextDouble(); 5308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NoSuchElementException"); 5309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 5310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 5311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("+123.4 -456.7 123,456.789 0.1\u06623,4"); 5314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 5315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(123.4, s.nextDouble()); 5316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-456.7, s.nextDouble()); 5317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(123456.789, s.nextDouble()); 5318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 5319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextDouble(); 5320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 5321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 5322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 5323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Scientific notation 5326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("+123.4E10 -456.7e+12 123,456.789E-10"); 5327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 5328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1.234E12, s.nextDouble()); 5329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-4.567E14, s.nextDouble()); 5330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1.23456789E-5, s.nextDouble()); 5331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("NaN Infinity -Infinity"); 5333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(Double.NaN, s.nextDouble()); 5334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(Double.POSITIVE_INFINITY, s.nextDouble()); 5335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(Double.NEGATIVE_INFINITY, s.nextDouble()); 5336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //The following test case fails on RI 5338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s=new Scanner("\u221e"); 5339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 5340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(Double.POSITIVE_INFINITY, s.nextDouble()); 5341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String str=String.valueOf(Double.MAX_VALUE*2); 5343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s=new Scanner(str); 5344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(Double.POSITIVE_INFINITY,s.nextDouble()); 5345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 5347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Different locale can only recognize corresponding locale sensitive 5348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * string. ',' is used in many locales as group separator. 5349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 5350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23,456 23,456"); 5351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 5352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456.0, s.nextDouble()); 5353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 5354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23.456, s.nextDouble()); 5355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23.456 23.456"); 5357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 5358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23.456, s.nextDouble()); 5359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 5360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456.0, s.nextDouble()); 5361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23,456.7 23.456,7"); 5363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 5364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456.7, s.nextDouble()); 5365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 5366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(23456.7, s.nextDouble()); 5367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123.4"); 5369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 5370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(-123.4, s.nextDouble()); 5371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 5374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 5375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#nextBigDecimal() 5376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 5377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_nextBigDecimal() throws IOException { 5378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 45\u0666. 123.4 .123 "); 5379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 5380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigDecimal("123"), s.nextBigDecimal()); 5381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigDecimal("456"), s.nextBigDecimal()); 5382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigDecimal("123.4"), s.nextBigDecimal()); 5383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigDecimal("0.123"), s.nextBigDecimal()); 5384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 5385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextBigDecimal(); 5386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NoSuchElementException"); 5387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 5388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 5389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("+123.4 -456.7 123,456.789 0.1\u06623,4"); 5392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 5393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigDecimal("123.4"), s.nextBigDecimal()); 5394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigDecimal("-456.7"), s.nextBigDecimal()); 5395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigDecimal("123456.789"), s.nextBigDecimal()); 5396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 5397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextBigDecimal(); 5398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 5399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 5400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 5401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Scientific notation 5404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("+123.4E10 -456.7e+12 123,456.789E-10"); 5405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 5406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigDecimal("1.234E12"), s.nextBigDecimal()); 5407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigDecimal("-4.567E14"), s.nextBigDecimal()); 5408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigDecimal("1.23456789E-5"), s.nextBigDecimal()); 5409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("NaN"); 5411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 5412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextBigDecimal(); 5413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw InputMismatchException"); 5414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InputMismatchException e) { 5415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 5416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 5419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Different locale can only recognize corresponding locale sensitive 5420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * string. ',' is used in many locales as group separator. 5421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 5422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23,456 23,456"); 5423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 5424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigDecimal("23456"), s.nextBigDecimal()); 5425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 5426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigDecimal("23.456"), s.nextBigDecimal()); 5427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23.456 23.456"); 5429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 5430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigDecimal("23.456"), s.nextBigDecimal()); 5431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.GERMANY); 5432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigDecimal("23456"), s.nextBigDecimal()); 5433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("23,456.7"); 5435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 5436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigDecimal("23456.7"), s.nextBigDecimal()); 5437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("-123.4"); 5439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.useLocale(Locale.ENGLISH); 5440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(new BigDecimal("-123.4"), s.nextBigDecimal()); 5441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 5444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#toString() 5445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 5446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_toString() { 5447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("test"); 5448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotNull(s.toString()); 5449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 5452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#nextLine() 5453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 5454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_nextLine() { 5455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(""); 5456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.close(); 5457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 5458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.nextLine(); 5459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw IllegalStateException"); 5460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalStateException e) { 5461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 5462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("test\r\ntest"); 5465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String result = s.nextLine(); 5466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("test", result); 5467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MatchResult matchResult = s.match(); 5468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, matchResult.start()); 5469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(6, matchResult.end()); 5470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("\u0085"); 5472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.nextLine(); 5473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("", result); 5474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes matchResult = s.match(); 5475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, matchResult.start()); 5476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1, matchResult.end()); 5477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("\u2028"); 5479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.nextLine(); 5480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("", result); 5481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes matchResult = s.match(); 5482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, matchResult.start()); 5483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1, matchResult.end()); 5484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("\u2029"); 5486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.nextLine(); 5487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("", result); 5488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes matchResult = s.match(); 5489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, matchResult.start()); 5490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1, matchResult.end()); 5491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(""); 5493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 5494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.nextLine(); 5495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NoSuchElementException"); 5496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 5497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 5498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 5500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.match(); 5501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw IllegalStateException"); 5502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalStateException e) { 5503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 5504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("Ttest"); 5507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.nextLine(); 5508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Ttest", result); 5509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes matchResult = s.match(); 5510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, matchResult.start()); 5511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(5, matchResult.end()); 5512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("\r\n"); 5514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.nextLine(); 5515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("", result); 5516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes matchResult = s.match(); 5517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, matchResult.start()); 5518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(2, matchResult.end()); 5519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes char[] chars = new char[1024]; 5521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Arrays.fill(chars, 'a'); 5522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes StringBuilder stringBuilder = new StringBuilder(); 5523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes stringBuilder.append(chars); 5524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes chars = new char[] { '+', '-' }; 5525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes stringBuilder.append(chars); 5526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes stringBuilder.append("\u2028"); 5527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(stringBuilder.toString()); 5528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.nextLine(); 5529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(stringBuilder.toString().substring(0, 1026), result); 5531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes matchResult = s.match(); 5532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, matchResult.start()); 5533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1027, matchResult.end()); 5534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes chars = new char[1023]; 5536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Arrays.fill(chars, 'a'); 5537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes stringBuilder = new StringBuilder(); 5538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes stringBuilder.append(chars); 5539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes stringBuilder.append("\r\n"); 5540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(stringBuilder.toString()); 5541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.nextLine(); 5542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(stringBuilder.toString().substring(0, 1023), result); 5544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes matchResult = s.match(); 5545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, matchResult.start()); 5546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1025, matchResult.end()); 5547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(" "); 5549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.nextLine(); 5550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(" ", result); 5551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("test\n\n\n"); 5553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.nextLine(); 5554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("test", result); 5555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes matchResult = s.match(); 5556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, matchResult.start()); 5557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(5, matchResult.end()); 5558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.nextLine(); 5559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes matchResult = s.match(); 5560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(5, matchResult.start()); 5561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(6, matchResult.end()); 5562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("\n\n\n"); 5564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.nextLine(); 5565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("", result); 5566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes matchResult = s.match(); 5567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, matchResult.start()); 5568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1, matchResult.end()); 5569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.nextLine(); 5570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes matchResult = s.match(); 5571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1, matchResult.start()); 5572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(2, matchResult.end()); 5573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("123 test\n "); 5575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int value = s.nextInt(); 5576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(123, value); 5577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.nextLine(); 5579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(" test", result); 5580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("test\n "); 5582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.nextLine(); 5583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("test", result); 5584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Regression test for Harmony-4774 5586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes class CountReadable implements Readable { 5587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int counter = 0; 5588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public int read(CharBuffer charBuffer) throws IOException { 5589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes counter++; 5590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes charBuffer.append("hello\n"); 5591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return 6; 5592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes CountReadable cr = new CountReadable(); 5595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(cr); 5596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.nextLine(); 5597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // We expect read() to be called only once, otherwise we see the problem 5598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // when reading from System.in described in Harmony-4774 5599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1, cr.counter); 5600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("hello", result); 5601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 5604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Scanner#hasNextLine() 5605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 5606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_hasNextLine() { 5607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(""); 5608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.close(); 5609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 5610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s.hasNextLine(); 5611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw IllegalStateException"); 5612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalStateException e) { 5613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 5614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("test\r\ntest"); 5617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean result = s.hasNextLine(); 5618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(result); 5619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MatchResult matchResult = s.match(); 5620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, matchResult.start()); 5621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(6, matchResult.end()); 5622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("\u0085"); 5624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.hasNextLine(); 5625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(result); 5626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes matchResult = s.match(); 5627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, matchResult.start()); 5628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1, matchResult.end()); 5629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("\u2028"); 5631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.hasNextLine(); 5632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(result); 5633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes matchResult = s.match(); 5634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, matchResult.start()); 5635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1, matchResult.end()); 5636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("\u2029"); 5638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.hasNextLine(); 5639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(result); 5640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes matchResult = s.match(); 5641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, matchResult.start()); 5642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1, matchResult.end()); 5643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("test\n"); 5645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLine()); 5646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes matchResult = s.match(); 5647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, matchResult.start()); 5648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(5, matchResult.end()); 5649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes char[] chars = new char[2048]; 5651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Arrays.fill(chars, 'a'); 5652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes StringBuilder stringBuilder = new StringBuilder(); 5653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes stringBuilder.append(chars); 5654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner(stringBuilder.toString()); 5655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = s.hasNextLine(); 5656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(result); 5657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes matchResult = s.match(); 5659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, matchResult.start()); 5660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(2048, matchResult.end()); 5661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s = new Scanner("\n\n\n"); 5663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLine()); 5664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes matchResult = s.match(); 5665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, matchResult.start()); 5666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1, matchResult.end()); 5667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The scanner will not advance any input. 5669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(s.hasNextLine()); 5670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes matchResult = s.match(); 5671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, matchResult.start()); 5672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1, matchResult.end()); 5673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_hasNextLine_sequence() throws IOException { 5676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes final PipedInputStream pis = new PipedInputStream(); 5677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes final PipedOutputStream pos = new PipedOutputStream(); 5678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes final Scanner scanner = new Scanner(pis); 5679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes pis.connect(pos); 5680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes final List<String> result = new ArrayList<String>(); 5681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Thread thread = new Thread(new Runnable() { 5682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void run() { 5683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (scanner.hasNextLine()) { 5684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result.add(scanner.nextLine()); 5685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5686561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }); 5688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes thread.start(); 5689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int index = 0; index < 5; index++) { 5690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes pos.write(("line" + index + "\n").getBytes()); 5691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes pos.flush(); 5692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 5693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Thread.sleep(1000); 5694561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InterruptedException e) { 5695561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Ignored 5696561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5697561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(index + 1, result.size()); 5698561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5699561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes pis.close(); 5700561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes pos.close(); 5701561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 5702561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes thread.join(1000); 5703561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InterruptedException e) { 5704561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Ignored 5705561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5706561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(scanner.hasNextLine()); 5707561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5708561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5709561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes protected void setUp() throws Exception { 5710561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super.setUp(); 5711561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5712561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes server = new ServerSocket(0); 5713561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes address = new InetSocketAddress("127.0.0.1", server.getLocalPort()); 5714561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5715561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client = SocketChannel.open(); 5716561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client.connect(address); 5717561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes serverSocket = server.accept(); 5718561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5719561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes os = serverSocket.getOutputStream(); 5720561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5721561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5722561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes protected void tearDown() throws Exception { 5723561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super.tearDown(); 5724561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5725561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 5726561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes serverSocket.close(); 5727561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Exception e) { 5728561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5729561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5730561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 5731561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes client.close(); 5732561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Exception e) { 5733561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // do nothing 5734561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5735561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 5736561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes server.close(); 5737561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Exception e) { 5738561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // do nothing 5739561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5740561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 5741561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 5742