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