1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* Licensed to the Apache Software Foundation (ASF) under one or more
2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * contributor license agreements.  See the NOTICE file distributed with
3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * this work for additional information regarding copyright ownership.
4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0
5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * (the "License"); you may not use this file except in compliance with
6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the License.  You may obtain a copy of the License at
7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *
8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *     http://www.apache.org/licenses/LICENSE-2.0
9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *
10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * See the License for the specific language governing permissions and
14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * limitations under the License.
15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */
16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage tests.api.java.util;
17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetNew;
19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargets;
20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestLevel;
21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetClass;
22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.KnownFailure;
23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.Closeable;
25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.EOFException;
26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.File;
27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.FileNotFoundException;
28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.FileOutputStream;
29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.IOException;
30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.InputStream;
31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.OutputStream;
32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.PipedInputStream;
33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.StringReader;
34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.math.BigDecimal;
35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.math.BigInteger;
36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.net.InetSocketAddress;
37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.net.ServerSocket;
38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.net.Socket;
39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.net.SocketAddress;
40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.nio.CharBuffer;
41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.nio.channels.FileChannel;
42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.nio.channels.ReadableByteChannel;
43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.nio.channels.ServerSocketChannel;
44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.nio.channels.SocketChannel;
45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.nio.charset.Charset;
46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.Arrays;
47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.InputMismatchException;
48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.Locale;
49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.NoSuchElementException;
50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.Scanner;
51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.regex.MatchResult;
52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.regex.Pattern;
53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
548ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabotimport tests.support.Support_Locale;
55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport tests.support.Support_PortManager;
56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport junit.framework.TestCase;
58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project@TestTargetClass(Scanner.class)
60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic class ScannerTest extends TestCase {
6156176a05205eaf469469c26988e99077aed0d7e7Brett Chabot    static final boolean disableRIBugs = false;
62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    private Scanner s;
64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    private ServerSocket server;
66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    private SocketAddress address;
68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    private SocketChannel client;
70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    private Socket serverSocket;
72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    private OutputStream os;
74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    private static class MockCloseable implements Closeable, Readable {
76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        public void close() throws IOException {
78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            throw new IOException();
79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        public int read(CharBuffer cb) throws IOException {
82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            throw new EOFException();
83f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#Scanner(File)
89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "Scanner",
94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.io.File.class}
95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_ConstructorLjava_io_File() throws IOException {
97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        File tmpFile = File.createTempFile("TestFileForScanner", ".tmp");
98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(tmpFile);
99f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertNotNull(s);
100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(tmpFile.delete());
102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s = new Scanner(tmpFile);
105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw FileNotFoundException");
106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (FileNotFoundException e) {
107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        tmpFile = File.createTempFile("TestFileForScanner", ".tmp");
111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        FileOutputStream fos = new FileOutputStream(tmpFile);
112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        fos.write("test".getBytes());
113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(tmpFile);
115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        tmpFile.delete();
116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Scanner(File = null)
118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s = new Scanner((File) null);
120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NullPointerException");
121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException e) {
122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // TODO: test if the default charset is used.
126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#Scanner(File, String)
130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "Scanner",
135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.io.File.class, java.lang.String.class}
136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_ConstructorLjava_io_FileLjava_lang_String()
138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            throws IOException {
139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        File tmpFile = File.createTempFile("TestFileForScanner", ".tmp");
140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(tmpFile, Charset.defaultCharset().name());
141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertNotNull(s);
142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(tmpFile.delete());
144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s = new Scanner(tmpFile, Charset.defaultCharset().name());
147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw FileNotFoundException");
148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (FileNotFoundException e) {
149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s = new Scanner(tmpFile, null);
154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw FileNotFoundException");
155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (FileNotFoundException e) {
156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        tmpFile = File.createTempFile("TestFileForScanner", ".tmp");
160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s = new Scanner(tmpFile, "invalid charset");
162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw IllegalArgumentException");
163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalArgumentException e) {
164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        //fail on RI. File is opened but not closed when exception is thrown on
168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // RI.
169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(tmpFile.delete());
170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Scanner(File = null, Charset = null)
172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s = new Scanner((File) null, null);
174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NullPointerException");
175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException e) {
176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Scanner(File = null, Charset = UTF-8)
180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s = new Scanner((File) null, "UTF-8");
182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NullPointerException");
183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException e) {
184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Scanner(File = null, Charset = invalid)
188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s = new Scanner((File) null, "invalid");
190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NullPointerException");
191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException e) {
192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Scanner(File, Charset = null)
196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            File f = File.createTempFile("test", ".tmp");
198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s = new Scanner(f, null);
199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw IllegalArgumentException");
200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalArgumentException e) {
201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // TODO: test if the specified charset is used.
205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#Scanner(InputStream)
209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "Scanner",
214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.io.InputStream.class}
215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_ConstructorLjava_io_InputStream() {
217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(new PipedInputStream());
218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertNotNull(s);
219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Scanner(InputStream)
222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s = new Scanner((InputStream) null);
224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NullPointerException");
225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException e) {
226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // TODO: test if the default charset is used.
230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#Scanner(InputStream, String)
234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "Scanner",
239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.io.InputStream.class, java.lang.String.class}
240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_ConstructorLjava_io_InputStreamLjava_lang_String() {
242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(new PipedInputStream(), Charset.defaultCharset().name());
243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertNotNull(s);
244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s = new Scanner((PipedInputStream) null, "invalid charset");
248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw NullPointerException");
249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException e) {
250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s = new Scanner(new PipedInputStream(), null);
255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw NullPointerException");
256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException e) {
257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s = new Scanner(new PipedInputStream(), "invalid charset");
262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw IllegalArgumentException");
263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalArgumentException e) {
264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // TODO: test if the specified charset is used.
268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#Scanner(Readable)
272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "Scanner",
277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.Readable.class}
278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_ConstructorLjava_lang_Readable() {
280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(new StringReader("test string"));
281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertNotNull(s);
282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Scanner(Readable)
285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s = new Scanner((Readable) null);
287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NullPointerException");
288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException e) {
289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#Scanner(ReadableByteChannel)
295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "Scanner",
300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.nio.channels.ReadableByteChannel.class}
301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_ConstructorLjava_nio_channels_ReadableByteChannel()
303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            throws IOException {
304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        File tmpFile = File.createTempFile("TestFileForScanner", ".tmp");
305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        FileChannel fc = new FileOutputStream(tmpFile).getChannel();
306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(fc);
307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertNotNull(s);
308f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(tmpFile.delete());
310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
311f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Scanner(ReadableByteChannel)
312f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
313f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s = new Scanner((ReadableByteChannel) null);
314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NullPointerException");
315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException e) {
316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
317f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
319f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // TODO: test if the default charset is used.
320f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
321f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
322f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
323f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#Scanner(ReadableByteChannel, String)
324f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
325f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
326f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
327f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
328f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "Scanner",
329f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.nio.channels.ReadableByteChannel.class, java.lang.String.class}
330f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
331f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_ConstructorLjava_nio_channels_ReadableByteChannelLjava_lang_String()
332f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            throws IOException {
333f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        File tmpFile = File.createTempFile("TestFileForScanner", ".tmp");
334f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        FileChannel fc = new FileOutputStream(tmpFile).getChannel();
335f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(fc, Charset.defaultCharset().name());
336f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertNotNull(s);
337f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
338f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
339f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        fc = new FileOutputStream(tmpFile).getChannel();
340f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
341f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s = new Scanner(fc, "invalid charset");
342f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw IllegalArgumentException");
343f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalArgumentException e) {
344f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
345f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
346f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        fc.close();
347f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(tmpFile.delete());
348f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
349f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Scanner(ReadableByteChannel = null, Charset = null)
350f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
351f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s = new Scanner((ReadableByteChannel) null, null);
352f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NullPointerException");
353f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException e) {
354f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
355f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
356f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
357f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Scanner(ReadableByteChannel = null, Charset = invalid)
358f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
359f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s = new Scanner((ReadableByteChannel) null, "invalid");
360f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NullPointerException");
361f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException e) {
362f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
363f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
364f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
365f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Scanner(ReadableByteChannel, Charset = null)
366f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
367f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s = new Scanner(fc, null);
368f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw IllegalArgumentException");
369f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalArgumentException e) {
370f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
371f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
372f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // TODO: test if the specified charset is used.
373f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
374f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
375f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
376f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#Scanner(String)
377f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
378f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
379f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
380f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
381f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "Scanner",
382f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.String.class}
383f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
384f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_ConstructorLjava_lang_String() {
385f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("test string");
386f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertNotNull(s);
387f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
388f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
389f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Scanner(String)
390f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
391f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s = new Scanner((String) null);
392f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NullPointerException");
393f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException e) {
394f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
395f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
396f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
397f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
398f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
399f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#close()
400f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
401f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
402f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
403f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
404f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "close",
405f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
406f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
407f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_close() throws IOException {
408f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        File tmpFile = File.createTempFile("TestFileForScanner", ".tmp");
409f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        FileOutputStream fos = new FileOutputStream(tmpFile);
410f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        FileChannel fc = fos.getChannel();
411f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(fc);
412f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
413f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Write out a int before the scanner is closed, should be OK.
414f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        fos.write(12);
415f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
416f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
417f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(fc.isOpen());
418f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
419f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Write out a int after the scanner is closed, IOException should be
420f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // thrown out.
421f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
422f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fos.write(12);
423f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw IOException");
424f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IOException e) {
425f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
426f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
427f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
428f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close(); // no exception should be thrown
429f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(tmpFile.delete());
430f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
431f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
432f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
433f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#ioException()
434f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
435f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
436f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
437f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
438f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "ioException",
439f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
440f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
441f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_ioException() throws IOException {
442f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        MockCloseable mc = new MockCloseable();
443f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(mc);
444f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertNull(s.ioException()); // No operation, no exception
445f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
446f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close(); // IOException should be cached
447f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertNotNull(s.ioException());
448f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.ioException() instanceof IOException);
449f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
450f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
451f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
452f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#delimiter()
453f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
454f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
455f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
456f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
457f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "delimiter",
458f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
459f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
460f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_delimiter() {
461f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("test");
462f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Pattern pattern = s.delimiter();
463f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("\\p{javaWhitespace}+", pattern.toString());
464f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
465f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
466f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
467f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#useDelimiter(Pattern)
468f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
469f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
470f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
471f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
472f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "useDelimiter",
473f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.util.regex.Pattern.class}
474f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
475f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_useDelimiter_LPattern() {
476f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("test");
477f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useDelimiter(Pattern.compile("\\w+"));
478f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("\\w+", s.delimiter().toString());
479f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
480f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("test");
481f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useDelimiter((Pattern) null);
482f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertNull(s.delimiter());
483f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
484f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
485f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
486f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#useDelimiter(String)
487f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
488f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
489f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
490f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
491f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "useDelimiter",
492f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.String.class}
493f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
494f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_useDelimiter_String() {
495f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("test");
496f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
497f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.useDelimiter((String) null);
498f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NullPointerException");
499f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException e) {
500f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
501f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
502f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
503f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("test");
504f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useDelimiter("\\w+");
505f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("\\w+", s.delimiter().toString());
506f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
507f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
508f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
509f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#locale()
510f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
511f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
512f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
513f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
514f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "locale",
515f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
516f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
517f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_locale() {
518f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("test");
519f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(Locale.getDefault(), s.locale());
520f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
521f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
522f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
523f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#useLocale(Locale)
524f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
525f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
526f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
527f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
528f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "useLocale",
529f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.util.Locale.class}
530f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
531f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_useLocale_LLocale() {
532f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("test");
533f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
534f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.useLocale(null);
535f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NullPointerException");
536f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException e) {
537f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
538f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
539f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
540f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(new Locale("test", "test"));
541f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new Locale("test", "test"), s.locale());
542f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
543f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
544f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
545f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#radix()
546f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
547f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
548f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
549f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
550f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "radix",
551f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
552f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
553f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_radix() {
554f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("test");
555f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(10, s.radix());
556f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
557f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
558f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
559f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#useRadix()
560f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
561f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
562f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
563f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
564f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "useRadix",
565f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {int.class}
566f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
567f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_useRadix_I() {
568f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("test");
569f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
570f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.useRadix(Character.MIN_RADIX - 1);
571f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw IllegalArgumentException");
572f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalArgumentException e) {
573f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
574f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
575f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
576f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.useRadix(Character.MAX_RADIX + 1);
577f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw IllegalArgumentException");
578f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalArgumentException e) {
579f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
580f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
581f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useRadix(11);
582f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(11, s.radix());
583f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
584f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
585f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
586f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#remove()
587f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
588f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
589f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
590f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
591f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "remove",
592f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
593f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
594f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_remove() {
595f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("aab*b*").useDelimiter("\\*");
596f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
597f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.remove();
598f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw UnsupportedOperationException");
599f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (UnsupportedOperationException e) {
600f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            //Expected
601f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
602f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
603f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
604f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
605f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#match()
606f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
607f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
608f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
609f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
610f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "match",
611f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
612f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
613f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_match() {
614f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        MatchResult result ;
615f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("1 2 ");
616f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
617f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.match();
618f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw IllegalStateException");
619f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
620f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
621f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
622f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("1", s.next());
623f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("2", s.next());
624f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.match();
625f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(2, result.start());
626f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(3, result.end());
627f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(2, result.start(0));
628f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(3, result.end(0));
629f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("2", result.group());
630f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("2", result.group(0));
631f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, result.groupCount());
632f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
633f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            result.start(1);
634f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw IndexOutOfBoundsException");
635f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IndexOutOfBoundsException e) {
636f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
637f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
638f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
639f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.next();
640f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw NoSuchElementException");
641f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
642f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
643f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
644f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
645f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.match();
646f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw IllegalStateException");
647f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
648f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
649f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
650f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
651f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("True faLse");
652f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
653f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.match();
654f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw IllegalStateException");
655f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
656f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
657f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
658f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.nextBoolean());
659f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.match();
660f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, result.start());
661f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(4, result.end());
662f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, result.start(0));
663f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(4, result.end(0));
664f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("True", result.group());
665f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, result.groupCount());
666f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.nextBoolean());
667f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
668f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBoolean();
669f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw NoSuchElementException");
670f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
671f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
672f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
673f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
674f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.match();
675f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw IllegalStateException");
676f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
677f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
678f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
679f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
680f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("True faLse");
681f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.nextBoolean());
682f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.match();
683f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, result.start());
684f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(4, result.end());
685f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, result.start(0));
686f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(4, result.end(0));
687f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("True", result.group());
688f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, result.groupCount());
689f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
690f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
691f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBoolean();
692f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw IllegalStateException");
693f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
694f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
695f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
696f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.match();
697f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, result.start());
698f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(4, result.end());
699f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, result.start(0));
700f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(4, result.end(0));
701f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("True", result.group());
702f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, result.groupCount());
703f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
704f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("True fase");
705f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.nextBoolean());
706f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, result.groupCount());
707f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
708f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBoolean();
709f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
710f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
711f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
712f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
713f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
714f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.match();
715f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw IllegalStateException");
716f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
717f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
718f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
719f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
720f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("True fase");
721f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.nextBoolean());
722f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
723f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.next((Pattern)null);
724f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NullPointerException");
725f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException e) {
726f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
727f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
728f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.match();
729f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, result.start());
730f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(4, result.end());
731f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, result.start(0));
732f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(4, result.end(0));
733f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("True", result.group());
734f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, result.groupCount());
735f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
736f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
737f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
738f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
739f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws IOException
740f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#next()
741f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
742f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
743f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
744f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
745f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "next",
746f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
747f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
748f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_next() throws IOException {
749f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // use special delimiter
750f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("1**2").useDelimiter("\\*");
751f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("1", s.next());
752f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("", s.next());
753f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("2", s.next());
754f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
755f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(" \t 1 \t 2").useDelimiter("\\s*");
756f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("1", s.next());
757f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("2", s.next());
758f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
759f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.next();
760f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw NoSuchElementException");
761f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
762f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
763f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
764f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
765f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("a").useDelimiter("a?");
766f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
767f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.next();
768f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw NoSuchElementException");
769f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
770f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
771f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
772f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
773f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("aa").useDelimiter("a?");
774f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("", s.next());
775f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
776f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.next();
777f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw NoSuchElementException");
778f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
779f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
780f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
781f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
782f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
783f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("word( )test( )").useDelimiter("\\( \\)");
784f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("word", s.next());
785f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("test", s.next());
786f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
787f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("? next  ").useDelimiter("( )");
788f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("?", s.next());
789f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("next", s.next());
790f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("", s.next());
791f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
792f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("word1 word2  ");
793f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("word1", s.next());
794f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("word2", s.next());
795f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // test boundary case
796f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
797f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.next();
798f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw NoSuchElementException");
799f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
800f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
801f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
802f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
803f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // just delimiter exists in this scanner
804f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(" ");
805f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
806f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.next();
807f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NoSuchElementException");
808f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
809f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
810f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
811f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
812f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // nothing exists in this scanner
813f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("");
814f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
815f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.next();
816f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NoSuchElementException");
817f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
818f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
819f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
820f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
821f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // no delimiter exists in this scanner
822f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("test");
823f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("test", s.next());
824f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
825f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // input resourse starts with delimiter
826f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("  test");
827f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("test", s.next());
828f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
829f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // input resource ends with delimiter
830f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("  test  ");
831f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("test", s.next());
832f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
833f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Harmony uses 1024 as default buffer size,
834f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // What if a sentence can not be read in all in once.
835f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        StringBuilder longSentence = new StringBuilder(1025);
836f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        for (int i = 0; i < 11; i++) {
837f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            longSentence.append(" ");
838f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
839f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        for (int i = 11; i < 1026; i++) {
840f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            longSentence.append("a");
841f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
842f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(longSentence.toString());
843f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(longSentence.toString().trim(), s.next());
844f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
845f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(" test test");
846f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("test", s.next());
847f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("test", s.next());
848f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
849f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // What if use a delimiter of length 0.
850f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("test\ntest").useDelimiter(Pattern.compile("^",
851f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                Pattern.MULTILINE));
852f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("test\n", s.next());
853f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("test", s.next());
854f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
855f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("").useDelimiter(Pattern.compile("^",
856f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                Pattern.MULTILINE));
857f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
858f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.next();
859f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw NoSuchElementException");
860f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
861f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
862f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
863f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
864f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("").useDelimiter(Pattern.compile("^*",
865f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                Pattern.MULTILINE));
866f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
867f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.next();
868f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw NoSuchElementException");
869f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
870f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
871f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
872f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
873f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("test\ntest").useDelimiter(Pattern.compile("^*",
874f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                Pattern.MULTILINE));
875f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("t", s.next());
876f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("e", s.next());
877f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
878f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("\ntest\ntest").useDelimiter(Pattern.compile("$",
879f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                Pattern.MULTILINE));
880f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("\ntest", s.next());
881f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("\ntest", s.next());
882f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
883f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // test socket inputStream
884f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Harmony uses 1024 as default buffer size,
885f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // what if the leading delimiter is larger than 1023
886f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        for (int i = 0; i < 1024; i++) {
887f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            os.write(" ".getBytes());
888f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
889f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        os.write("  1 2 ".getBytes());
890f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(client);
891f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("1", s.next());
892f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("2", s.next());
893f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        os.write("  1 2".getBytes());
894f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        serverSocket.close();
895f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("1", s.next());
896f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("2", s.next());
897f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
898f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.next();
899f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw NoSuchElementException");
900f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
901f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
902f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
903f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
904f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
905f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
906f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.next();
907f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalStateException expected");
908f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
909f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            //expected
910f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
911f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
912f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
913f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
914f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws IOException
915f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#next(Pattern)
916f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
917f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
918f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
919f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
920f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "next",
921f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.util.regex.Pattern.class}
922f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
923f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_nextLPattern() throws IOException {
924f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Pattern pattern;
925f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("aab*2*").useDelimiter("\\*");
926f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        pattern = Pattern.compile("a*b");
927f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("aab", s.next(pattern));
928f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
929f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.next(pattern);
930f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw InputMismatchException");
931f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
932f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
933f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
934f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
935f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("word ? ");
936f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        pattern = Pattern.compile("\\w+");
937f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("word", s.next(pattern));
938f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
939f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.next(pattern);
940f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw InputMismatchException");
941f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
942f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
943f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
944f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
945f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("word1 word2  ");
946f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        pattern = Pattern.compile("\\w+");
947f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("word1", s.next(pattern));
948f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("word2", s.next(pattern));
949f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // test boundary case
950f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
951f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.next(pattern);
952f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw NoSuchElementException");
953f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
954f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
955f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
956f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
957f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // test socket inputStream
958f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
959f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        os.write("aab 2".getBytes());
960f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        serverSocket.close();
961f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
962f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(client);
963f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        pattern = Pattern.compile("a*b");
964f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("aab", s.next(pattern));
965f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
966f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.next(pattern);
967f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw InputMismatchException");
968f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
969f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
970f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
971f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
972f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
973f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
974f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.next(pattern);
975f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalStateException expected");
976f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
977f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            //expected
978f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
979f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
980f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
981f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
982f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws IOException
983f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#next(String)
984f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
985f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
986f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
987f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
988f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "next",
989f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.String.class}
990f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
991f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_nextLString() throws IOException {
992f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("b*a*").useDelimiter("\\*");
993f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("b", s.next("a*b"));
994f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
995f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.next("a*b");
996f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw InputMismatchException");
997f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
998f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
999f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1000f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1001f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("word ? ");
1002f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("word", s.next("\\w+"));
1003f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1004f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.next("\\w+");
1005f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw InputMismatchException");
1006f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
1007f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
1008f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1009f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1010f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("word1 next  ");
1011f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("word1", s.next("\\w+"));
1012f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("next", s.next("\\w+"));
1013f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // test boundary case
1014f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1015f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.next("\\w+");
1016f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw NoSuchElementException");
1017f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
1018f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
1019f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1020f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1021f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // test socket inputStream
1022f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        os.write("aab 2".getBytes());
1023f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        serverSocket.close();
1024f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1025f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(client);
1026f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("aab", s.next("a*b"));
1027f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1028f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.next("a*b");
1029f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw InputMismatchException");
1030f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
1031f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
1032f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1033f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1034f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
1035f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1036f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.next("a*b");
1037f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalStateException expected");
1038f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
1039f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            //expected
1040f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1041f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
1042f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1043f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
1044f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws IOException
1045f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#nextBoolean()
1046f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
1047f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
1048f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
1049f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
1050f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "nextBoolean",
1051f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
1052f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
1053f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_nextBoolean() throws IOException {
1054f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // case insensitive
1055f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("TRue");
1056f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.nextBoolean());
1057f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1058f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("tRue false");
1059f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.nextBoolean());
1060f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.nextBoolean());
1061f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1062f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBoolean();
1063f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NoSuchElementException");
1064f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
1065f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
1066f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1067f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1068f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("true1");
1069f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1070f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBoolean();
1071f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
1072f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
1073f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
1074f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1075f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1076f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1077f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s = new Scanner("");
1078f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBoolean();
1079f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NoSuchElementException");
1080f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
1081f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
1082f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1083f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1084f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // test socket inputStream
1085f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        os.write("true false".getBytes());
1086f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        serverSocket.close();
1087f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1088f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(client);
1089f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.nextBoolean());
1090f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.nextBoolean());
1091f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1092f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // ues '*' as delimiter
1093f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("true**false").useDelimiter("\\*");
1094f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.nextBoolean());
1095f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1096f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBoolean();
1097f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw NoSuchElementException");
1098f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
1099f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
1100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("false( )").useDelimiter("\\( \\)");
1103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.nextBoolean());
1104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
1106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBoolean();
1108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalStateException expected");
1109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
1110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            //expected
1111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
1113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
1115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws IOException
1116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#nextInt(int)
1117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
1118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
1119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
1120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
1121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "nextInt",
1122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {int.class}
1123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
1124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_nextIntI() throws IOException {
11258ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        Locale[] requiredLocales = {Locale.GERMANY, Locale.ENGLISH, Locale.CHINESE};
11268ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
11278ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot            // locale dependent test, bug 1943269
11288ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot            return;
11298ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        }
1130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 456");
1131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(123, s.nextInt(10));
1132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(456, s.nextInt(10));
1133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextInt(10);
1135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NoSuchElementException");
1136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
1137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
1138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If the radix is different from 10
1141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 456");
1142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(38, s.nextInt(5));
1143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextInt(5);
1145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
1146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
1147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
1148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If the number is out of range
1151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123456789123456789123456789123456789");
1152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextInt(10);
1154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
1155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
1156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
1157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
1160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * Different locale can only recognize corresponding locale sensitive
1161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * string. ',' is used in many locales as group separator.
1162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
1163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23,456 23,456");
1164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
1165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextInt(10);
1167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
1168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
1169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
1170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
1172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If exception is thrown out, input will not be advanced.
1173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextInt(10));
1174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextInt(10));
1175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
1177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * ''' is used in many locales as group separator.
1178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
1179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23'456 23'456");
1180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
1181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextInt(10);
1183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
1184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
1185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
1186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(new Locale("de", "CH"));
1188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If exception is thrown out, input will not be advanced.
1189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextInt(10));
1190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextInt(10));
1191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
1193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * The input string has Arabic-Indic digits.
1194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
1195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("1\u06602 1\u06662");
1196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(102, s.nextInt(10));
1197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextInt(5);
1199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
1200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
1201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
1202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(162, s.nextInt(10));
1204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
1206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * '.' is used in many locales as group separator. The input string
1207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * has Arabic-Indic digits .
1208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
1209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23.45\u0666 23.456");
1210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
1211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextInt(10);
1213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
1214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
1215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
1216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
1218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If exception is thrown out, input will not be advanced.
1219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextInt(10));
1220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextInt(10));
1221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // The input string starts with zero
1223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("03,456");
1224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
1225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextInt(10);
1227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
1228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
1229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
1230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("03456");
1233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(3456, s.nextInt(10));
1234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("\u06603,456");
1236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
1237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(3456, s.nextInt(10));
1238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("E3456");
1240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(930902, s.nextInt(16));
1241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // The following test case fails on RI, because RI does not support
1242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // letter as leading digit
1243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        if (!disableRIBugs) {
1244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s = new Scanner("E3,456");
1245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.useLocale(Locale.ENGLISH);
1246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertEquals(930902, s.nextInt(16));
1247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
1250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * There are 3 types of zero digit in all locales, '0' '\u0966' '\u0e50'
1251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * respectively, but they are not differentiated.
1252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
1253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("12300");
1254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
1255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(12300, s.nextInt(10));
1256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123\u0966\u0966");
1258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
1259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(12300, s.nextInt(10));
1260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123\u0e50\u0e50");
1262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
1263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(12300, s.nextInt(10));
1264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
1266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * There are three types of negative prefix all in all. '' '-' '(' There
1267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * are three types of negative suffix all in all. '' '-' ')' '(' and ')'
1268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * must be used togethor. Prefix '-' and suffix '-' must be used
1269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * exclusively.
1270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
1271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
1273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * According to Integer regular expression: Integer :: = ( [-+]? (*
1274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * Numeral ) ) | LocalPositivePrefix Numeral LocalPositiveSuffix |
1275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * LocalNegativePrefix Numeral LocalNegativeSuffix 123- should be
1276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * recognized by scanner with locale ar_AE, (123) shouble be recognized
1277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * by scanner with locale mk_MK. But this is not the case on RI.
1278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
1279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123 123- -123-");
1280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(new Locale("ar", "AE"));
1281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-123, s.nextInt(10));
1282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // The following test case fails on RI
1283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        if (!disableRIBugs) {
1284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertEquals(-123, s.nextInt(10));
1285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextInt(10);
1288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
1289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
1290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
1291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
129356176a05205eaf469469c26988e99077aed0d7e7Brett Chabot        // locale dependent test, bug 1943269
129456176a05205eaf469469c26988e99077aed0d7e7Brett Chabot        if (Support_Locale.areLocalesAvailable(new Locale[] { new Locale("mk", "MK")})) {
129556176a05205eaf469469c26988e99077aed0d7e7Brett Chabot            s = new Scanner("-123 123- (123)");
129656176a05205eaf469469c26988e99077aed0d7e7Brett Chabot            s.useLocale(new Locale("mk", "MK"));
1297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertEquals(-123, s.nextInt(10));
1298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            try {
129956176a05205eaf469469c26988e99077aed0d7e7Brett Chabot                s.nextInt();
130056176a05205eaf469469c26988e99077aed0d7e7Brett Chabot                fail("Should throw InputMismatchException");
130156176a05205eaf469469c26988e99077aed0d7e7Brett Chabot            } catch (InputMismatchException e) {
130256176a05205eaf469469c26988e99077aed0d7e7Brett Chabot                // expected
1303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
130456176a05205eaf469469c26988e99077aed0d7e7Brett Chabot            // Skip the un-recognizable token 123-.
130556176a05205eaf469469c26988e99077aed0d7e7Brett Chabot            assertEquals("123-", s.next());
130656176a05205eaf469469c26988e99077aed0d7e7Brett Chabot            // The following test case fails on RI
130756176a05205eaf469469c26988e99077aed0d7e7Brett Chabot            if (!disableRIBugs) {
130856176a05205eaf469469c26988e99077aed0d7e7Brett Chabot                assertEquals(-123, s.nextInt(10));
130956176a05205eaf469469c26988e99077aed0d7e7Brett Chabot
131056176a05205eaf469469c26988e99077aed0d7e7Brett Chabot            // If the parameter radix is illegal, the following test cases fail on
131156176a05205eaf469469c26988e99077aed0d7e7Brett Chabot            // RI
131256176a05205eaf469469c26988e99077aed0d7e7Brett Chabot                try {
131356176a05205eaf469469c26988e99077aed0d7e7Brett Chabot                    s.nextInt(Character.MIN_RADIX - 1);
131456176a05205eaf469469c26988e99077aed0d7e7Brett Chabot                    fail("Should throw IllegalArgumentException");
131556176a05205eaf469469c26988e99077aed0d7e7Brett Chabot                } catch (IllegalArgumentException e) {
131656176a05205eaf469469c26988e99077aed0d7e7Brett Chabot                    // Expected
131756176a05205eaf469469c26988e99077aed0d7e7Brett Chabot                }
131856176a05205eaf469469c26988e99077aed0d7e7Brett Chabot                try {
131956176a05205eaf469469c26988e99077aed0d7e7Brett Chabot                    s.nextInt(Character.MAX_RADIX + 1);
132056176a05205eaf469469c26988e99077aed0d7e7Brett Chabot                    fail("Should throw IllegalArgumentException");
132156176a05205eaf469469c26988e99077aed0d7e7Brett Chabot                } catch (IllegalArgumentException e) {
132256176a05205eaf469469c26988e99077aed0d7e7Brett Chabot                    // Expected
132356176a05205eaf469469c26988e99077aed0d7e7Brett Chabot                }
1324f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
1325f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1326f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1327f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
1328f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1329f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextInt(10);
1330f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalStateException expected");
1331f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
1332f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            //expected
1333f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1334f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
1335f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1336f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
1337f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws IOException
1338f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#nextInt()
1339f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
1340f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
1341f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
1342f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
1343f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "nextInt",
1344f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
1345f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
1346f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_nextInt() throws IOException {
13478ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        Locale[] requiredLocales = {Locale.GERMANY, Locale.CHINESE, Locale.ENGLISH};
13488ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
13498ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot            // locale dependent test, bug 1943269
13508ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot            return;
13518ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        }
1352f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 456");
1353f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(123, s.nextInt());
1354f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(456, s.nextInt());
1355f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1356f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextInt();
1357f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NoSuchElementException");
1358f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
1359f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
1360f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1361f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1362f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If the radix is different from 10
1363f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 456");
1364f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useRadix(5);
1365f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(38, s.nextInt());
1366f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1367f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextInt();
1368f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
1369f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
1370f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
1371f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1372f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1373f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If the number is out of range
1374f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123456789123456789123456789123456789");
1375f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1376f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextInt();
1377f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
1378f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
1379f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
1380f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1381f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1382f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
1383f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * Different locale can only recognize corresponding locale sensitive
1384f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * string. ',' is used in many locales as group separator.
1385f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
1386f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23,456 23,456");
1387f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
1388f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1389f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextInt();
1390f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
1391f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
1392f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
1393f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1394f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
1395f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If exception is thrown out, input will not be advanced.
1396f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextInt());
1397f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextInt());
1398f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1399f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
1400f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * ''' is used in many locales as group separator.
1401f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
1402f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23'456 23'456");
1403f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
1404f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1405f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextInt();
1406f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
1407f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
1408f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
1409f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1410f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(new Locale("de", "CH"));
1411f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If exception is thrown out, input will not be advanced.
1412f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextInt());
1413f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextInt());
1414f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1415f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
1416f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * The input string has Arabic-Indic digits.
1417f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
1418f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("1\u06602 1\u06662");
1419f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(102, s.nextInt());
1420f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useRadix(5);
1421f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1422f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextInt();
1423f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
1424f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
1425f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
1426f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1427f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useRadix(10);
1428f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(162, s.nextInt());
1429f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1430f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
1431f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * '.' is used in many locales as group separator. The input string
1432f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * has Arabic-Indic digits .
1433f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
1434f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23.45\u0666 23.456");
1435f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
1436f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1437f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextInt();
1438f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
1439f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
1440f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
1441f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1442f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
1443f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If exception is thrown out, input will not be advanced.
1444f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextInt());
1445f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextInt());
1446f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1447f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // The input string starts with zero
1448f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("03,456");
1449f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
1450f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1451f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextInt();
1452f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
1453f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
1454f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
1455f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1456f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1457f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("03456");
1458f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(3456, s.nextInt());
1459f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1460f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("\u06603,456");
1461f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
1462f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(3456, s.nextInt());
1463f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1464f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("E3456");
1465f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useRadix(16);
1466f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(930902, s.nextInt());
1467f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1468f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // The following test case fails on RI, because RI does not support
1469f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // letter as leading digit
1470f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("E3,456");
1471f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
1472f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useRadix(16);
1473f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        if (!disableRIBugs) {
1474f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertEquals(930902, s.nextInt());
1475f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1476f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1477f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
1478f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * There are 3 types of zero digit in all locales, '0' '\u0966' '\u0e50'
1479f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * respectively, but they are not differentiated.
1480f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
1481f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("12300");
1482f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
1483f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(12300, s.nextInt());
1484f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1485f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123\u0966\u0966");
1486f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
1487f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(12300, s.nextInt());
1488f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1489f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123\u0e50\u0e50");
1490f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
1491f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(12300, s.nextInt());
1492f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1493f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
1494f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * There are three types of negative prefix all in all. '' '-' '(' There
1495f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * are three types of negative suffix all in all. '' '-' ')' '(' and ')'
1496f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * must be used togethor. Prefix '-' and suffix '-' must be used
1497f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * exclusively.
1498f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
1499f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1500f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
1501f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * According to Integer regular expression: Integer :: = ( [-+]? (*
1502f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * Numeral ) ) | LocalPositivePrefix Numeral LocalPositiveSuffix |
1503f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * LocalNegativePrefix Numeral LocalNegativeSuffix 123- should be
1504f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * recognized by scanner with locale ar_AE, (123) shouble be recognized
1505f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * by scanner with locale mk_MK. But this is not the case on RI.
1506f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
1507f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123 123- -123-");
1508f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(new Locale("ar", "AE"));
1509f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-123, s.nextInt());
1510f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // The following test case fails on RI
1511f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        if (!disableRIBugs) {
1512f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertEquals(-123, s.nextInt());
1513f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1514f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1515f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextInt();
1516f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
1517f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
1518f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
1519f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1520f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
152156176a05205eaf469469c26988e99077aed0d7e7Brett Chabot        // locale dependent test, bug 1943269
152256176a05205eaf469469c26988e99077aed0d7e7Brett Chabot        if (Support_Locale.areLocalesAvailable(new Locale[] { new Locale("mk", "MK")})) {
152356176a05205eaf469469c26988e99077aed0d7e7Brett Chabot            s = new Scanner("-123 123- (123)");
152456176a05205eaf469469c26988e99077aed0d7e7Brett Chabot            s.useLocale(new Locale("mk", "MK"));
1525f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertEquals(-123, s.nextInt());
152656176a05205eaf469469c26988e99077aed0d7e7Brett Chabot            try {
152756176a05205eaf469469c26988e99077aed0d7e7Brett Chabot                s.nextInt();
152856176a05205eaf469469c26988e99077aed0d7e7Brett Chabot                fail("Should throw InputMismatchException");
152956176a05205eaf469469c26988e99077aed0d7e7Brett Chabot            } catch (InputMismatchException e) {
153056176a05205eaf469469c26988e99077aed0d7e7Brett Chabot                // expected
153156176a05205eaf469469c26988e99077aed0d7e7Brett Chabot            }
153256176a05205eaf469469c26988e99077aed0d7e7Brett Chabot            // Skip the un-recognizable token 123-.
153356176a05205eaf469469c26988e99077aed0d7e7Brett Chabot            assertEquals("123-", s.next());
153456176a05205eaf469469c26988e99077aed0d7e7Brett Chabot            // The following test case fails on RI
153556176a05205eaf469469c26988e99077aed0d7e7Brett Chabot            if (!disableRIBugs) {
153656176a05205eaf469469c26988e99077aed0d7e7Brett Chabot                assertEquals(-123, s.nextInt());
153756176a05205eaf469469c26988e99077aed0d7e7Brett Chabot            }
1538f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1539f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1540f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
1541f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1542f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextInt();
1543f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalStateException expected");
1544f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
1545f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            //expected
1546f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1547f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
1548f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1549f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
1550f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws IOException
1551f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#nextByte(int)
1552f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
1553f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
1554f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
1555f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
1556f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "nextByte",
1557f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {int.class}
1558f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
1559f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_nextByteI() throws IOException {
1560f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 126");
1561f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(123, s.nextByte(10));
1562f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(126, s.nextByte(10));
1563f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1564f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextByte(10);
1565f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NoSuchElementException");
1566f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
1567f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
1568f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1569f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1570f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If the radix is different from 10
1571f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 126");
1572f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(38, s.nextByte(5));
1573f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1574f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextByte(5);
1575f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
1576f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
1577f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
1578f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1579f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1580f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If the number is out of range
1581f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("1234");
1582f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1583f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextByte(10);
1584f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
1585f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
1586f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
1587f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1588f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1589f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
1590f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * The input string has Arabic-Indic digits.
1591f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
1592f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("1\u06602 12\u0666");
1593f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(102, s.nextByte(10));
1594f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1595f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextByte(5);
1596f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
1597f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
1598f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
1599f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1600f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(126, s.nextByte(10));
1601f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1602f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("012");
1603f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(12, s.nextByte(10));
1604f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1605f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("E");
1606f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(14, s.nextByte(16));
1607f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1608f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
1609f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * There are 3 types of zero digit in all locales, '0' '\u0966' '\u0e50'
1610f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * respectively, but they are not differentiated.
1611f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
1612f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("100");
1613f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
1614f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(100, s.nextByte(10));
1615f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1616f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("1\u0966\u0966");
1617f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
1618f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(100, s.nextByte(10));
1619f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1620f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("1\u0e50\u0e50");
1621f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
1622f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(100, s.nextByte(10));
1623f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1624f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123");
1625f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(new Locale("ar", "AE"));
1626f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-123, s.nextByte(10));
1627f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1628f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1629f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123");
1630f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(new Locale("mk", "MK"));
1631f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-123, s.nextByte(10));
1632f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1633f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
1634f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1635f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextByte(10);
1636f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalStateException expected");
1637f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
1638f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            //expected
1639f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1640f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
1641f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1642f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
1643f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws IOException
1644f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#nextByte()
1645f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
1646f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
1647f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
1648f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
1649f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "nextByte",
1650f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
1651f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
1652f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_nextByte() throws IOException {
1653f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 126");
1654f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(123, s.nextByte());
1655f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(126, s.nextByte());
1656f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1657f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextByte();
1658f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NoSuchElementException");
1659f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
1660f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
1661f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1662f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1663f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If the radix is different from 10
1664f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 126");
1665f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useRadix(5);
1666f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(38, s.nextByte());
1667f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1668f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextByte();
1669f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
1670f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
1671f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
1672f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1673f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1674f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If the number is out of range
1675f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("1234");
1676f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1677f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextByte();
1678f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
1679f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
1680f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
1681f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1682f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1683f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
1684f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * The input string has Arabic-Indic digits.
1685f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
1686f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("1\u06602 12\u0666");
1687f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(102, s.nextByte());
1688f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useRadix(5);
1689f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1690f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextByte();
1691f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
1692f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
1693f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
1694f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1695f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useRadix(10);
1696f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(126, s.nextByte());
1697f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1698f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("012");
1699f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(12, s.nextByte());
1700f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1701f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("E");
1702f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useRadix(16);
1703f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(14, s.nextByte());
1704f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1705f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
1706f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * There are 3 types of zero digit in all locales, '0' '\u0966' '\u0e50'
1707f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * respectively, but they are not differentiated.
1708f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
1709f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("100");
1710f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
1711f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(100, s.nextByte());
1712f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1713f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("1\u0966\u0966");
1714f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
1715f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(100, s.nextByte());
1716f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1717f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("1\u0e50\u0e50");
1718f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
1719f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(100, s.nextByte());
1720f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1721f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123");
1722f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(new Locale("ar", "AE"));
1723f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-123, s.nextByte());
1724f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1725f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123");
1726f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(new Locale("mk", "MK"));
1727f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-123, s.nextByte());
1728f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1729f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
1730f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1731f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextByte();
1732f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalStateException expected");
1733f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
1734f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            //expected
1735f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1736f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
1737f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1738f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
1739f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws IOException
1740f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#nextFloat()
1741f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
1742f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
1743f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
1744f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
1745f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "nextFloat",
1746f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
1747f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
1748f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_nextFloat() throws IOException {
17498ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        Locale[] requiredLocales = {Locale.ENGLISH, Locale.GERMANY};
17508ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
17518ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot            // locale dependent test, bug 1943269
17528ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot            return;
17538ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        }
1754f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 45\u0666. 123.4 .123 ");
1755f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
1756f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals((float)123.0, s.nextFloat());
1757f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals((float)456.0, s.nextFloat());
1758f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals((float)123.4, s.nextFloat());
1759f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals((float)0.123, s.nextFloat());
1760f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1761f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextFloat();
1762f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NoSuchElementException");
1763f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
1764f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
1765f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1766f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1767f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("+123.4 -456.7 123,456.789 0.1\u06623,4");
1768f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
1769f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals((float)123.4, s.nextFloat());
1770f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals((float)-456.7, s.nextFloat());
1771f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals((float)123456.789, s.nextFloat());
1772f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1773f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextFloat();
1774f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
1775f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
1776f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
1777f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1778f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1779f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Scientific notation
1780f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("+123.4E10 -456.7e+12 123,456.789E-10");
1781f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
1782f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals((float)1.234E12, s.nextFloat());
1783f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals((float)-4.567E14, s.nextFloat());
1784f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals((float)1.23456789E-5, s.nextFloat());
1785f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1786f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("NaN Infinity -Infinity");
1787f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(Float.NaN, s.nextFloat());
1788f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(Float.POSITIVE_INFINITY, s.nextFloat());
1789f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(Float.NEGATIVE_INFINITY, s.nextFloat());
1790f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1791f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        String str=String.valueOf(Float.MAX_VALUE*2);
1792f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s=new Scanner(str);
1793f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(Float.POSITIVE_INFINITY,s.nextFloat());
1794f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1795f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
1796f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * Different locale can only recognize corresponding locale sensitive
1797f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * string. ',' is used in many locales as group separator.
1798f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
1799f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23,456 23,456");
1800f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
1801f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals((float)23456.0, s.nextFloat());
1802f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
1803f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals((float)23.456, s.nextFloat());
1804f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1805f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23.456 23.456");
1806f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
1807f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals((float)23.456, s.nextFloat());
1808f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
1809f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals((float)23456.0, s.nextFloat());
1810f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1811f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23,456.7 23.456,7");
1812f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
1813f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals((float)23456.7, s.nextFloat());
1814f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
1815f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals((float)23456.7, s.nextFloat());
1816f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
181756176a05205eaf469469c26988e99077aed0d7e7Brett Chabot        // locale dependent test, bug 1943269
181856176a05205eaf469469c26988e99077aed0d7e7Brett Chabot        // Note: although "123.4-" is the correct localized form for ar_AE, the
181956176a05205eaf469469c26988e99077aed0d7e7Brett Chabot        // RI only accepts "-123.4".
182056176a05205eaf469469c26988e99077aed0d7e7Brett Chabot        if (false) {
182156176a05205eaf469469c26988e99077aed0d7e7Brett Chabot            s = new Scanner("-123.4 123.4- -123.4-");
182256176a05205eaf469469c26988e99077aed0d7e7Brett Chabot            s.useLocale(new Locale("ar", "AE"));
1823f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertEquals((float)-123.4, s.nextFloat());
182456176a05205eaf469469c26988e99077aed0d7e7Brett Chabot            //The following test case fails on RI
182556176a05205eaf469469c26988e99077aed0d7e7Brett Chabot            if (!disableRIBugs) {
182656176a05205eaf469469c26988e99077aed0d7e7Brett Chabot                assertEquals((float)-123.4, s.nextFloat());
182756176a05205eaf469469c26988e99077aed0d7e7Brett Chabot            }
182856176a05205eaf469469c26988e99077aed0d7e7Brett Chabot            try {
182956176a05205eaf469469c26988e99077aed0d7e7Brett Chabot                s.nextFloat();
183056176a05205eaf469469c26988e99077aed0d7e7Brett Chabot                fail("Should throw InputMismatchException");
183156176a05205eaf469469c26988e99077aed0d7e7Brett Chabot            } catch (InputMismatchException e) {
183256176a05205eaf469469c26988e99077aed0d7e7Brett Chabot                // Expected
183356176a05205eaf469469c26988e99077aed0d7e7Brett Chabot            }
1834f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1835f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
183656176a05205eaf469469c26988e99077aed0d7e7Brett Chabot        // locale dependent test, bug 1943269
183756176a05205eaf469469c26988e99077aed0d7e7Brett Chabot        if (Support_Locale.areLocalesAvailable(new Locale[] { new Locale("mk", "MK") })) {
183856176a05205eaf469469c26988e99077aed0d7e7Brett Chabot            s = new Scanner("(123) 123- -123");
183956176a05205eaf469469c26988e99077aed0d7e7Brett Chabot            s.useLocale(new Locale("mk", "MK"));
184056176a05205eaf469469c26988e99077aed0d7e7Brett Chabot            if (!disableRIBugs) {
184156176a05205eaf469469c26988e99077aed0d7e7Brett Chabot                assertEquals((float)-123.0, s.nextFloat());
184256176a05205eaf469469c26988e99077aed0d7e7Brett Chabot            }
184356176a05205eaf469469c26988e99077aed0d7e7Brett Chabot            try {
184456176a05205eaf469469c26988e99077aed0d7e7Brett Chabot                s.nextFloat();
184556176a05205eaf469469c26988e99077aed0d7e7Brett Chabot                fail("Should throw InputMismatchException");
184656176a05205eaf469469c26988e99077aed0d7e7Brett Chabot            } catch (InputMismatchException e) {
184756176a05205eaf469469c26988e99077aed0d7e7Brett Chabot                // Expected
184856176a05205eaf469469c26988e99077aed0d7e7Brett Chabot            }
184956176a05205eaf469469c26988e99077aed0d7e7Brett Chabot            // Skip the un-recognizable token 123-.
185056176a05205eaf469469c26988e99077aed0d7e7Brett Chabot            if (!disableRIBugs) {
185156176a05205eaf469469c26988e99077aed0d7e7Brett Chabot                assertEquals("123-", s.next());
185256176a05205eaf469469c26988e99077aed0d7e7Brett Chabot                assertEquals((float)-123.0, s.nextFloat());
185356176a05205eaf469469c26988e99077aed0d7e7Brett Chabot            }
1854f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1855f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1856f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
1857f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1858f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextFloat();
1859f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalStateException expected");
1860f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
1861f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            //expected
1862f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1863f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
1864f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1865f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
1866f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws IOException
1867f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#nextBigInteger(int)
1868f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
1869f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
1870f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
1871f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
1872f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "nextBigInteger",
1873f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {int.class}
1874f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
1875f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @KnownFailure("nextBigInteger method doesn't work properly if input string has Arabic-Indic digits")
1876f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_nextBigIntegerI() throws IOException {
1877f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 456");
1878f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("123"), s.nextBigInteger(10));
1879f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("456"), s.nextBigInteger(10));
1880f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1881f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBigInteger(10);
1882f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NoSuchElementException");
1883f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
1884f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
1885f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1886f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1887f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If the radix is different from 10
1888f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 456");
1889f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("38"), s.nextBigInteger(5));
1890f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1891f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBigInteger(5);
1892f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
1893f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
1894f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
1895f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1896f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1897f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
1898f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * Different locale can only recognize corresponding locale sensitive
1899f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * string. ',' is used in many locales as group separator.
1900f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
1901f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23,456 23,456");
1902f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
1903f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1904f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBigInteger(10);
1905f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
1906f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
1907f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
1908f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1909f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
1910f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If exception is thrown out, input will not be advanced.
1911f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("23456"), s.nextBigInteger(10));
1912f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("23456"), s.nextBigInteger(10));
1913f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1914f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
1915f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * ''' is used in many locales as group separator.
1916f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
1917f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23'456 23'456");
1918f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
1919f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1920f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBigInteger(10);
1921f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
1922f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
1923f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
1924f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1925f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(new Locale("de", "CH"));
1926f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If exception is thrown out, input will not be advanced.
1927f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("23456"), s.nextBigInteger(10));
1928f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("23456"), s.nextBigInteger(10));
1929f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1930f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
1931f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * The input string has Arabic-Indic digits.
1932f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
1933f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("1\u06602 1\u06662");
1934f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("102"), s.nextBigInteger(10));
1935f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1936f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBigInteger(5);
1937f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
1938f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
1939f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
1940f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1941f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("162"), s.nextBigInteger(10));
1942f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1943f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
1944f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * '.' is used in many locales as group separator. The input string
1945f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * has Arabic-Indic digits .
1946f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
1947f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23.45\u0666 23.456");
1948f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
1949f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1950f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBigInteger(10);
1951f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
1952f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
1953f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
1954f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1955f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
1956f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If exception is thrown out, input will not be advanced.
1957f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("23456"), s.nextBigInteger(10));
1958f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("23456"), s.nextBigInteger(10));
1959f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1960f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // The input string starts with zero
1961f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("03,456");
1962f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
1963f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
1964f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBigInteger(10);
1965f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
1966f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
1967f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
1968f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
1969f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1970f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("03456");
1971f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("3456"), s.nextBigInteger(10));
1972f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1973f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("\u06603,456");
1974f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
1975f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("3456"), s.nextBigInteger(10));
1976f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1977f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("E34");
1978f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("3636"), s.nextBigInteger(16));
1979f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1980f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
1981f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * There are 3 types of zero digit in all locales, '0' '\u0966' '\u0e50'
1982f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * respectively, but they are not differentiated.
1983f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
1984f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("12300");
1985f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
1986f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("12300"), s.nextBigInteger(10));
1987f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1988f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123\u0966\u0966");
1989f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
1990f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("12300"), s.nextBigInteger(10));
1991f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1992f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123\u0e50\u0e50");
1993f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
1994f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("12300"), s.nextBigInteger(10));
1995f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
1996f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123");
1997f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(new Locale("ar", "AE"));
1998f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("-123"), s.nextBigInteger(10));
1999f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2000f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2001f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123");
2002f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(new Locale("mk", "MK"));
2003f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("-123"), s.nextBigInteger(10));
2004f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2005f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
2006f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2007f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBigInteger(10);
2008f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalStateException expected");
2009f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
2010f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            //expected
2011f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2012f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
2013f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2014f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
2015f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws IOException
2016f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#nextBigInteger()
2017f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
2018f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
2019f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
2020f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
2021f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "nextBigInteger",
2022f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
2023f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
2024f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @KnownFailure("nextBigInteger method doesn't work properly if input string has Arabic-Indic digits")
2025f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_nextBigInteger() throws IOException {
2026f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 456");
2027f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("123"), s.nextBigInteger());
2028f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("456"), s.nextBigInteger());
2029f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2030f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBigInteger();
2031f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NoSuchElementException");
2032f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
2033f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2034f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2035f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2036f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If the radix is different from 10
2037f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 456");
2038f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useRadix(5);
2039f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("38"), s.nextBigInteger());
2040f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2041f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBigInteger();
2042f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
2043f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
2044f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2045f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2046f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2047f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
2048f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * Different locale can only recognize corresponding locale sensitive
2049f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * string. ',' is used in many locales as group separator.
2050f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
2051f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23,456 23,456");
2052f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
2053f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2054f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBigInteger();
2055f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
2056f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
2057f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2058f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2059f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
2060f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If exception is thrown out, input will not be advanced.
2061f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("23456"), s.nextBigInteger());
2062f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("23456"), s.nextBigInteger());
2063f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2064f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
2065f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * ''' is used in many locales as group separator.
2066f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
2067f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23'456 23'456");
2068f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
2069f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2070f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBigInteger();
2071f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
2072f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
2073f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2074f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2075f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(new Locale("de", "CH"));
2076f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If exception is thrown out, input will not be advanced.
2077f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("23456"), s.nextBigInteger());
2078f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("23456"), s.nextBigInteger());
2079f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2080f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
2081f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * The input string has Arabic-Indic digits.
2082f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
2083f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("1\u06602 1\u06662");
2084f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("102"), s.nextBigInteger());
2085f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useRadix(5);
2086f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2087f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBigInteger();
2088f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
2089f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
2090f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2091f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2092f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useRadix(10);
2093f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("162"), s.nextBigInteger());
2094f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2095f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
2096f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * '.' is used in many locales as group separator. The input string
2097f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * has Arabic-Indic digits .
2098f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
2099f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23.45\u0666 23.456");
2100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
2101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBigInteger();
2103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
2104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
2105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
2108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If exception is thrown out, input will not be advanced.
2109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("23456"), s.nextBigInteger());
2110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("23456"), s.nextBigInteger());
2111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // The input string starts with zero
2113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("03,456");
2114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
2115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBigInteger();
2117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
2118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
2119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("03456");
2123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("3456"), s.nextBigInteger());
2124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("\u06603,456");
2126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
2127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("3456"), s.nextBigInteger());
2128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("E34");
2130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useRadix(16);
2131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("3636"), s.nextBigInteger());
2132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
2134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * There are 3 types of zero digit in all locales, '0' '\u0966' '\u0e50'
2135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * respectively, but they are not differentiated.
2136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
2137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("12300");
2138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
2139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("12300"), s.nextBigInteger());
2140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123\u0966\u0966");
2142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
2143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("12300"), s.nextBigInteger());
2144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123\u0e50\u0e50");
2146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
2147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("12300"), s.nextBigInteger());
2148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123");
2150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(new Locale("ar", "AE"));
2151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("-123"), s.nextBigInteger());
2152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123");
2154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(new Locale("mk", "MK"));
2155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("-123"), s.nextBigInteger());
2156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
2158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBigInteger();
2160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalStateException expected");
2161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
2162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            //expected
2163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
2165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
2167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws IOException
2168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#nextShort(int)
2169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
2170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
2171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
2172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
2173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "nextShort",
2174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {int.class}
2175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
2176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_nextShortI() throws IOException {
21778ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        Locale[] requiredLocales = {Locale.GERMANY, Locale.CHINESE, Locale.ENGLISH};
21788ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
21798ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot            // locale dependent test, bug 1943269
21808ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot            return;
21818ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        }
2182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 456");
2183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(123, s.nextShort(10));
2184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(456, s.nextShort(10));
2185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextShort(10);
2187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NoSuchElementException");
2188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
2189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If the radix is different from 10
2193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 456");
2194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(38, s.nextShort(5));
2195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextShort(5);
2197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
2198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
2199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If the number is out of range
2203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123456789");
2204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextShort(10);
2206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
2207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
2208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
2212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * Different locale can only recognize corresponding locale sensitive
2213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * string. ',' is used in many locales as group separator.
2214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
2215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23,456 23,456");
2216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
2217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextShort(10);
2219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
2220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
2221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
2224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If exception is thrown out, input will not be advanced.
2225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextShort(10));
2226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextShort(10));
2227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
2229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * ''' is used in many locales as group separator.
2230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
2231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23'456 23'456");
2232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
2233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextShort(10);
2235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
2236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
2237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(new Locale("de", "CH"));
2240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If exception is thrown out, input will not be advanced.
2241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextShort(10));
2242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextShort(10));
2243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
2245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * The input string has Arabic-Indic digits.
2246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
2247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("1\u06602 1\u06662");
2248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(102, s.nextShort(10));
2249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextShort(5);
2251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
2252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
2253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(162, s.nextShort(10));
2256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
2258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * '.' is used in many locales as group separator. The input string
2259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * has Arabic-Indic digits .
2260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
2261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23.45\u0666 23.456");
2262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
2263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextShort(10);
2265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
2266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
2267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
2270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If exception is thrown out, input will not be advanced.
2271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextShort(10));
2272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextShort(10));
2273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // The input string starts with zero
2275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("03,456");
2276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
2277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextShort(10);
2279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
2280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
2281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("03456");
2285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(3456, s.nextShort(10));
2286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("\u06603,456");
2288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
2289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(3456, s.nextShort(10));
2290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("E34");
2292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(3636, s.nextShort(16));
2293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
2295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * There are 3 types of zero digit in all locales, '0' '\u0966' '\u0e50'
2296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * respectively, but they are not differentiated.
2297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
2298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("12300");
2299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
2300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(12300, s.nextShort(10));
2301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123\u0966\u0966");
2303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
2304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(12300, s.nextShort(10));
2305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123\u0e50\u0e50");
2307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
2308f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(12300, s.nextShort(10));
2309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123");
2311f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(new Locale("ar", "AE"));
2312f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-123, s.nextShort(10));
2313f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123");
2316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(new Locale("mk", "MK"));
2317f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-123, s.nextShort(10));
2318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2319f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
2320f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2321f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextShort(10);
2322f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalStateException expected");
2323f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
2324f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            //expected
2325f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2326f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
2327f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2328f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
2329f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws IOException
2330f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#nextShort()
2331f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
2332f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
2333f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
2334f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
2335f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "nextShort",
2336f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
2337f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
2338f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_nextShort() throws IOException {
23398ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        Locale[] requiredLocales = {Locale.GERMANY, Locale.CHINESE, Locale.ENGLISH};
23408ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
23418ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot            // locale dependent test, bug 1943269
23428ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot            return;
23438ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        }
2344f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 456");
2345f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(123, s.nextShort());
2346f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(456, s.nextShort());
2347f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2348f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextShort();
2349f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NoSuchElementException");
2350f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
2351f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2352f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2353f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2354f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If the radix is different from 10
2355f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 456");
2356f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useRadix(5);
2357f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(38, s.nextShort());
2358f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2359f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextShort();
2360f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
2361f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
2362f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2363f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2364f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2365f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If the number is out of range
2366f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123456789");
2367f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2368f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextShort();
2369f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
2370f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
2371f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2372f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2373f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2374f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
2375f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * Different locale can only recognize corresponding locale sensitive
2376f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * string. ',' is used in many locales as group separator.
2377f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
2378f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23,456 23,456");
2379f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
2380f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2381f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextShort();
2382f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
2383f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
2384f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2385f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2386f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
2387f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If exception is thrown out, input will not be advanced.
2388f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextShort());
2389f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextShort());
2390f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2391f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
2392f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * ''' is used in many locales as group separator.
2393f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
2394f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23'456 23'456");
2395f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
2396f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2397f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextShort();
2398f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
2399f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
2400f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2401f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2402f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(new Locale("de", "CH"));
2403f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If exception is thrown out, input will not be advanced.
2404f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextShort());
2405f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextShort());
2406f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2407f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
2408f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * The input string has Arabic-Indic digits.
2409f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
2410f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("1\u06602 1\u06662");
2411f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(102, s.nextShort());
2412f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useRadix(5);
2413f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2414f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextShort();
2415f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
2416f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
2417f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2418f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2419f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useRadix(10);
2420f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(162, s.nextShort());
2421f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2422f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
2423f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * '.' is used in many locales as group separator. The input string
2424f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * has Arabic-Indic digits .
2425f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
2426f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23.45\u0666 23.456");
2427f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
2428f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2429f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextShort();
2430f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
2431f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
2432f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2433f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2434f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
2435f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If exception is thrown out, input will not be advanced.
2436f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextShort());
2437f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextShort());
2438f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2439f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // The input string starts with zero
2440f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("03,456");
2441f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
2442f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2443f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextShort();
2444f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
2445f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
2446f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2447f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2448f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2449f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("03456");
2450f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(3456, s.nextShort());
2451f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2452f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("\u06603,456");
2453f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
2454f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(3456, s.nextShort());
2455f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2456f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("E34");
2457f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useRadix(16);
2458f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(3636, s.nextShort());
2459f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2460f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
2461f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * There are 3 types of zero digit in all locales, '0' '\u0966' '\u0e50'
2462f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * respectively, but they are not differentiated.
2463f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
2464f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("12300");
2465f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
2466f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(12300, s.nextShort());
2467f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2468f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123\u0966\u0966");
2469f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
2470f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(12300, s.nextShort());
2471f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2472f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123\u0e50\u0e50");
2473f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
2474f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(12300, s.nextShort());
2475f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2476f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123");
2477f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(new Locale("ar", "AE"));
2478f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-123, s.nextShort());
2479f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2480f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123");
2481f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(new Locale("mk", "MK"));
2482f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-123, s.nextShort());
2483f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2484f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
2485f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2486f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextShort();
2487f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalStateException expected");
2488f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
2489f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            //expected
2490f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2491f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
2492f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2493f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
2494f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws IOException
2495f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#nextLong(int)
2496f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
2497f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
2498f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
2499f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
2500f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "nextLong",
2501f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {int.class}
2502f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
2503f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_nextLongI() throws IOException {
25048ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        Locale[] requiredLocales = {Locale.GERMANY, Locale.CHINESE, Locale.ENGLISH};
25058ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
25068ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot            // locale dependent test, bug 1943269
25078ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot            return;
25088ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        }
2509f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 456");
2510f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(123, s.nextLong(10));
2511f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(456, s.nextLong(10));
2512f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2513f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextLong(10);
2514f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NoSuchElementException");
2515f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
2516f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2517f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2518f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2519f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If the radix is different from 10
2520f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 456");
2521f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(38, s.nextLong(5));
2522f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2523f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextLong(5);
2524f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
2525f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
2526f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2527f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2528f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2529f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If the number is out of range
2530f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123456789123456789123456789123456789");
2531f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2532f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextLong(10);
2533f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
2534f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
2535f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2536f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2537f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2538f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
2539f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * Different locale can only recognize corresponding locale sensitive
2540f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * string. ',' is used in many locales as group separator.
2541f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
2542f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23,456 23,456");
2543f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
2544f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2545f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextLong(10);
2546f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
2547f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
2548f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2549f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2550f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
2551f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If exception is thrown out, input will not be advanced.
2552f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextLong(10));
2553f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextLong(10));
2554f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2555f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
2556f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * ''' is used in many locales as group separator.
2557f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
2558f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23'456 23'456");
2559f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
2560f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2561f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextLong(10);
2562f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
2563f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
2564f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2565f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2566f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(new Locale("de", "CH"));
2567f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If exception is thrown out, input will not be advanced.
2568f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextLong(10));
2569f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextLong(10));
2570f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2571f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
2572f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * The input string has Arabic-Indic digits.
2573f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
2574f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("1\u06602 1\u06662");
2575f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(102, s.nextLong(10));
2576f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2577f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextLong(5);
2578f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
2579f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
2580f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2581f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2582f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(162, s.nextLong(10));
2583f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2584f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
2585f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * '.' is used in many locales as group separator. The input string
2586f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * has Arabic-Indic digits .
2587f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
2588f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23.45\u0666 23.456");
2589f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
2590f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2591f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextLong(10);
2592f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
2593f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
2594f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2595f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2596f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
2597f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If exception is thrown out, input will not be advanced.
2598f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextLong(10));
2599f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextLong(10));
2600f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2601f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // The input string starts with zero
2602f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("03,456");
2603f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
2604f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2605f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextLong(10);
2606f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
2607f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
2608f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2609f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2610f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2611f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("03456");
2612f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(3456, s.nextLong(10));
2613f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2614f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("\u06603,456");
2615f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
2616f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(3456, s.nextLong(10));
2617f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2618f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("E34");
2619f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(3636, s.nextLong(16));
2620f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2621f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
2622f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * There are 3 types of zero digit in all locales, '0' '\u0966' '\u0e50'
2623f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * respectively, but they are not differentiated.
2624f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
2625f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("12300");
2626f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
2627f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(12300, s.nextLong(10));
2628f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2629f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123\u0966\u0966");
2630f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
2631f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(12300, s.nextLong(10));
2632f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2633f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123\u0e50\u0e50");
2634f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
2635f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(12300, s.nextLong(10));
2636f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2637f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123");
2638f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(new Locale("ar", "AE"));
2639f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-123, s.nextLong(10));
2640f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2641f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2642f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123");
2643f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(new Locale("mk", "MK"));
2644f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-123, s.nextLong(10));
2645f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2646f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
2647f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2648f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextLong(10);
2649f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalStateException expected");
2650f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
2651f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            //expected
2652f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2653f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
2654f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2655f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
2656f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws IOException
2657f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#nextLong()
2658f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
2659f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
2660f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
2661f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
2662f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "nextLong",
2663f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
2664f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
2665f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_nextLong() throws IOException {
26668ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        Locale[] requiredLocales = {Locale.GERMANY, Locale.CHINESE, Locale.ENGLISH};
26678ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
26688ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot            // locale dependent test, bug 1943269
26698ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot            return;
26708ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        }
2671f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 456");
2672f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(123, s.nextLong());
2673f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(456, s.nextLong());
2674f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2675f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextLong();
2676f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NoSuchElementException");
2677f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
2678f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2679f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2680f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2681f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If the radix is different from 10
2682f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 456");
2683f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useRadix(5);
2684f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(38, s.nextLong());
2685f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2686f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextLong();
2687f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
2688f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
2689f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2690f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2691f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2692f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If the number is out of range
2693f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123456789123456789123456789123456789");
2694f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2695f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextLong();
2696f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
2697f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
2698f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2699f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2700f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2701f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
2702f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * Different locale can only recognize corresponding locale sensitive
2703f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * string. ',' is used in many locales as group separator.
2704f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
2705f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23,456 23,456");
2706f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
2707f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2708f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextLong();
2709f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
2710f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
2711f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2712f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2713f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
2714f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If exception is thrown out, input will not be advanced.
2715f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextLong());
2716f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextLong());
2717f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2718f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
2719f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * ''' is used in many locales as group separator.
2720f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
2721f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23'456 23'456");
2722f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
2723f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2724f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextLong();
2725f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
2726f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
2727f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2728f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2729f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(new Locale("de", "CH"));
2730f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If exception is thrown out, input will not be advanced.
2731f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextLong());
2732f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextLong());
2733f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2734f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
2735f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * The input string has Arabic-Indic digits.
2736f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
2737f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("1\u06602 1\u06662");
2738f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(102, s.nextLong());
2739f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useRadix(5);
2740f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2741f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextLong();
2742f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
2743f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
2744f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2745f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2746f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useRadix(10);
2747f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(162, s.nextLong());
2748f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2749f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
2750f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * '.' is used in many locales as group separator. The input string
2751f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * has Arabic-Indic digits .
2752f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
2753f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23.45\u0666 23.456");
2754f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
2755f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2756f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextLong();
2757f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
2758f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
2759f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2760f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2761f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
2762f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If exception is thrown out, input will not be advanced.
2763f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextLong());
2764f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextLong());
2765f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2766f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // The input string starts with zero
2767f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("03,456");
2768f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
2769f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2770f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextLong();
2771f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
2772f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
2773f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2774f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2775f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2776f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("03456");
2777f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(3456, s.nextLong());
2778f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2779f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("\u06603,456");
2780f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
2781f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(3456, s.nextLong());
2782f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2783f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("E34");
2784f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useRadix(16);
2785f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(3636, s.nextLong());
2786f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2787f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
2788f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * There are 3 types of zero digit in all locales, '0' '\u0966' '\u0e50'
2789f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * respectively, but they are not differentiated.
2790f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
2791f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("12300");
2792f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
2793f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(12300, s.nextLong());
2794f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2795f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123\u0966\u0966");
2796f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
2797f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(12300, s.nextLong());
2798f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2799f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123\u0e50\u0e50");
2800f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
2801f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(12300, s.nextLong());
2802f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2803f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123");
2804f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(new Locale("ar", "AE"));
2805f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-123, s.nextLong());
2806f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2807f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123");
2808f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(new Locale("mk", "MK"));
2809f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-123, s.nextLong());
2810f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2811f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
2812f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2813f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextLong();
2814f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalStateException expected");
2815f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
2816f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            //expected
2817f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2818f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
2819f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2820f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
2821f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws IOException
2822f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#hasNext()
2823f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
2824f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
2825f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
2826f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
2827f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "hasNext",
2828f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
2829f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
2830f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_hasNext() throws IOException {
2831f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("1##2").useDelimiter("\\#");
2832f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNext());
2833f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("1", s.next());
2834f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("", s.next());
2835f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("2", s.next());
2836f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNext());
2837f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
2838f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2839f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.hasNext();
2840f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw IllegalStateException");
2841f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
2842f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
2843f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2844f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2845f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("1( )2( )").useDelimiter("\\( \\)");
2846f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNext());
2847f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNext());
2848f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("1", s.next());
2849f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("2", s.next());
2850f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2851f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("1 2  ").useDelimiter("( )");
2852f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("1", s.next());
2853f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("2", s.next());
2854f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNext());
2855f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("", s.next());
2856f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2857f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("1\n2  ");
2858f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("1", s.next());
2859f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNext());
2860f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("2", s.next());
2861f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNext());
2862f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // test boundary case
2863f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2864f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.next();
2865f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw NoSuchElementException");
2866f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
2867f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2868f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2869f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2870f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("1'\n'2  ");
2871f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("1'", s.next());
2872f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNext());
2873f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("'2", s.next());
2874f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNext());
2875f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // test boundary case
2876f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2877f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.next();
2878f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw NoSuchElementException");
2879f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
2880f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2881f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2882f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2883f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("  ");
2884f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNext());
2885f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2886f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // test socket inputStream
2887f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2888f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        os.write("1 2".getBytes());
2889f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        serverSocket.close();
2890f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2891f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(client);
2892f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("1", s.next());
2893f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNext());
2894f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("2", s.next());
2895f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNext());
2896f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2897f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.next();
2898f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw NoSuchElementException");
2899f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
2900f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2901f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2902f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
2903f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2904f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
2905f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws IOException
2906f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#hasNext(Pattern)
2907f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
2908f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
2909f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
2910f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
2911f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "hasNext",
2912f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.util.regex.Pattern.class}
2913f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
2914f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_hasNextLPattern() throws IOException {
2915f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Pattern pattern;
2916f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("aab@2@abb@").useDelimiter("\\@");
2917f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        pattern = Pattern.compile("a*b");
2918f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNext(pattern));
2919f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("aab", s.next(pattern));
2920f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNext(pattern));
2921f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2922f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.next(pattern);
2923f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw InputMismatchException");
2924f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
2925f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2926f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2927f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2928f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("word ? ");
2929f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        pattern = Pattern.compile("\\w+");
2930f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNext(pattern));
2931f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("word", s.next(pattern));
2932f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNext(pattern));
2933f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2934f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.next(pattern);
2935f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw InputMismatchException");
2936f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
2937f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2938f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2939f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2940f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("word1 WorD2  ");
2941f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        pattern = Pattern.compile("\\w+");
2942f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNext(pattern));
2943f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("word1", s.next(pattern));
2944f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNext(pattern));
2945f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("WorD2", s.next(pattern));
2946f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNext(pattern));
2947f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2948f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.next(pattern);
2949f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw NoSuchElementException");
2950f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
2951f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2952f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2953f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2954f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("word1 WorD2  ");
2955f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        pattern = Pattern.compile("\\w+");
2956f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2957f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.hasNext((Pattern) null);
2958f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NullPointerException");
2959f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException e) {
2960f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
2961f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2962f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
2963f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2964f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.hasNext(pattern);
2965f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw IllegalStateException");
2966f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
2967f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
2968f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2969f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2970f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // test socket inputStream
2971f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        os.write("aab b".getBytes());
2972f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        serverSocket.close();
2973f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2974f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(client);
2975f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        pattern = Pattern.compile("a+b");
2976f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNext(pattern));
2977f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("aab", s.next(pattern));
2978f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNext(pattern));
2979f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
2980f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.next(pattern);
2981f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw InputMismatchException");
2982f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
2983f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
2984f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
2985f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
2986f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
2987f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
2988f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws IOException
2989f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#hasNext(String)
2990f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
2991f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
2992f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
2993f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
2994f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "hasNext",
2995f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.String.class}
2996f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
2997f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_hasNextLString() throws IOException {
2998f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("aab@2@abb@").useDelimiter("\\@");
2999f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
3000f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.hasNext((String)null);
3001f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NullPointerException");
3002f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException e) {
3003f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
3004f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
3005f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3006f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("aab*b*").useDelimiter("\\*");
3007f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNext("a+b"));
3008f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("aab", s.next("a+b"));
3009f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNext("a+b"));
3010f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
3011f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.next("a+b");
3012f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw InputMismatchException");
3013f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
3014f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
3015f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
3016f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
3017f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
3018f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.hasNext("a+b");
3019f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw IllegalStateException");
3020f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
3021f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
3022f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
3023f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3024f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("WORD ? ");
3025f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNext("\\w+"));
3026f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("WORD", s.next("\\w+"));
3027f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNext("\\w+"));
3028f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
3029f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.next("\\w+");
3030f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw InputMismatchException");
3031f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
3032f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
3033f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
3034f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3035f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("word1 word2  ");
3036f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("word1", s.next("\\w+"));
3037f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("word2", s.next("\\w+"));
3038f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // test boundary case
3039f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
3040f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.next("\\w+");
3041f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw NoSuchElementException");
3042f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
3043f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
3044f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
3045f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3046f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // test socket inputStream
3047f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3048f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        os.write("aab 2".getBytes());
3049f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        serverSocket.close();
3050f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3051f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(client);
3052f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNext("a*b"));
3053f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("aab", s.next("a*b"));
3054f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNext("a*b"));
3055f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
3056f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.next("a*b");
3057f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw InputMismatchException");
3058f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
3059f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
3060f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
3061f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
3062f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3063f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
3064f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws IOException
3065f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#hasNextBoolean()
3066f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
3067f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
3068f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
3069f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
3070f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "hasNextBoolean",
3071f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
3072f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
3073f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_hasNextBoolean() throws IOException {
3074f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3075f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("TRue");
3076f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBoolean());
3077f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.nextBoolean());
3078f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3079f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("tRue false");
3080f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBoolean());
3081f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.nextBoolean());
3082f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBoolean());
3083f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.nextBoolean());
3084f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3085f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("");
3086f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextBoolean());
3087f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3088f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // test socket inputStream
3089f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3090f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        os.write("true false ".getBytes());
3091f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        serverSocket.close();
3092f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3093f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(client);
3094f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBoolean());
3095f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.nextBoolean());
3096f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3097f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // ues '*' as delimiter
3098f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("true**false").useDelimiter("\\*");
3099f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBoolean());
3100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.nextBoolean());
3101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextBoolean());
3102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
3103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBoolean();
3104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw NoSuchElementException");
3105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
3106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
3107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
3108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("false( )").useDelimiter("\\( \\)");
3110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBoolean());
3111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.nextBoolean());
3112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextBoolean());
3113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
3115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
3116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.hasNextBoolean();
3117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalStateException expected");
3118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
3119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            //expected
3120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
3121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
3122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
3124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws IOException
3125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#hasNextByte(int)
3126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
3127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
3128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.PARTIAL_COMPLETE,
3129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "IllegalStateException checking missed.",
3130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "hasNextByte",
3131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {int.class}
3132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
3133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_hasNextByteI() throws IOException {
3134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 126");
3135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextByte(10));
3136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(123, s.nextByte(10));
3137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextByte(10));
3138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(126, s.nextByte(10));
3139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextByte(10));
3140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
3141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextByte(10);
3142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NoSuchElementException");
3143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
3144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
3145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
3146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If the radix is different from 10
3148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 126");
3149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextByte(5));
3150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(38, s.nextByte(5));
3151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextByte(5));
3152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
3153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextByte(5);
3154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
3155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
3156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
3157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
3158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If the number is out of range
3160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("1234");
3161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextByte(10));
3162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
3163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextByte(10);
3164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
3165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
3166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
3167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
3168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
3170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * The input string has Arabic-Indic digits.
3171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
3172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("1\u06602 12\u0666");
3173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextByte(10));
3174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(102, s.nextByte(10));
3175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextByte(5));
3176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
3177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextByte(5);
3178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
3179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
3180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
3181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
3182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextByte(10));
3183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(126, s.nextByte(10));
3184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("012");
3186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextByte(10));
3187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(12, s.nextByte(10));
3188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("E");
3190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextByte(16));
3191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(14, s.nextByte(16));
3192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
3194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * There are 3 types of zero digit in all locales, '0' '\u0966' '\u0e50'
3195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * respectively, but they are not differentiated.
3196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
3197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("100");
3198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
3199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextByte(10));
3200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(100, s.nextByte(10));
3201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("1\u0966\u0966");
3203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
3204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextByte(10));
3205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(100, s.nextByte(10));
3206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("1\u0e50\u0e50");
3208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
3209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextByte(10));
3210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(100, s.nextByte(10));
3211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123");
3213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(new Locale("ar", "AE"));
3214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextByte(10));
3215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-123, s.nextByte(10));
3216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123");
3219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(new Locale("mk", "MK"));
3220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextByte(10));
3221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-123, s.nextByte(10));
3222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
3223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
3225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws IOException
3226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#hasNextByte(int)
3227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
3228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
3229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.PARTIAL_COMPLETE,
3230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "Regression test.",
3231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "hasNextByte",
3232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {int.class}
3233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
3234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_hasNextByteI_cache() throws IOException{
3235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        //regression for HARMONY-2063
3236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 45");
3237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextByte(8));
3238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(83, s.nextByte());
3239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(45, s.nextByte());
3240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 45");
3242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextByte(10));
3243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextByte(8));
3244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(83, s.nextByte());
3245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(45, s.nextByte());
3246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123 -45");
3248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextByte(8));
3249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-123, s.nextInt());
3250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-45, s.nextByte());
3251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 45");
3253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextByte());
3254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
3255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
3256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextByte();
3257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw IllegalStateException");
3258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
3259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
3260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
3261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
3262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
3263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws IOException
3264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#hasNextByte()
3265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
3266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
3267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
3268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
3269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "hasNextByte",
3270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
3271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
3272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_hasNextByte() throws IOException {
3273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 126");
3274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextByte());
3275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(123, s.nextByte());
3276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextByte());
3277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(126, s.nextByte());
3278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextByte());
3279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
3280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextByte();
3281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NoSuchElementException");
3282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
3283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
3284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
3285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If the radix is different from 10
3287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 126");
3288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useRadix(5);
3289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextByte());
3290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(38, s.nextByte());
3291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextByte());
3292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
3293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextByte();
3294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
3295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
3296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
3297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
3298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If the number is out of range
3300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("1234");
3301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextByte());
3302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
3303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextByte();
3304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
3305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
3306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
3307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
3308f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
3310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * The input string has Arabic-Indic digits.
3311f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
3312f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("1\u06602 12\u0666");
3313f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextByte());
3314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(102, s.nextByte());
3315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useRadix(5);
3316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextByte());
3317f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
3318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextByte();
3319f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
3320f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
3321f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
3322f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
3323f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useRadix(10);
3324f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextByte());
3325f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(126, s.nextByte());
3326f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3327f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("012");
3328f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(12, s.nextByte());
3329f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3330f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("E");
3331f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useRadix(16);
3332f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextByte());
3333f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(14, s.nextByte());
3334f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3335f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
3336f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * There are 3 types of zero digit in all locales, '0' '\u0966' '\u0e50'
3337f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * respectively, but they are not differentiated.
3338f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
3339f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("100");
3340f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
3341f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextByte());
3342f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(100, s.nextByte());
3343f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3344f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("1\u0966\u0966");
3345f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
3346f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextByte());
3347f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(100, s.nextByte());
3348f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3349f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("1\u0e50\u0e50");
3350f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
3351f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextByte());
3352f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(100, s.nextByte());
3353f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3354f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123");
3355f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(new Locale("ar", "AE"));
3356f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextByte());
3357f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-123, s.nextByte());
3358f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3359f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123");
3360f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(new Locale("mk", "MK"));
3361f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextByte());
3362f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-123, s.nextByte());
3363f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3364f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
3365f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
3366f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.hasNextByte();
3367f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalStateException expected");
3368f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
3369f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            //expected
3370f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
3371f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
3372f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3373f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
3374f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws IOException
3375f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#hasNextBigInteger(int)
3376f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
3377f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
3378f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.PARTIAL_COMPLETE,
3379f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "IllegalStateException checking missed.",
3380f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "hasNextBigInteger",
3381f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {int.class}
3382f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
3383f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @KnownFailure("hasNextBigInteger method doesn't work properly if input string has Arabic-Indic digits")
3384f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_hasNextBigIntegerI() throws IOException {
3385f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 456");
3386f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigInteger(10));
3387f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("123"), s.nextBigInteger(10));
3388f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigInteger(10));
3389f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("456"), s.nextBigInteger(10));
3390f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextBigInteger(10));
3391f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
3392f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBigInteger(10);
3393f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NoSuchElementException");
3394f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
3395f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
3396f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
3397f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3398f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If the radix is different from 10
3399f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 456");
3400f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigInteger(5));
3401f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("38"), s.nextBigInteger(5));
3402f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextBigInteger(5));
3403f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
3404f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBigInteger(5);
3405f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
3406f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
3407f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
3408f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
3409f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3410f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
3411f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * Different locale can only recognize corresponding locale sensitive
3412f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * string. ',' is used in many locales as group separator.
3413f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
3414f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23,456 23,456");
3415f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
3416f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextBigInteger(10));
3417f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
3418f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBigInteger(10);
3419f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
3420f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
3421f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
3422f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
3423f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
3424f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If exception is thrown out, input will not be advanced.
3425f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigInteger(10));
3426f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("23456"), s.nextBigInteger(10));
3427f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigInteger(10));
3428f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("23456"), s.nextBigInteger(10));
3429f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3430f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
3431f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * ''' is used in many locales as group separator.
3432f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
3433f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23'456 23'456");
3434f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
3435f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextBigInteger(10));
3436f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
3437f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBigInteger(10);
3438f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
3439f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
3440f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
3441f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
3442f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(new Locale("de", "CH"));
3443f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If exception is thrown out, input will not be advanced.
3444f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigInteger(10));
3445f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("23456"), s.nextBigInteger(10));
3446f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigInteger(10));
3447f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("23456"), s.nextBigInteger(10));
3448f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3449f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
3450f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * The input string has Arabic-Indic digits.
3451f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
3452f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("1\u06602 1\u06662");
3453f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigInteger(10));
3454f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("102"), s.nextBigInteger(10));
3455f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextBigInteger(5));
3456f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
3457f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBigInteger(5);
3458f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
3459f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
3460f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
3461f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
3462f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigInteger(10));
3463f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("162"), s.nextBigInteger(10));
3464f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3465f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
3466f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * '.' is used in many locales as group separator. The input string
3467f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * has Arabic-Indic digits .
3468f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
3469f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23.45\u0666 23.456");
3470f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
3471f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextBigInteger(10));
3472f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
3473f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBigInteger(10);
3474f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
3475f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
3476f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
3477f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
3478f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
3479f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If exception is thrown out, input will not be advanced.
3480f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigInteger(10));
3481f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("23456"), s.nextBigInteger(10));
3482f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigInteger(10));
3483f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("23456"), s.nextBigInteger(10));
3484f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3485f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // The input string starts with zero
3486f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("03,456");
3487f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
3488f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextBigInteger(10));
3489f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
3490f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBigInteger(10);
3491f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
3492f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
3493f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
3494f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
3495f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3496f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("03456");
3497f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigInteger(10));
3498f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("3456"), s.nextBigInteger(10));
3499f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3500f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("\u06603,456");
3501f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
3502f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigInteger(10));
3503f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("3456"), s.nextBigInteger(10));
3504f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3505f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("E34");
3506f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigInteger(16));
3507f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("3636"), s.nextBigInteger(16));
3508f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3509f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
3510f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * There are 3 types of zero digit in all locales, '0' '\u0966' '\u0e50'
3511f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * respectively, but they are not differentiated.
3512f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
3513f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("12300");
3514f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
3515f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigInteger(10));
3516f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("12300"), s.nextBigInteger(10));
3517f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3518f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123\u0966\u0966");
3519f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
3520f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigInteger(10));
3521f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("12300"), s.nextBigInteger(10));
3522f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3523f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123\u0e50\u0e50");
3524f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
3525f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigInteger(10));
3526f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("12300"), s.nextBigInteger(10));
3527f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3528f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123");
3529f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(new Locale("ar", "AE"));
3530f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigInteger(10));
3531f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("-123"), s.nextBigInteger(10));
3532f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3533f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3534f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123");
3535f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(new Locale("mk", "MK"));
3536f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigInteger(10));
3537f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("-123"), s.nextBigInteger(10));
3538f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
3539f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3540f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
3541f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws IOException
3542f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#hasNextBigInteger(int)
3543f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
3544f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
3545f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.PARTIAL_COMPLETE,
3546f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "Regression test.",
3547f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "hasNextBigInteger",
3548f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {int.class}
3549f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
3550f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_hasNextBigIntegerI_cache() throws IOException {
3551f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        //regression for HARMONY-2063
3552f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 123456789123456789");
3553f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigInteger(16));
3554f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("291"), s.nextBigInteger());
3555f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("123456789123456789"), s.nextBigInteger());
3556f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3557f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123456789123456789 456");
3558f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigInteger(16));
3559f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigInteger(10));
3560f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("123456789123456789"), s.nextBigInteger());
3561f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("456"), s.nextBigInteger());
3562f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3563f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123 -123456789123456789");
3564f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigInteger(8));
3565f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-123, s.nextShort());
3566f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("-123456789123456789"), s.nextBigInteger());
3567f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3568f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 456");
3569f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigInteger());
3570f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
3571f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
3572f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBigInteger();
3573f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw IllegalStateException");
3574f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
3575f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
3576f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
3577f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
3578f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3579f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
3580f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws IOException
3581f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#hasNextBigInteger()
3582f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
3583f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
3584f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
3585f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
3586f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "hasNextBigInteger",
3587f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
3588f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
3589f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @KnownFailure("nextBigInteger method doesn't work properly if input string has Arabic-Indic digits")
3590f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_hasNextBigInteger() throws IOException {
3591f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 456");
3592f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigInteger());
3593f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("123"), s.nextBigInteger());
3594f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigInteger());
3595f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("456"), s.nextBigInteger());
3596f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextBigInteger());
3597f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
3598f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBigInteger();
3599f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NoSuchElementException");
3600f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
3601f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
3602f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
3603f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3604f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If the radix is different from 10
3605f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 456");
3606f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useRadix(5);
3607f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigInteger());
3608f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("38"), s.nextBigInteger());
3609f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextBigInteger());
3610f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
3611f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBigInteger();
3612f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
3613f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
3614f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
3615f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
3616f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3617f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
3618f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * Different locale can only recognize corresponding locale sensitive
3619f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * string. ',' is used in many locales as group separator.
3620f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
3621f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23,456 23,456");
3622f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
3623f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextBigInteger());
3624f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
3625f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBigInteger();
3626f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
3627f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
3628f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
3629f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
3630f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
3631f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If exception is thrown out, input will not be advanced.
3632f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigInteger());
3633f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("23456"), s.nextBigInteger());
3634f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigInteger());
3635f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("23456"), s.nextBigInteger());
3636f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3637f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
3638f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * ''' is used in many locales as group separator.
3639f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
3640f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23'456 23'456");
3641f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
3642f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextBigInteger());
3643f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
3644f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBigInteger();
3645f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
3646f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
3647f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
3648f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
3649f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(new Locale("de", "CH"));
3650f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If exception is thrown out, input will not be advanced.
3651f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigInteger());
3652f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("23456"), s.nextBigInteger());
3653f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigInteger());
3654f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("23456"), s.nextBigInteger());
3655f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3656f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
3657f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * The input string has Arabic-Indic digits.
3658f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
3659f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("1\u06602 1\u06662");
3660f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("102"), s.nextBigInteger());
3661f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useRadix(5);
3662f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextBigInteger());
3663f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
3664f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBigInteger();
3665f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
3666f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
3667f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
3668f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
3669f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useRadix(10);
3670f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigInteger());
3671f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("162"), s.nextBigInteger());
3672f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3673f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
3674f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * '.' is used in many locales as group separator. The input string
3675f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * has Arabic-Indic digits .
3676f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
3677f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23.45\u0666 23.456");
3678f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
3679f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextBigInteger());
3680f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
3681f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBigInteger();
3682f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
3683f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
3684f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
3685f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
3686f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
3687f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If exception is thrown out, input will not be advanced.
3688f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigInteger());
3689f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("23456"), s.nextBigInteger());
3690f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigInteger());
3691f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("23456"), s.nextBigInteger());
3692f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3693f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // The input string starts with zero
3694f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("03,456");
3695f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
3696f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextBigInteger());
3697f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
3698f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBigInteger();
3699f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
3700f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
3701f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
3702f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
3703f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3704f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("03456");
3705f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigInteger());
3706f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("3456"), s.nextBigInteger());
3707f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3708f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("\u06603,456");
3709f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
3710f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigInteger());
3711f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("3456"), s.nextBigInteger());
3712f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3713f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("E34");
3714f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useRadix(16);
3715f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigInteger());
3716f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("3636"), s.nextBigInteger());
3717f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3718f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
3719f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * There are 3 types of zero digit in all locales, '0' '\u0966' '\u0e50'
3720f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * respectively, but they are not differentiated.
3721f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
3722f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("12300");
3723f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
3724f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigInteger());
3725f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("12300"), s.nextBigInteger());
3726f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3727f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123\u0966\u0966");
3728f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
3729f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigInteger());
3730f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("12300"), s.nextBigInteger());
3731f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3732f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123\u0e50\u0e50");
3733f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
3734f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigInteger());
3735f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("12300"), s.nextBigInteger());
3736f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3737f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123");
3738f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(new Locale("ar", "AE"));
3739f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigInteger());
3740f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("-123"), s.nextBigInteger());
3741f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3742f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123");
3743f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(new Locale("mk", "MK"));
3744f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigInteger());
3745f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigInteger("-123"), s.nextBigInteger());
3746f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3747f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
3748f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
3749f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.hasNextBigInteger();
3750f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalStateException expected");
3751f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
3752f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            //expected
3753f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
3754f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
3755f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3756f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
3757f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws IOException
3758f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#hasNextInt(int)
3759f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
3760f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
3761f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.PARTIAL_COMPLETE,
3762f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "IllegalStateException checking missed.",
3763f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "hasNextInt",
3764f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {int.class}
3765f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
3766f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_hasNextIntI() throws IOException {
37678ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        Locale mkLocale = new Locale("mk", "MK");
37688ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        Locale arLocale = new Locale("ar", "AE");
37698ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        Locale deLocale = new Locale("de", "CH");
37708ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        Locale[] requiredLocales = {Locale.GERMANY, Locale.ENGLISH, Locale.CHINESE,
37718ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot                mkLocale, arLocale, deLocale};
37728ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
37738ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot            // locale dependent test, bug 1943269
37748ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot            return;
37758ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        }
3776f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 456");
3777f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(123, s.nextInt(10));
3778f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextInt(10));
3779f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(456, s.nextInt(10));
3780f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextInt(10));
3781f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
3782f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextInt(10);
3783f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NoSuchElementException");
3784f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
3785f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
3786f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
3787f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3788f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If the radix is different from 10
3789f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 456");
3790f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextInt(5));
3791f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(38, s.nextInt(5));
3792f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextInt(5));
3793f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
3794f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextInt(5);
3795f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
3796f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
3797f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
3798f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
3799f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3800f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If the number is out of range
3801f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123456789123456789123456789123456789");
3802f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextInt(10));
3803f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3804f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
3805f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * Different locale can only recognize corresponding locale sensitive
3806f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * string. ',' is used in many locales as group separator.
3807f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
3808f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23,456");
3809f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
3810f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextInt(10));
3811f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
3812f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If exception is thrown out, input will not be advanced.
3813f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextInt(10));
3814f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
3815f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * ''' is used in many locales as group separator.
3816f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
3817f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23'456");
3818f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
3819f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextInt(10));
38208ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        s.useLocale(deLocale);
3821f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If exception is thrown out, input will not be advanced.
3822f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextInt(10));
3823f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3824f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
3825f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * The input string has Arabic-Indic digits.
3826f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
3827f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("1\u06662");
3828f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextInt(10));
3829f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextInt(5));
3830f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3831f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
3832f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * '.' is used in many locales as group separator. The input string
3833f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * has Arabic-Indic digits .
3834f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
3835f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23.45\u0666");
3836f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
3837f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextInt(10));
3838f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
3839f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextInt(10);
3840f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
3841f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
3842f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
3843f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
3844f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
3845f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextInt(10));
3846f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3847f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // The input string starts with zero
3848f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("03,456");
3849f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
3850f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextInt(10));
3851f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
3852f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextInt(10);
3853f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
3854f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
3855f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
3856f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
3857f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3858f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("03456");
3859f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextInt(10));
3860f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(3456, s.nextInt(10));
3861f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3862f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("\u06603,456");
3863f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
3864f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextInt(10));
3865f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(3456, s.nextInt(10));
3866f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3867f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("E3456");
3868f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextInt(16));
3869f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(930902, s.nextInt(16));
3870f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // The following test case fails on RI, because RI does not support
3871f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // letter as leading digit
3872f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("E3,456");
3873f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
3874f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        if (!disableRIBugs) {
3875f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertTrue(s.hasNextInt(16));
3876f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertEquals(930902, s.nextInt(16));
3877f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3878f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // If parameter radix is illegal, the following test case fails on RI
3879f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            try {
3880f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                s.hasNextInt(Character.MIN_RADIX - 1);
3881f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                fail("Should throw IllegalArgumentException");
3882f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            } catch (IllegalArgumentException e) {
3883f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                // Expected
3884f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
3885f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
3886f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3887f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
3888f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * There are 3 types of zero digit in all locales, '0' '\u0966' '\u0e50'
3889f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * respectively, but they are not differentiated.
3890f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
3891f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("12300");
3892f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
3893f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextInt(10));
3894f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(12300, s.nextInt(10));
3895f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3896f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123\u0966\u0966");
3897f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
3898f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextInt(10));
3899f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(12300, s.nextInt(10));
3900f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3901f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123\u0e50\u0e50");
3902f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
3903f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextInt(10));
3904f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(12300, s.nextInt(10));
3905f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3906f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
3907f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * There are three types of negative prefix all in all. '' '-' '(' There
3908f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * are three types of negative suffix all in all. '' '-' ')' '(' and ')'
3909f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * must be used togethor. Prefix '-' and suffix '-' must be used
3910f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * exclusively.
3911f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
3912f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3913f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
3914f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * According to Integer regular expression: Integer :: = ( [-+]? (*
3915f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * Numeral ) ) | LocalPositivePrefix Numeral LocalPositiveSuffix |
3916f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * LocalNegativePrefix Numeral LocalNegativeSuffix 123- should be
3917f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * recognized by scanner with locale ar_AE, (123) shouble be recognized
3918f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * by scanner with locale mk_MK. But this is not the case on RI.
3919f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
3920f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123 123- -123-");
39218ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        s.useLocale(arLocale);
3922f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextInt(10));
3923f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-123, s.nextInt(10));
3924f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // The following test case fails on RI
3925f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        if (!disableRIBugs) {
3926f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertTrue(s.hasNextInt(10));
3927f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertEquals(-123, s.nextInt(10));
3928f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
3929f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextInt(10));
3930f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
3931f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextInt(10);
3932f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
3933f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
3934f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
3935f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
3936f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3937f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123 123- (123)");
39388ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        s.useLocale(mkLocale);
3939f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextInt(10));
3940f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-123, s.nextInt(10));
3941f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextInt(10));
3942f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
3943f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextInt();
3944f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
3945f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
3946f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
3947f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
3948f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Skip the un-recognizable token 123-.
3949f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("123-", s.next());
3950f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // The following test case fails on RI
3951f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        if (!disableRIBugs) {
3952f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertTrue(s.hasNextInt(10));
3953f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertEquals(-123, s.nextInt(10));
3954f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
3955f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
3956f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3957f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
3958f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws IOException
3959f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#hasNextInt(int)
3960f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
3961f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
3962f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.PARTIAL_COMPLETE,
3963f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "Regression test",
3964f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "hasNextInt",
3965f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {int.class}
3966f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
3967f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_hasNextIntI_cache() throws IOException {
3968f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        //regression for HARMONY-2063
3969f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 456");
3970f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextInt(16));
3971f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(291, s.nextInt(10));
3972f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(456, s.nextInt());
3973f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3974f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 456");
3975f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextInt(16));
3976f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextInt(8));
3977f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(83, s.nextInt());
3978f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(456, s.nextInt());
3979f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3980f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123 -456 -789");
3981f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextInt(8));
3982f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-123, s.nextShort());
3983f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-456, s.nextInt());
3984f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextShort(16));
3985f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-789, s.nextInt());
3986f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3987f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 456");
3988f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextInt());
3989f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
3990f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
3991f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextInt();
3992f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw IllegalStateException");
3993f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
3994f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
3995f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
3996f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
3997f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
3998f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws IOException
3999f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#hasNextInt()
4000f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
4001f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
4002f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
4003f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
4004f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "hasNextInt",
4005f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
4006f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
4007f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_hasNextInt() throws IOException {
40088ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        Locale mkLocale = new Locale("mk", "MK");
40098ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        Locale arLocale = new Locale("ar", "AE");
40108ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        Locale deLocale = new Locale("de", "CH");
40118ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        Locale[] requiredLocales = {Locale.GERMANY, Locale.ENGLISH, Locale.CHINESE,
40128ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot                mkLocale, arLocale, deLocale};
40138ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
40148ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot            // locale dependent test, bug 1943269
40158ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot            return;
40168ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        }
4017f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 456");
4018f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextInt());
4019f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(123, s.nextInt());
4020f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(456, s.nextInt());
4021f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextInt());
4022f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
4023f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextInt();
4024f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NoSuchElementException");
4025f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
4026f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
4027f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
4028f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4029f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If the radix is different from 10
4030f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 456");
4031f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useRadix(5);
4032f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextInt());
4033f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(38, s.nextInt());
4034f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextInt());
4035f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
4036f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextInt();
4037f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
4038f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
4039f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
4040f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
4041f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4042f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If the number is out of range
4043f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123456789123456789123456789123456789");
4044f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextInt());
4045f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4046f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
4047f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * Different locale can only recognize corresponding locale sensitive
4048f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * string. ',' is used in many locales as group separator.
4049f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
4050f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23,456");
4051f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
4052f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextInt());
4053f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
4054f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextInt());
4055f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4056f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
4057f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * ''' is used in many locales as group separator.
4058f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
4059f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23'456");
4060f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
4061f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextInt());
40628ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        s.useLocale(deLocale);
4063f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextInt());
4064f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4065f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
4066f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * The input string has Arabic-Indic digits.
4067f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
4068f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("1\u06662");
4069f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useRadix(5);
4070f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextInt());
4071f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4072f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
4073f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * '.' is used in many locales as group separator. The input string
4074f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * has Arabic-Indic digits .
4075f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
4076f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23.45\u0666");
4077f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
4078f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextInt());
4079f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
4080f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextInt());
4081f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4082f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // The input string starts with zero
4083f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("03,456");
4084f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
4085f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextInt());
4086f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
4087f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextInt();
4088f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
4089f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
4090f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
4091f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
4092f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4093f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("03456");
4094f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextInt());
4095f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(3456, s.nextInt());
4096f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4097f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("\u06603,456");
4098f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
4099f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(3456, s.nextInt());
4100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("E3456");
4102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useRadix(16);
4103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextInt());
4104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(930902, s.nextInt());
4105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // The following test case fails on RI, because RI does not support
4107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // letter as leading digit
4108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("E3,456");
4109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
4110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useRadix(16);
4111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        if (!disableRIBugs) {
4112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertTrue(s.hasNextInt());
4113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertEquals(930902, s.nextInt());
4114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
4115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
4117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * There are 3 types of zero digit in all locales, '0' '\u0966' '\u0e50'
4118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * respectively, but they are not differentiated.
4119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
4120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("12300");
4121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
4122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextInt());
4123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(12300, s.nextInt());
4124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123\u0966\u0966");
4126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
4127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextInt());
4128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(12300, s.nextInt());
4129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123\u0e50\u0e50");
4131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
4132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextInt());
4133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(12300, s.nextInt());
4134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
4136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * There are three types of negative prefix all in all. '' '-' '(' There
4137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * are three types of negative suffix all in all. '' '-' ')' '(' and ')'
4138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * must be used togethor. Prefix '-' and suffix '-' must be used
4139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * exclusively.
4140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
4141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
4143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * According to Integer regular expression: Integer :: = ( [-+]? (*
4144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * Numeral ) ) | LocalPositivePrefix Numeral LocalPositiveSuffix |
4145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * LocalNegativePrefix Numeral LocalNegativeSuffix 123- should be
4146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * recognized by scanner with locale ar_AE, (123) shouble be recognized
4147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * by scanner with locale mk_MK. But this is not the case on RI.
4148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
4149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123 123- -123-");
41508ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        s.useLocale(arLocale);
4151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextInt());
4152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-123, s.nextInt());
4153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // The following test case fails on RI
4154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        if (!disableRIBugs) {
4155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertTrue(s.hasNextInt());
4156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertEquals(-123, s.nextInt());
4157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
4158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextInt());
4159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
4160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextInt();
4161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
4162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
4163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
4164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
4165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123 123- (123)");
41678ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        s.useLocale(mkLocale);
4168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextInt());
4169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-123, s.nextInt());
4170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
4171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextInt();
4172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
4173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
4174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
4175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
4176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Skip the un-recognizable token 123-.
4177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("123-", s.next());
4178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // The following test case fails on RI
4179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        if (!disableRIBugs) {
4180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertTrue(s.hasNextInt());
4181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertEquals(-123, s.nextInt());
4182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
4183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
4185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
4186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.hasNextInt();
4187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalStateException expected");
4188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
4189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            //expected
4190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
4191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
4192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
4194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws IOException
4195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#hasNextFloat()
4196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
4197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
4198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
4199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
4200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "hasNextFloat",
4201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
4202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
4203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_hasNextFloat() throws IOException {
42048ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        Locale mkLocale = new Locale("mk", "MK");
42058ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        Locale arLocale = new Locale("ar", "AE");
42068ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        Locale[] requiredLocales = {Locale.GERMANY, Locale.ENGLISH, mkLocale, arLocale};
42078ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
42088ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot            // locale dependent test, bug 1943269
42098ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot            return;
42108ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        }
4211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 45\u0666. 123.4 .123 ");
4212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
4213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextFloat());
4214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals((float)123.0, s.nextFloat());
4215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextFloat());
4216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals((float)456.0, s.nextFloat());
4217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextFloat());
4218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals((float)123.4, s.nextFloat());
4219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextFloat());
4220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals((float)0.123, s.nextFloat());
4221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextFloat());
4222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
4223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextFloat();
4224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NoSuchElementException");
4225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
4226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
4227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
4228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("+123.4 -456.7 123,456.789 0.1\u06623,4");
4230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
4231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextFloat());
4232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals((float)123.4, s.nextFloat());
4233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextFloat());
4234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals((float)-456.7, s.nextFloat());
4235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextFloat());
4236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals((float)123456.789, s.nextFloat());
4237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextFloat());
4238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
4239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextFloat();
4240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
4241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
4242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
4243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
4244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Scientific notation
4246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("+123.4E10 -456.7e+12 123,456.789E-10");
4247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
4248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextFloat());
4249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals((float)1.234E12, s.nextFloat());
4250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextFloat());
4251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals((float)-4.567E14, s.nextFloat());
4252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextFloat());
4253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals((float)1.23456789E-5, s.nextFloat());
4254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("NaN Infinity -Infinity");
4256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextFloat());
4257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(Float.NaN, s.nextFloat());
4258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextFloat());
4259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(Float.POSITIVE_INFINITY, s.nextFloat());
4260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextFloat());
4261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(Float.NEGATIVE_INFINITY, s.nextFloat());
4262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        String str=String.valueOf(Float.MAX_VALUE*2);
4264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s=new Scanner(str);
4265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextFloat());
4266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(Float.POSITIVE_INFINITY,s.nextFloat());
4267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
4269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * Different locale can only recognize corresponding locale sensitive
4270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * string. ',' is used in many locales as group separator.
4271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
4272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23,456 23,456");
4273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
4274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextFloat());
4275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals((float)23456.0, s.nextFloat());
4276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
4277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextFloat());
4278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals((float)23.456, s.nextFloat());
4279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23.456 23.456");
4281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
4282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextFloat());
4283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals((float)23.456, s.nextFloat());
4284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
4285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextFloat());
4286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals((float)23456.0, s.nextFloat());
4287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23,456.7 23.456,7");
4289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
4290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextFloat());
4291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals((float)23456.7, s.nextFloat());
4292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
4293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextFloat());
4294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals((float)23456.7, s.nextFloat());
4295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123.4 123.4- -123.4-");
42978ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        s.useLocale(arLocale);
4298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextFloat());
4299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals((float)-123.4, s.nextFloat());
4300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        //The following test case fails on RI
4301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        if (!disableRIBugs) {
4302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertTrue(s.hasNextFloat());
4303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertEquals((float)-123.4, s.nextFloat());
4304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
4305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
4306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextFloat();
4307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
4308f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
4309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
4310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
4311f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4312f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("(123) 123- -123");
43138ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        s.useLocale(mkLocale);
4314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        if (!disableRIBugs) {
4315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertTrue(s.hasNextFloat());
4316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertEquals((float)-123.0, s.nextFloat());
4317f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
4318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextFloat());
4319f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
4320f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextFloat();
4321f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
4322f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
4323f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
4324f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
4325f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Skip the un-recognizable token 123-.
4326f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        if (!disableRIBugs) {
4327f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertEquals("123-", s.next());
4328f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertTrue(s.hasNextFloat());
4329f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertEquals((float)-123.0, s.nextFloat());
4330f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
4331f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4332f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("+123.4 -456.7");
4333f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
4334f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextFloat());
4335f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
4336f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try{
4337f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextFloat();
4338f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw IllegalStateException");
4339f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }catch(IllegalStateException e){
4340f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            //expected
4341f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
4342f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4343f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
4344f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4345f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
4346f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws IOException
4347f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#hasNextShort(int)
4348f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
4349f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
4350f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.PARTIAL_COMPLETE,
4351f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "IllegalStateException checking missed.",
4352f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "hasNextShort",
4353f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {int.class}
4354f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
4355f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_hasNextShortI() throws IOException {
43568ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        Locale[] requiredLocales = {Locale.GERMANY, Locale.ENGLISH, Locale.CHINESE};
43578ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
43588ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot            // locale dependent test, bug 1943269
43598ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot            return;
43608ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        }
4361f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 456");
4362f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextShort(10));
4363f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(123, s.nextShort(10));
4364f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextShort(10));
4365f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(456, s.nextShort(10));
4366f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextShort(10));
4367f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
4368f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextShort(10);
4369f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NoSuchElementException");
4370f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
4371f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
4372f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
4373f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4374f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If the radix is different from 10
4375f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 456");
4376f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextShort(5));
4377f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(38, s.nextShort(5));
4378f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextShort(5));
4379f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
4380f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextShort(5);
4381f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
4382f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
4383f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
4384f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
4385f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4386f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If the number is out of range
4387f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123456789");
4388f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextShort(10));
4389f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
4390f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextShort(10);
4391f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
4392f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
4393f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
4394f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
4395f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4396f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
4397f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * Different locale can only recognize corresponding locale sensitive
4398f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * string. ',' is used in many locales as group separator.
4399f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
4400f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23,456 23,456");
4401f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
4402f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextShort(10));
4403f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
4404f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextShort(10);
4405f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
4406f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
4407f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
4408f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
4409f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
4410f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If exception is thrown out, input will not be advanced.
4411f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextShort(10));
4412f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextInt(10));
4413f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextShort(10));
4414f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextInt(10));
4415f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4416f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
4417f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * ''' is used in many locales as group separator.
4418f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
4419f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23'456 23'456");
4420f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
4421f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextShort(10));
4422f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
4423f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextShort(10);
4424f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
4425f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
4426f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
4427f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
4428f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(new Locale("de", "CH"));
4429f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If exception is thrown out, input will not be advanced.
4430f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextShort(10));
4431f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextShort(10));
4432f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextShort(10));
4433f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextShort(10));
4434f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4435f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
4436f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * The input string has Arabic-Indic digits.
4437f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
4438f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("1\u06602 1\u06662");
4439f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextShort(10));
4440f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(102, s.nextShort(10));
4441f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextShort(5));
4442f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
4443f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextShort(5);
4444f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
4445f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
4446f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
4447f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
4448f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextShort(10));
4449f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(162, s.nextShort(10));
4450f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4451f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
4452f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * '.' is used in many locales as group separator. The input string
4453f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * has Arabic-Indic digits .
4454f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
4455f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23.45\u0666 23.456");
4456f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
4457f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextShort(10));
4458f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
4459f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextShort(10);
4460f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
4461f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
4462f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
4463f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
4464f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
4465f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If exception is thrown out, input will not be advanced.
4466f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextShort(10));
4467f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextShort(10));
4468f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextShort(10));
4469f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextShort(10));
4470f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4471f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // The input string starts with zero
4472f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("03,456");
4473f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
4474f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextShort(10));
4475f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
4476f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextShort(10);
4477f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
4478f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
4479f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
4480f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
4481f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4482f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("03456");
4483f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextShort(10));
4484f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(3456, s.nextShort(10));
4485f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4486f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("\u06603,456");
4487f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
4488f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextShort(10));
4489f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(3456, s.nextShort(10));
4490f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4491f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("E34");
4492f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextShort(16));
4493f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(3636, s.nextShort(16));
4494f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4495f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
4496f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * There are 3 types of zero digit in all locales, '0' '\u0966' '\u0e50'
4497f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * respectively, but they are not differentiated.
4498f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
4499f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("12300");
4500f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
4501f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextShort(10));
4502f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(12300, s.nextShort(10));
4503f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4504f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123\u0966\u0966");
4505f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
4506f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextShort(10));
4507f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(12300, s.nextShort(10));
4508f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4509f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123\u0e50\u0e50");
4510f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
4511f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextShort(10));
4512f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(12300, s.nextShort(10));
4513f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4514f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123");
4515f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(new Locale("ar", "AE"));
4516f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextShort(10));
4517f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-123, s.nextShort(10));
4518f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4519f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4520f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123");
4521f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(new Locale("mk", "MK"));
4522f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextShort(10));
4523f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-123, s.nextShort(10));
4524f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
4525f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4526f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
4527f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws IOException
4528f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#hasNextShort()
4529f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
4530f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
4531f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
4532f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
4533f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "hasNextShort",
4534f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
4535f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
4536f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_hasNextShort() throws IOException {
45378ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        Locale deLocale = new Locale("de", "CH");
45388ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        Locale arLocale = new Locale("ar", "AE");
45398ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        Locale mkLocale = new Locale("mk", "MK");
45408ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        Locale[] requiredLocales = {Locale.GERMANY, Locale.ENGLISH, Locale.CHINESE, deLocale,
45418ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot                arLocale, mkLocale};
45428ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
45438ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot            // locale dependent test, bug 1943269
45448ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot            return;
45458ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        }
4546f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 456");
4547f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextShort());
4548f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(123, s.nextShort());
4549f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextShort());
4550f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(456, s.nextShort());
4551f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextShort());
4552f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
4553f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextShort();
4554f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NoSuchElementException");
4555f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
4556f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
4557f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
4558f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4559f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If the radix is different from 10
4560f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 456");
4561f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useRadix(5);
4562f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextShort());
4563f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(38, s.nextShort());
4564f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextShort());
4565f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
4566f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextShort();
4567f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
4568f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
4569f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
4570f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
4571f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4572f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If the number is out of range
4573f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123456789");
4574f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextShort());
4575f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
4576f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextShort();
4577f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
4578f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
4579f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
4580f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
4581f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4582f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
4583f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * Different locale can only recognize corresponding locale sensitive
4584f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * string. ',' is used in many locales as group separator.
4585f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
4586f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23,456 23,456");
4587f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
4588f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextShort());
4589f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
4590f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextShort();
4591f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
4592f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
4593f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
4594f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
4595f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
4596f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If exception is thrown out, input will not be advanced.
4597f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextShort());
4598f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextShort());
4599f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextShort());
4600f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextShort());
4601f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4602f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
4603f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * ''' is used in many locales as group separator.
4604f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
4605f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23'456 23'456");
4606f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
4607f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextShort());
4608f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
4609f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextShort();
4610f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
4611f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
4612f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
4613f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
46148ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        s.useLocale(deLocale);
4615f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If exception is thrown out, input will not be advanced.
4616f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextShort());
4617f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextShort());
4618f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextShort());
4619f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextShort());
4620f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4621f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
4622f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * The input string has Arabic-Indic digits.
4623f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
4624f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("1\u06602 1\u06662");
4625f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(102, s.nextShort());
4626f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useRadix(5);
4627f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextShort());
4628f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
4629f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextShort();
4630f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
4631f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
4632f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
4633f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
4634f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useRadix(10);
4635f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextShort());
4636f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(162, s.nextShort());
4637f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4638f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
4639f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * '.' is used in many locales as group separator. The input string
4640f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * has Arabic-Indic digits .
4641f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
4642f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23.45\u0666 23.456");
4643f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
4644f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextShort());
4645f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
4646f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextShort();
4647f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
4648f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
4649f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
4650f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
4651f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
4652f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If exception is thrown out, input will not be advanced.
4653f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextShort());
4654f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextShort());
4655f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextShort());
4656f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextShort());
4657f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4658f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // The input string starts with zero
4659f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("03,456");
4660f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
4661f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextShort());
4662f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
4663f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextShort();
4664f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
4665f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
4666f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
4667f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
4668f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4669f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("03456");
4670f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextShort());
4671f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(3456, s.nextShort());
4672f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4673f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("\u06603,456");
4674f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
4675f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextShort());
4676f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(3456, s.nextShort());
4677f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4678f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("E34");
4679f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useRadix(16);
4680f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextShort());
4681f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(3636, s.nextShort());
4682f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4683f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
4684f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * There are 3 types of zero digit in all locales, '0' '\u0966' '\u0e50'
4685f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * respectively, but they are not differentiated.
4686f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
4687f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("12300");
4688f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
4689f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextShort());
4690f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(12300, s.nextShort());
4691f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4692f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123\u0966\u0966");
4693f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
4694f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextShort());
4695f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(12300, s.nextShort());
4696f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4697f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123\u0e50\u0e50");
4698f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
4699f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextShort());
4700f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(12300, s.nextShort());
4701f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4702f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123");
47038ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        s.useLocale(arLocale);
4704f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextShort());
4705f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-123, s.nextShort());
4706f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4707f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123");
47088ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        s.useLocale(mkLocale);
4709f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextShort());
4710f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-123, s.nextShort());
4711f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4712f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
4713f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
4714f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.hasNextShort();
4715f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalStateException expected");
4716f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
4717f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            //expected
4718f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
4719f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
4720f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4721f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
4722f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws IOException
4723f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#hasNextShort(int)
4724f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
4725f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
4726f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.PARTIAL_COMPLETE,
4727f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "Regression test.",
4728f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "hasNextShort",
4729f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {int.class}
4730f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
4731f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_hasNextShortI_cache() throws IOException {
4732f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        //regression for HARMONY-2063
4733f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 456");
4734f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextShort(16));
4735f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(291, s.nextShort());
4736f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(456, s.nextShort());
4737f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4738f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 456");
4739f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextShort(16));
4740f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextShort(8));
4741f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(83, s.nextShort());
4742f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(456, s.nextShort());
4743f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4744f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123 -456 -789");
4745f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextShort(8));
4746f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-123, s.nextInt());
4747f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-456, s.nextShort());
4748f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextInt(16));
4749f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-789, s.nextShort());
4750f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4751f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 456");
4752f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextShort());
4753f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
4754f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
4755f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextShort();
4756f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw IllegalStateException");
4757f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
4758f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
4759f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
4760f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
4761f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4762f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
4763f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws IOException
4764f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#hasNextLong(int)
4765f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
4766f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
4767f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.PARTIAL_COMPLETE,
4768f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "IllegalStateException checking missed.",
4769f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "hasNextLong",
4770f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {int.class}
4771f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
4772f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_hasNextLongI() throws IOException {
47738ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        Locale[] requiredLocales = {Locale.GERMANY, Locale.ENGLISH, Locale.CHINESE};
47748ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
47758ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot            // locale dependent test, bug 1943269
47768ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot            return;
47778ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        }
4778f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 456");
4779f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLong(10));
4780f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(123, s.nextLong(10));
4781f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLong(10));
4782f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(456, s.nextLong(10));
4783f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextLong(10));
4784f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
4785f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextLong(10);
4786f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NoSuchElementException");
4787f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
4788f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
4789f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
4790f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4791f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If the radix is different from 10
4792f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 456");
4793f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLong(5));
4794f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(38, s.nextLong(5));
4795f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextLong(5));
4796f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
4797f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextLong(5);
4798f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
4799f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
4800f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
4801f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
4802f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4803f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If the number is out of range
4804f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123456789123456789123456789123456789");
4805f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextLong(10));
4806f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
4807f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextLong(10);
4808f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
4809f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
4810f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
4811f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
4812f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4813f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
4814f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * Different locale can only recognize corresponding locale sensitive
4815f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * string. ',' is used in many locales as group separator.
4816f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
4817f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23,456 23,456");
4818f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
4819f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextShort(10));
4820f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
4821f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextLong(10);
4822f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
4823f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
4824f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
4825f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
4826f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
4827f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If exception is thrown out, input will not be advanced.
4828f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLong(10));
4829f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextLong(10));
4830f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLong(10));
4831f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextLong(10));
4832f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4833f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
4834f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * ''' is used in many locales as group separator.
4835f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
4836f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23'456 23'456");
4837f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
4838f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextLong(10));
4839f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
4840f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextLong(10);
4841f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
4842f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
4843f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
4844f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
4845f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(new Locale("de", "CH"));
4846f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If exception is thrown out, input will not be advanced.
4847f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLong(10));
4848f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextLong(10));
4849f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLong(10));
4850f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextLong(10));
4851f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4852f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
4853f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * The input string has Arabic-Indic digits.
4854f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
4855f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("1\u06602 1\u06662");
4856f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLong(10));
4857f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(102, s.nextLong(10));
4858f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextLong(5));
4859f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
4860f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextLong(5);
4861f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
4862f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
4863f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
4864f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
4865f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLong(10));
4866f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(162, s.nextLong(10));
4867f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4868f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
4869f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * '.' is used in many locales as group separator. The input string
4870f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * has Arabic-Indic digits .
4871f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
4872f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23.45\u0666 23.456");
4873f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
4874f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextLong(10));
4875f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
4876f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextLong(10);
4877f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
4878f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
4879f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
4880f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
4881f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
4882f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If exception is thrown out, input will not be advanced.
4883f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLong(10));
4884f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextLong(10));
4885f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLong(10));
4886f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextLong(10));
4887f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4888f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // The input string starts with zero
4889f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("03,456");
4890f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
4891f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextLong(10));
4892f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
4893f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextLong(10);
4894f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
4895f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
4896f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
4897f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
4898f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4899f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("03456");
4900f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLong(10));
4901f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(3456, s.nextLong(10));
4902f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4903f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("\u06603,456");
4904f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
4905f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLong(10));
4906f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(3456, s.nextLong(10));
4907f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4908f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("E34");
4909f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLong(16));
4910f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(3636, s.nextLong(16));
4911f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4912f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
4913f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * There are 3 types of zero digit in all locales, '0' '\u0966' '\u0e50'
4914f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * respectively, but they are not differentiated.
4915f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
4916f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("12300");
4917f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
4918f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLong(10));
4919f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(12300, s.nextLong(10));
4920f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4921f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123\u0966\u0966");
4922f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
4923f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLong(10));
4924f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(12300, s.nextLong(10));
4925f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4926f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123\u0e50\u0e50");
4927f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
4928f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLong(10));
4929f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(12300, s.nextLong(10));
4930f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4931f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123");
4932f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(new Locale("ar", "AE"));
4933f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLong(10));
4934f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-123, s.nextLong(10));
4935f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4936f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4937f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123");
4938f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(new Locale("mk", "MK"));
4939f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLong(10));
4940f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-123, s.nextLong(10));
4941f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
4942f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4943f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
4944f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws IOException
4945f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#hasNextLong(int)
4946f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
4947f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
4948f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.PARTIAL_COMPLETE,
4949f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "Regression test.",
4950f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "hasNextLong",
4951f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {int.class}
4952f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
4953f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_hasNextLongI_cache() throws IOException {
4954f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        //regression for HARMONY-2063
4955f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 456");
4956f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLong(16));
4957f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(291, s.nextLong());
4958f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(456, s.nextLong());
4959f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4960f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 456");
4961f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLong(16));
4962f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLong(8));
4963f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(83, s.nextLong());
4964f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(456, s.nextLong());
4965f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4966f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123 -456 -789");
4967f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLong(8));
4968f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-123, s.nextInt());
4969f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-456, s.nextLong());
4970f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextShort(16));
4971f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-789, s.nextLong());
4972f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4973f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 456");
4974f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLong());
4975f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
4976f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
4977f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextLong();
4978f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw IllegalStateException");
4979f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
4980f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
4981f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
4982f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
4983f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
4984f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
4985f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws IOException
4986f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#hasNextLong()
4987f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
4988f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
4989f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
4990f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
4991f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "hasNextLong",
4992f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
4993f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
4994f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_hasNextLong() throws IOException {
49958ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        Locale deLocale = new Locale("de", "CH");
49968ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        Locale arLocale = new Locale("ar", "AE");
49978ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        Locale mkLocale = new Locale("mk", "MK");
49988ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        Locale[] requiredLocales = {Locale.GERMANY, Locale.ENGLISH, Locale.CHINESE, deLocale,
49998ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot                arLocale, mkLocale};
50008ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
50018ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot            // locale dependent test, bug 1943269
50028ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot            return;
50038ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        }
5004f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 456");
5005f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLong());
5006f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(123, s.nextLong());
5007f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLong());
5008f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(456, s.nextLong());
5009f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextLong());
5010f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
5011f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextLong();
5012f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NoSuchElementException");
5013f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
5014f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
5015f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5016f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5017f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If the radix is different from 10
5018f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 456");
5019f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useRadix(5);
5020f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLong());
5021f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(38, s.nextLong());
5022f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextLong());
5023f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
5024f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextLong();
5025f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
5026f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
5027f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
5028f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5029f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5030f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If the number is out of range
5031f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123456789123456789123456789123456789");
5032f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextLong());
5033f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
5034f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextLong();
5035f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
5036f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
5037f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
5038f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5039f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5040f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
5041f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * Different locale can only recognize corresponding locale sensitive
5042f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * string. ',' is used in many locales as group separator.
5043f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
5044f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23,456 23,456");
5045f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
5046f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextLong());
5047f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
5048f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextLong();
5049f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
5050f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
5051f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
5052f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5053f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
5054f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If exception is thrown out, input will not be advanced.
5055f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLong());
5056f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextLong());
5057f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLong());
5058f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextLong());
5059f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5060f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
5061f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * ''' is used in many locales as group separator.
5062f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
5063f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23'456 23'456");
5064f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
5065f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextLong());
5066f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
5067f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextLong();
5068f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
5069f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
5070f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
5071f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
50728ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        s.useLocale(deLocale);
5073f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If exception is thrown out, input will not be advanced.
5074f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLong());
5075f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextLong());
5076f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLong());
5077f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextLong());
5078f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5079f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
5080f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * The input string has Arabic-Indic digits.
5081f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
5082f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("1\u06602 1\u06662");
5083f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(102, s.nextLong());
5084f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useRadix(5);
5085f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextLong());
5086f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
5087f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextLong();
5088f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
5089f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
5090f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
5091f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5092f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useRadix(10);
5093f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLong());
5094f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(162, s.nextLong());
5095f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5096f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
5097f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * '.' is used in many locales as group separator. The input string
5098f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * has Arabic-Indic digits .
5099f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
5100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23.45\u0666 23.456");
5101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
5102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextLong());
5103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
5104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextLong();
5105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
5106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
5107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
5108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
5110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If exception is thrown out, input will not be advanced.
5111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLong());
5112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextLong());
5113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLong());
5114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456, s.nextLong());
5115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // The input string starts with zero
5117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("03,456");
5118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
5119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextLong());
5120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
5121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextLong();
5122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
5123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
5124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
5125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("03456");
5128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLong());
5129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(3456, s.nextLong());
5130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("\u06603,456");
5132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
5133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLong());
5134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(3456, s.nextLong());
5135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("E34");
5137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useRadix(16);
5138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLong());
5139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(3636, s.nextLong());
5140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
5142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * There are 3 types of zero digit in all locales, '0' '\u0966' '\u0e50'
5143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * respectively, but they are not differentiated.
5144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
5145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("12300");
5146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
5147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLong());
5148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(12300, s.nextLong());
5149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123\u0966\u0966");
5151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
5152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLong());
5153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(12300, s.nextLong());
5154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123\u0e50\u0e50");
5156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.CHINESE);
5157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLong());
5158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(12300, s.nextLong());
5159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123");
51618ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        s.useLocale(arLocale);
5162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLong());
5163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-123, s.nextLong());
5164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123");
51668ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        s.useLocale(mkLocale);
5167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLong());
5168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-123, s.nextLong());
5169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
5171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
5172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.hasNextLong();
5173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalStateException expected");
5174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
5175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            //expected
5176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
5178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
5180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws IOException
5181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#nextDouble()
5182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
5183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
5184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
5185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
5186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "hasNextDouble",
5187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
5188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
5189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_hasNextDouble() throws IOException {
51908ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        Locale[] requiredLocales = {Locale.GERMANY, Locale.ENGLISH};
51918ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
51928ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot            // locale dependent test, bug 1943269
51938ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot            return;
51948ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        }
5195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 45\u0666. 123.4 .123 ");
5196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
5197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextDouble());
5198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(123.0, s.nextDouble());
5199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextDouble());
5200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(456.0, s.nextDouble());
5201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextDouble());
5202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(123.4, s.nextDouble());
5203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextDouble());
5204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0.123, s.nextDouble());
5205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextDouble());
5206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
5207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextDouble();
5208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NoSuchElementException");
5209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
5210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
5211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("+123.4 -456.7 123,456.789 0.1\u06623,4");
5214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
5215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextDouble());
5216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(123.4, s.nextDouble());
5217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextDouble());
5218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-456.7, s.nextDouble());
5219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextDouble());
5220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(123456.789, s.nextDouble());
5221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextDouble());
5222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
5223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextDouble();
5224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
5225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
5226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
5227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Scientific notation
5230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("+123.4E10 -456.7e+12 123,456.789E-10");
5231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
5232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextDouble());
5233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(1.234E12, s.nextDouble());
5234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextDouble());
5235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-4.567E14, s.nextDouble());
5236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextDouble());
5237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(1.23456789E-5, s.nextDouble());
5238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("NaN Infinity -Infinity");
5240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextDouble());
5241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(Double.NaN, s.nextDouble());
5242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextDouble());
5243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(Double.POSITIVE_INFINITY, s.nextDouble());
5244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextDouble());
5245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(Double.NEGATIVE_INFINITY, s.nextDouble());
5246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        String str=String.valueOf(Double.MAX_VALUE*2);
5248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s=new Scanner(str);
5249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextDouble());
5250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(Double.POSITIVE_INFINITY,s.nextDouble());
5251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
5253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * Different locale can only recognize corresponding locale sensitive
5254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * string. ',' is used in many locales as group separator.
5255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
5256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23,456 23,456");
5257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
5258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextDouble());
5259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456.0, s.nextDouble());
5260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
5261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextDouble());
5262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23.456, s.nextDouble());
5263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23.456 23.456");
5265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
5266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextDouble());
5267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23.456, s.nextDouble());
5268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
5269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextDouble());
5270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456.0, s.nextDouble());
5271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23,456.7 23.456,7");
5273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
5274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextDouble());
5275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456.7, s.nextDouble());
5276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
5277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextDouble());
5278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456.7, s.nextDouble());
5279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123.4");
5281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
5282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextDouble());
5283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-123.4, s.nextDouble());
5284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("+123.4 -456.7");
5286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
5287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextDouble());
5288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
5289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try{
5290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextDouble();
5291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw IllegalStateException");
5292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }catch(IllegalStateException e){
5293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            //expected
5294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
5296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
5298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws IOException
5299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#hasNextBigDecimal()
5300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
5301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
5302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
5303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
5304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "hasNextBigDecimal",
5305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
5306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
5307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_hasNextBigDecimal() throws IOException {
53088ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        Locale[] requiredLocales = {Locale.GERMANY, Locale.ENGLISH};
53098ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
53108ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot            // locale dependent test, bug 1943269
53118ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot            return;
53128ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        }
5313f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 45\u0666. 123.4 .123 ");
5314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
5315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigDecimal());
5316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigDecimal("123"), s.nextBigDecimal());
5317f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigDecimal());
5318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigDecimal("456"), s.nextBigDecimal());
5319f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigDecimal());
5320f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigDecimal("123.4"), s.nextBigDecimal());
5321f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigDecimal());
5322f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigDecimal("0.123"), s.nextBigDecimal());
5323f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextBigDecimal());
5324f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
5325f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBigDecimal();
5326f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NoSuchElementException");
5327f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
5328f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
5329f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5330f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5331f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("+123.4 -456.7 123,456.789 0.1\u06623,4");
5332f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
5333f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigDecimal());
5334f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigDecimal("123.4"), s.nextBigDecimal());
5335f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigDecimal());
5336f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigDecimal("-456.7"), s.nextBigDecimal());
5337f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigDecimal());
5338f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigDecimal("123456.789"), s.nextBigDecimal());
5339f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextBigDecimal());
5340f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
5341f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBigDecimal();
5342f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
5343f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
5344f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
5345f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5346f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5347f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Scientific notation
5348f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("+123.4E10 -456.7e+12 123,456.789E-10");
5349f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
5350f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigDecimal());
5351f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigDecimal("1.234E12"), s.nextBigDecimal());
5352f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigDecimal());
5353f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigDecimal("-4.567E14"), s.nextBigDecimal());
5354f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigDecimal());
5355f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigDecimal("1.23456789E-5"), s.nextBigDecimal());
5356f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5357f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("NaN");
5358f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(s.hasNextBigDecimal());
5359f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
5360f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBigDecimal();
5361f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
5362f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
5363f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
5364f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5365f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5366f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
5367f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * Different locale can only recognize corresponding locale sensitive
5368f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * string. ',' is used in many locales as group separator.
5369f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
5370f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23,456 23,456");
5371f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
5372f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigDecimal());
5373f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigDecimal("23456"), s.nextBigDecimal());
5374f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
5375f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigDecimal());
5376f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigDecimal("23.456"), s.nextBigDecimal());
5377f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5378f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23.456 23.456");
5379f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
5380f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigDecimal());
5381f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigDecimal("23.456"), s.nextBigDecimal());
5382f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
5383f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigDecimal());
5384f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigDecimal("23456"), s.nextBigDecimal());
5385f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5386f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23,456.7");
5387f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
5388f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigDecimal());
5389f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigDecimal("23456.7"), s.nextBigDecimal());
5390f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5391f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123.4");
5392f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
5393f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextBigDecimal());
5394f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigDecimal("-123.4"), s.nextBigDecimal());
5395f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5396f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
5397f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
5398f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.hasNextBigDecimal();
5399f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalStateException expected");
5400f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
5401f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            //expected
5402f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5403f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
5404f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5405f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    private static class MockStringReader extends StringReader {
5406f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5407f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        public MockStringReader(String param) {
5408f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            super(param);
5409f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5410f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5411f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        public int read(CharBuffer target) throws IOException {
5412f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            target.append('t');
5413f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            target.append('e');
5414f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            target.append('s');
5415f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            target.append('t');
5416f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            throw new IOException();
5417f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5418f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5419f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
5420f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5421f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    private static class MockStringReader2Read extends StringReader {
5422f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        private int timesRead = 1;
5423f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5424f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        public MockStringReader2Read(String param) {
5425f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            super(param);
5426f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5427f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5428f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        public int read(CharBuffer target) throws IOException {
5429f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            if (timesRead == 1) {
5430f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                target.append('1');
5431f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                target.append('2');
5432f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                target.append('3');
5433f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                timesRead++;
5434f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                return 3;
5435f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            } else if (timesRead == 2) {
5436f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                target.append('t');
5437f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                timesRead++;
5438f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                return 1;
5439f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            } else {
5440f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                throw new IOException();
5441f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
5442f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5443f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5444f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
5445f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5446f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
5447f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#findWithinHorizon(Pattern, int)
5448f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
5449f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
5450f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
5451f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
5452f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "findWithinHorizon",
5453f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.util.regex.Pattern.class, int.class}
5454f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
5455f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @KnownFailure("findWithinHorizon method doesn't work properly")
5456f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_findWithinHorizon_LPatternI(){
5457f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5458f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // This method searches through the input up to the specified search
5459f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // horizon(exclusive).
5460f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123test");
5461f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        String result = s.findWithinHorizon(Pattern.compile("\\p{Lower}"), 5);
5462f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("t", result);
5463f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        MatchResult mresult = s.match();
5464f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(3, mresult.start());
5465f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(4, mresult.end());
5466f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5467f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("12345test1234test next");
5468f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
5469f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * If the pattern is found the scanner advances past the input that
5470f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * matched and returns the string that matched the pattern.
5471f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
5472f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findWithinHorizon(Pattern.compile("\\p{Digit}+"), 2);
5473f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("12", result);
5474f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        mresult = s.match();
5475f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, mresult.start());
5476f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(2, mresult.end());
5477f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Postion is now pointing at the bar. "12|345test1234test next"
5478f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5479f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findWithinHorizon(Pattern.compile("\\p{Digit}+"), 6);
5480f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("345", result);
5481f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5482f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        mresult = s.match();
5483f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(2, mresult.start());
5484f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(5, mresult.end());
5485f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Postion is now pointing at the bar. "12345|test1234test next"
5486f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5487f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If no such pattern is detected then the null is returned and the
5488f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // scanner's position remains unchanged.
5489f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findWithinHorizon(Pattern.compile("\\p{Digit}+"), 3);
5490f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertNull(result);
5491f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5492f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
5493f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.match();
5494f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw IllegalStateException");
5495f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
5496f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
5497f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5498f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("345", mresult.group());
5499f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(2, mresult.start());
5500f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(5, mresult.end());
5501f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Postion is now still pointing at the bar. "12345|test1234test next"
5502f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5503f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If horizon is 0, then the horizon is ignored and this method
5504f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // continues to search through the input looking for the specified
5505f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // pattern without bound.
5506f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findWithinHorizon(Pattern.compile("\\p{Digit}+"), 0);
5507f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        mresult = s.match();
5508f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(9, mresult.start());
5509f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(13, mresult.end());
5510f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Postion is now pointing at the bar. "12345test1234|test next"
5511f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5512f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("test", s.next());
5513f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        mresult = s.match();
5514f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(13, mresult.start());
5515f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(17, mresult.end());
5516f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5517f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("next", s.next());
5518f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        mresult = s.match();
5519f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(18, mresult.start());
5520f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(22, mresult.end());
5521f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5522f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
5523f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.findWithinHorizon((Pattern) null, -1);
5524f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NullPointerException");
5525f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException e) {
5526f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
5527f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5528f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5529f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
5530f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.findWithinHorizon(Pattern.compile("\\p{Digit}+"), -1);
5531f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw IllegalArgumentException");
5532f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalArgumentException e) {
5533f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
5534f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5535f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5536f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
5537f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
5538f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.findWithinHorizon((Pattern) null, -1);
5539f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw IllegalStateException");
5540f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
5541f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
5542f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5543f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5544f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("test");
5545f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findWithinHorizon(Pattern.compile("\\w+"), 10);
5546f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("test", result);
5547f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5548f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("aa\n\rb");
5549f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        String patternStr = "^(a)$";
5550f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findWithinHorizon(Pattern.compile("a"), 5);
5551f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("a", result);
5552f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        mresult = s.match();
5553f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, mresult.start());
5554f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(1, mresult.end());
5555f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5556f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findWithinHorizon(Pattern.compile(patternStr,
5557f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                Pattern.MULTILINE), 5);
5558f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertNull(result);
5559f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5560f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
5561f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            mresult = s.match();
5562f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw IllegalStateException");
5563f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
5564f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
5565f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5566f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5567f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("");
5568f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findWithinHorizon(Pattern.compile("^"), 0);
5569f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("", result);
5570f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        MatchResult matchResult = s.match();
5571f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.start());
5572f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.end());
5573f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5574f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findWithinHorizon(Pattern.compile("$"), 0);
5575f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("", result);
5576f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
5577f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.start());
5578f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.end());
5579f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5580f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("1 fish 2 fish red fish blue fish");
5581f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findWithinHorizon(Pattern
5582f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                .compile("(\\d+) fish (\\d+) fish (\\w+) fish (\\w+)"), 10);
5583f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertNull(result);
5584f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5585f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
5586f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            mresult = s.match();
5587f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw IllegalStateException");
5588f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
5589f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
5590f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5591f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, mresult.groupCount());
5592f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5593f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findWithinHorizon(Pattern
5594f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                .compile("(\\d+) fish (\\d+) fish (\\w+) fish (\\w+)"), 100);
5595f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("1 fish 2 fish red fish blue", result);
5596f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        mresult = s.match();
5597f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(4, mresult.groupCount());
5598f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("1", mresult.group(1));
5599f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("2", mresult.group(2));
5600f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("red", mresult.group(3));
5601f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("blue", mresult.group(4));
5602f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5603f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("test");
5604f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
5605f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
5606f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.findWithinHorizon(Pattern.compile("test"), 1);
5607f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw IllegalStateException");
5608f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
5609f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
5610f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5611f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5612f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("word1 WorD2  ");
5613f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
5614f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
5615f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.findWithinHorizon(Pattern.compile("\\d+"), 10);
5616f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw IllegalStateException");
5617f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
5618f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
5619f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5620f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5621f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("word1 WorD2 wOrd3 ");
5622f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Pattern pattern = Pattern.compile("\\d+");
5623f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("1", s.findWithinHorizon(pattern, 10));
5624f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("WorD2", s.next());
5625f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("3", s.findWithinHorizon(pattern, 15));
5626f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5627f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Regression test
5628f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(new MockStringReader("MockStringReader"));
5629f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        pattern = Pattern.compile("test");
5630f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findWithinHorizon(pattern, 10);
5631f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("test", result);
5632f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5633f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test the situation when input length is longer than buffer size.
5634f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        StringBuilder stringBuilder = new StringBuilder();
5635f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        for (int i = 0; i < 1026; i++) {
5636f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            stringBuilder.append('a');
5637f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5638f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(stringBuilder.toString());
5639f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        pattern = Pattern.compile("\\p{Lower}+");
5640f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findWithinHorizon(pattern, 1026);
5641f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(stringBuilder.toString(), result);
5642f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5643f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test the situation when input length is longer than buffer size and
5644f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // set horizon to buffer size.
5645f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        stringBuilder = new StringBuilder();
5646f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        for (int i = 0; i < 1026; i++) {
5647f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            stringBuilder.append('a');
5648f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5649f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(stringBuilder.toString());
5650f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        pattern = Pattern.compile("\\p{Lower}+");
5651f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findWithinHorizon(pattern, 1022);
5652f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(1022, result.length());
5653f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(stringBuilder.subSequence(0, 1022), result);
5654f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5655f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test the situation, under which pattern is clipped by buffer.
5656f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        stringBuilder = new StringBuilder();
5657f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        for (int i = 0; i < 1022; i++) {
5658f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            stringBuilder.append(' ');
5659f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5660f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        stringBuilder.append("bbc");
5661f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(1025, stringBuilder.length());
5662f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(stringBuilder.toString());
5663f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        pattern = Pattern.compile("bbc");
5664f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findWithinHorizon(pattern, 1025);
5665f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(3, result.length());
5666f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(stringBuilder.subSequence(1022, 1025), result);
5667f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5668f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        stringBuilder = new StringBuilder();
5669f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        for (int i = 0; i < 1026; i++) {
5670f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            stringBuilder.append('a');
5671f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5672f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(stringBuilder.toString());
5673f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        pattern = Pattern.compile("\\p{Lower}+");
5674f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findWithinHorizon(pattern, 0);
5675f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(stringBuilder.toString(), result);
5676f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5677f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        stringBuilder = new StringBuilder();
5678f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        for (int i = 0; i < 10240; i++) {
5679f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            stringBuilder.append('-');
5680f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5681f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        stringBuilder.replace(0, 2, "aa");
5682f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(stringBuilder.toString());
5683f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findWithinHorizon(Pattern.compile("aa"), 0);
5684f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("aa", result);
5685f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5686f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("aaaa");
5687f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findWithinHorizon(Pattern.compile("a*"), 0);
5688f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("aaaa", result);
5689f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
5690f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5691f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
5692f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#findWithinHorizon(String, int) Copy of Pattern
5693f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *        test for String
5694f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
5695f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
5696f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
5697f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
5698f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "findWithinHorizon",
5699f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.String.class, int.class}
5700f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
5701f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_findWithinHorizon_Ljava_lang_StringI() {
5702f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5703f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // This method searches through the input up to the specified search
5704f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // horizon(exclusive).
5705f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123test");
5706f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        String result = s.findWithinHorizon("\\p{Lower}", 5);
5707f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("t", result);
5708f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        MatchResult mresult = s.match();
5709f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(3, mresult.start());
5710f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(4, mresult.end());
5711f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5712f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("12345test1234test next");
5713f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
5714f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * If the pattern is found the scanner advances past the input that
5715f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * matched and returns the string that matched the pattern.
5716f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
5717f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findWithinHorizon("\\p{Digit}+", 2);
5718f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("12", result);
5719f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        mresult = s.match();
5720f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, mresult.start());
5721f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(2, mresult.end());
5722f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Postion is now pointing at the bar. "12|345test1234test next"
5723f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5724f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findWithinHorizon("\\p{Digit}+", 6);
5725f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("345", result);
5726f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5727f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        mresult = s.match();
5728f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(2, mresult.start());
5729f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(5, mresult.end());
5730f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Postion is now pointing at the bar. "12345|test1234test next"
5731f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5732f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If no such pattern is detected then the null is returned and the
5733f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // scanner's position remains unchanged.
5734f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findWithinHorizon("\\p{Digit}+", 3);
5735f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertNull(result);
5736f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5737f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
5738f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.match();
5739f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw IllegalStateException");
5740f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
5741f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
5742f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5743f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("345", mresult.group());
5744f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(2, mresult.start());
5745f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(5, mresult.end());
5746f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Postion is now still pointing at the bar. "12345|test1234test next"
5747f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5748f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If horizon is 0, then the horizon is ignored and this method
5749f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // continues to search through the input looking for the specified
5750f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // pattern without bound.
5751f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findWithinHorizon("\\p{Digit}+", 0);
5752f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        mresult = s.match();
5753f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(9, mresult.start());
5754f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(13, mresult.end());
5755f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Postion is now pointing at the bar. "12345test1234|test next"
5756f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5757f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("test", s.next());
5758f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        mresult = s.match();
5759f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(13, mresult.start());
5760f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(17, mresult.end());
5761f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5762f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("next", s.next());
5763f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        mresult = s.match();
5764f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(18, mresult.start());
5765f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(22, mresult.end());
5766f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5767f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
5768f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.findWithinHorizon((String)null, 1);
5769f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NullPointerException");
5770f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException e) {
5771f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
5772f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5773f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5774f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
5775f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.findWithinHorizon("\\p{Digit}+", -1);
5776f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw IllegalArgumentException");
5777f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalArgumentException e) {
5778f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
5779f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5780f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5781f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
5782f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // on RI throws NullPointerException
5783f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
5784f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * try { System.out.println("fsdfs"); s.findWithinHorizon((String) null,
5785f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * -1); System.out.println("fsdfs"); fail("Should throw
5786f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * IllegalStateException"); } catch (IllegalStateException e) { //
5787f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * expected }
5788f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
5789f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("test");
5790f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findWithinHorizon("\\w+", 10);
5791f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("test", result);
5792f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5793f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("aa\n\rb");
5794f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        String patternStr = "^(a)$";
5795f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findWithinHorizon("a", 5);
5796f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("a", result);
5797f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        mresult = s.match();
5798f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, mresult.start());
5799f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(1, mresult.end());
5800f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5801f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findWithinHorizon(patternStr, 5);
5802f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertNull(result);
5803f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5804f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
5805f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            mresult = s.match();
5806f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw IllegalStateException");
5807f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
5808f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
5809f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5810f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5811f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("");
5812f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findWithinHorizon("^", 0);
5813f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("", result);
5814f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        MatchResult matchResult = s.match();
5815f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.start());
5816f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.end());
5817f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5818f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findWithinHorizon("$", 0);
5819f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("", result);
5820f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
5821f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.start());
5822f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.end());
5823f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5824f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("1 fish 2 fish red fish blue fish");
5825f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findWithinHorizon("(\\d+) fish (\\d+) fish (\\w+) fish (\\w+)", 10);
5826f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertNull(result);
5827f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5828f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
5829f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            mresult = s.match();
5830f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw IllegalStateException");
5831f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
5832f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
5833f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5834f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, mresult.groupCount());
5835f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5836f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findWithinHorizon("(\\d+) fish (\\d+) fish (\\w+) fish (\\w+)", 100);
5837f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("1 fish 2 fish red fish blue", result);
5838f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        mresult = s.match();
5839f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(4, mresult.groupCount());
5840f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("1", mresult.group(1));
5841f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("2", mresult.group(2));
5842f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("red", mresult.group(3));
5843f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("blue", mresult.group(4));
5844f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5845f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("test");
5846f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
5847f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
5848f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.findWithinHorizon("test", 1);
5849f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw IllegalStateException");
5850f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
5851f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
5852f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5853f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5854f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("word1 WorD2  ");
5855f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
5856f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
5857f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.findWithinHorizon("\\d+", 10);
5858f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("should throw IllegalStateException");
5859f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
5860f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
5861f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5862f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5863f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("word1 WorD2 wOrd3 ");
5864f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        patternStr = "\\d+";
5865f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("1", s.findWithinHorizon(patternStr, 10));
5866f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("WorD2", s.next());
5867f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("3", s.findWithinHorizon(patternStr, 15));
5868f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5869f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Regression test
5870f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(new MockStringReader("MockStringReader"));
5871f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        patternStr = "test";
5872f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findWithinHorizon(patternStr, 10);
5873f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("test", result);
5874f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5875f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test the situation when input length is longer than buffer size.
5876f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        StringBuilder stringBuilder = new StringBuilder();
5877f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        for (int i = 0; i < 1026; i++) {
5878f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            stringBuilder.append('a');
5879f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5880f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(stringBuilder.toString());
5881f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        patternStr = "\\p{Lower}+";
5882f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findWithinHorizon(patternStr, 1026);
5883f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(stringBuilder.toString(), result);
5884f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5885f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test the situation when input length is longer than buffer size and
5886f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // set horizon to buffer size.
5887f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        stringBuilder = new StringBuilder();
5888f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        for (int i = 0; i < 1026; i++) {
5889f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            stringBuilder.append('a');
5890f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5891f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(stringBuilder.toString());
5892f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        patternStr = "\\p{Lower}+";
5893f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findWithinHorizon(patternStr, 1022);
5894f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(1022, result.length());
5895f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(stringBuilder.subSequence(0, 1022), result);
5896f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5897f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test the situation, under which pattern is clipped by buffer.
5898f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        stringBuilder = new StringBuilder();
5899f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        for (int i = 0; i < 1022; i++) {
5900f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            stringBuilder.append(' ');
5901f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5902f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        stringBuilder.append("bbc");
5903f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(1025, stringBuilder.length());
5904f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(stringBuilder.toString());
5905f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        patternStr = "bbc";
5906f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findWithinHorizon(patternStr, 1025);
5907f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(3, result.length());
5908f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(stringBuilder.subSequence(1022, 1025), result);
5909f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5910f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        stringBuilder = new StringBuilder();
5911f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        for (int i = 0; i < 1026; i++) {
5912f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            stringBuilder.append('a');
5913f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5914f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(stringBuilder.toString());
5915f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        patternStr = "\\p{Lower}+";
5916f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findWithinHorizon(patternStr, 0);
5917f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(stringBuilder.toString(), result);
5918f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5919f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        stringBuilder = new StringBuilder();
5920f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        for (int i = 0; i < 10240; i++) {
5921f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            stringBuilder.append('-');
5922f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5923f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        stringBuilder.replace(0, 2, "aa");
5924f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(stringBuilder.toString());
5925f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findWithinHorizon("aa", 0);
5926f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("aa", result);
5927f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5928f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("aaaa");
5929f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findWithinHorizon("a*", 0);
5930f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("aaaa", result);
5931f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
5932f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5933f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
5934f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#findInLine(Pattern)
5935f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
5936f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
5937f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
5938f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
5939f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "findInLine",
5940f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.util.regex.Pattern.class}
5941f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
5942f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_findInLine_LPattern() {
5943f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5944f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Scanner s = new Scanner("");
5945f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
5946f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.findInLine((Pattern) null);
5947f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NullPointerException");
5948f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException e) {
5949f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
5950f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5951f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        String result = s.findInLine(Pattern.compile("^"));
5952f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("", result);
5953f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        MatchResult matchResult = s.match();
5954f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.start());
5955f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.end());
5956f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5957f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findInLine(Pattern.compile("$"));
5958f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("", result);
5959f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
5960f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.start());
5961f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.end());
5962f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5963f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
5964f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * When we use the operation of findInLine(Pattern), the match region
5965f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * should not span the line separator.
5966f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
5967f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("aa\nb.b");
5968f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findInLine(Pattern.compile("a\nb*"));
5969f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertNull(result);
5970f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5971f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("aa\nbb.b");
5972f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findInLine(Pattern.compile("\\."));
5973f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertNull(result);
5974f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5975f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("abcd1234test\n");
5976f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findInLine(Pattern.compile("\\p{Lower}+"));
5977f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("abcd", result);
5978f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
5979f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.start());
5980f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(4, matchResult.end());
5981f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5982f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findInLine(Pattern.compile("\\p{Digit}{5}"));
5983f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertNull(result);
5984f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
5985f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            matchResult = s.match();
5986f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw IllegalStateException");
5987f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
5988f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
5989f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
5990f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.start());
5991f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(4, matchResult.end());
5992f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5993f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findInLine(Pattern.compile("\\p{Lower}+"));
5994f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("test", result);
5995f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
5996f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(8, matchResult.start());
5997f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(12, matchResult.end());
5998f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5999f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        char[] chars = new char[2048];
6000f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Arrays.fill(chars, 'a');
6001f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        StringBuilder stringBuilder = new StringBuilder();
6002f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        stringBuilder.append(chars);
6003f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        stringBuilder.append("1234");
6004f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(stringBuilder.toString());
6005f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findInLine(Pattern.compile("\\p{Digit}+"));
6006f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("1234", result);
6007f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
6008f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(2048, matchResult.start());
6009f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(2052, matchResult.end());
6010f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6011f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("test");
6012f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
6013f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
6014f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.findInLine((Pattern) null);
6015f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw IllegalStateException");
6016f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
6017f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
6018f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
6019f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6020f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("test1234\n1234 test");
6021f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findInLine(Pattern.compile("test"));
6022f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("test", result);
6023f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
6024f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.start());
6025f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(4, matchResult.end());
6026f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6027f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        int number = s.nextInt();
6028f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(1234, number);
6029f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
6030f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(4, matchResult.start());
6031f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(8, matchResult.end());
6032f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6033f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.next();
6034f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("1234", result);
6035f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
6036f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(9, matchResult.start());
6037f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(13, matchResult.end());
6038f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6039f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findInLine(Pattern.compile("test"));
6040f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("test", result);
6041f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
6042f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(14, matchResult.start());
6043f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(18, matchResult.end());
6044f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6045f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("test\u0085\ntest");
6046f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findInLine("est");
6047f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("est", result);
6048f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findInLine("est");
6049f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("est", result);
6050f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6051f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("test\ntest");
6052f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findInLine("est");
6053f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("est", result);
6054f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findInLine("est");
6055f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("est", result);
6056f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6057f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("test\n123\ntest");
6058f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findInLine("est");
6059f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("est", result);
6060f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findInLine("est");
6061f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // RI fails. It is a RI's bug.
6062f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        if (!disableRIBugs) {
6063f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertNull(result);
6064f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
6065f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
6066f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6067f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
6068f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#findInLine(String)
6069f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
6070f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
6071f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
6072f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
6073f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "findInLine",
6074f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.String.class}
6075f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
6076f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_findInLine_LString() {
6077f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("test");
6078f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
6079f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.findInLine((String) null);
6080f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NullPointerException");
6081f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException e) {
6082f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
6083f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
6084f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6085f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
6086f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
6087f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.findInLine((String) null);
6088f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NullPointerException");
6089f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException e) {
6090f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
6091f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
6092f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
6093f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.findInLine("test");
6094f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw IllegalStateException");
6095f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
6096f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // exptected
6097f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
6098f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6099f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("");
6100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        String result = s.findInLine("^");
6102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("", result);
6103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        MatchResult matchResult = s.match();
6104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.start());
6105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.end());
6106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findInLine("$");
6108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("", result);
6109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
6110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.start());
6111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.end());
6112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
6114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * When we use the operation of findInLine(Pattern), the match region
6115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * should not span the line separator.
6116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
6117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("aa\nb.b");
6118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findInLine("a\nb*");
6119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertNull(result);
6120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("aa\nbb.b");
6122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findInLine("\\.");
6123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertNull(result);
6124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("abcd1234test\n");
6126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findInLine("\\p{Lower}+");
6127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("abcd", result);
6128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
6129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.start());
6130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(4, matchResult.end());
6131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findInLine("\\p{Digit}{5}");
6133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertNull(result);
6134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
6135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            matchResult = s.match();
6136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw IllegalStateException");
6137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
6138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
6139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
6140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.start());
6141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(4, matchResult.end());
6142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findInLine("\\p{Lower}+");
6144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("test", result);
6145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
6146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(8, matchResult.start());
6147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(12, matchResult.end());
6148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        char[] chars = new char[2048];
6150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Arrays.fill(chars, 'a');
6151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        StringBuilder stringBuilder = new StringBuilder();
6152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        stringBuilder.append(chars);
6153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        stringBuilder.append("1234");
6154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(stringBuilder.toString());
6155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findInLine("\\p{Digit}+");
6156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("1234", result);
6157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
6158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(2048, matchResult.start());
6159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(2052, matchResult.end());
6160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("test1234\n1234 test");
6162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findInLine("test");
6163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("test", result);
6164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
6165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.start());
6166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(4, matchResult.end());
6167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        int number = s.nextInt();
6169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(1234, number);
6170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
6171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(4, matchResult.start());
6172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(8, matchResult.end());
6173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.next();
6175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("1234", result);
6176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
6177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(9, matchResult.start());
6178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(13, matchResult.end());
6179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findInLine("test");
6181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("test", result);
6182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
6183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(14, matchResult.start());
6184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(18, matchResult.end());
6185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("test\u0085\ntest");
6187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findInLine("est");
6188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("est", result);
6189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findInLine("est");
6190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("est", result);
6191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("test\ntest");
6193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findInLine("est");
6194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("est", result);
6195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findInLine("est");
6196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("est", result);
6197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("test\n123\ntest");
6199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findInLine("est");
6200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("est", result);
6201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.findInLine("est");
6202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // RI fails. It is a RI's bug.
6203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        if (!disableRIBugs) {
6204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertNull(result);
6205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
6206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
6209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
6211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#skip(Pattern)
6212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
6213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
6214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
6215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
6216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "skip",
6217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.util.regex.Pattern.class}
6218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
6219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_skip_LPattern() {
6220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("test");
6221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
6222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.skip((String) null);
6223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NullPointerException");
6224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException e) {
6225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
6226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
6227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If pattern does not match, NoSuchElementException will be thrown out.
6229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("1234");
6230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
6231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.skip(Pattern.compile("\\p{Lower}"));
6232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NoSuchElementException");
6233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
6234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
6235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
6236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Then, no matchResult will be thrown out.
6237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
6238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.match();
6239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw IllegalStateException");
6240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
6241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
6242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
6243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.skip(Pattern.compile("\\p{Digit}"));
6245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        MatchResult matchResult = s.match();
6246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.start());
6247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(1, matchResult.end());
6248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.skip(Pattern.compile("\\p{Digit}+"));
6250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
6251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(1, matchResult.start());
6252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(4, matchResult.end());
6253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
6255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
6256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.skip(Pattern.compile("test"));
6257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw IllegalStateException");
6258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
6259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
6260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
6261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        MockStringReader2Read reader = new MockStringReader2Read("test");
6263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(reader);
6264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
6265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.skip(Pattern.compile("\\p{Digit}{4}"));
6266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NoSuchElementException");
6267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
6268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
6269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
6270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
6271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.match();
6272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw IllegalStateException");
6273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
6274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
6275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
6276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.skip(Pattern.compile("\\p{Digit}{3}\\p{Lower}"));
6277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
6278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.start());
6279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(4, matchResult.end());
6280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
6282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
6283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.skip((Pattern) null);
6284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw IllegalStateException");
6285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
6286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
6287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
6288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        StringBuilder stringBuilder = new StringBuilder();
6290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        char [] chars = new char[1024];
6291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Arrays.fill(chars, 'a');
6292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        stringBuilder.append(chars);
6293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        stringBuilder.append('3');
6294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(stringBuilder.toString());
6295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.skip(Pattern.compile("\\p{Lower}+\\p{Digit}"));
6296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
6297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.start());
6298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(1025, matchResult.end());
6299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Large amount of input may be cached
6301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        chars = new char[102400];
6302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Arrays.fill(chars, 'a');
6303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        stringBuilder = new StringBuilder();
6304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        stringBuilder.append(chars);
6305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(stringBuilder.toString());
6306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.skip(Pattern.compile(".*"));
6307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
6308f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.start());
6309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(102400, matchResult.end());
6310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6311f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // skip something without risking a NoSuchElementException
6312f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.skip(Pattern.compile("[ \t]*"));
6313f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
6314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(102400, matchResult.start());
6315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(102400, matchResult.end());
6316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
6317f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
6319f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#skip(String)
6320f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
6321f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
6322f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
6323f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
6324f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "skip",
6325f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.String.class}
6326f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
6327f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_skip_LString() {
6328f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("test");
6329f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
6330f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.skip((String) null);
6331f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NullPointerException");
6332f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException e) {
6333f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
6334f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
6335f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6336f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // If pattern does not match, NoSuchElementException will be thrown out.
6337f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("1234");
6338f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
6339f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.skip("\\p{Lower}");
6340f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NoSuchElementException");
6341f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
6342f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
6343f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
6344f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Then, no matchResult will be thrown out.
6345f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
6346f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.match();
6347f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw IllegalStateException");
6348f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
6349f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
6350f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
6351f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6352f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.skip("\\p{Digit}");
6353f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        MatchResult matchResult = s.match();
6354f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.start());
6355f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(1, matchResult.end());
6356f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6357f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.skip("\\p{Digit}+");
6358f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
6359f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(1, matchResult.start());
6360f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(4, matchResult.end());
6361f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6362f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
6363f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
6364f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.skip("test");
6365f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw IllegalStateException");
6366f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
6367f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
6368f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
6369f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6370f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        MockStringReader2Read reader = new MockStringReader2Read("test");
6371f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(reader);
6372f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
6373f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.skip("\\p{Digit}{4}");
6374f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NoSuchElementException");
6375f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
6376f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
6377f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
6378f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
6379f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.match();
6380f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw IllegalStateException");
6381f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
6382f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
6383f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
6384f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.skip("\\p{Digit}{3}\\p{Lower}");
6385f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
6386f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.start());
6387f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(4, matchResult.end());
6388f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6389f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
6390f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
6391f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.skip("");
6392f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw IllegalStateException");
6393f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
6394f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
6395f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
6396f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6397f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        StringBuilder stringBuilder = new StringBuilder();
6398f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        char [] chars = new char[1024];
6399f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Arrays.fill(chars, 'a');
6400f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        stringBuilder.append(chars);
6401f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        stringBuilder.append('3');
6402f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(stringBuilder.toString());
6403f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.skip("\\p{Lower}+\\p{Digit}");
6404f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
6405f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.start());
6406f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(1025, matchResult.end());
6407f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6408f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Large amount of input may be cached
6409f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        chars = new char[102400];
6410f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Arrays.fill(chars, 'a');
6411f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        stringBuilder = new StringBuilder();
6412f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        stringBuilder.append(chars);
6413f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(stringBuilder.toString());
6414f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.skip(".*");
6415f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
6416f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.start());
6417f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(102400, matchResult.end());
6418f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6419f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // skip something without risking a NoSuchElementException
6420f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.skip("[ \t]*");
6421f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
6422f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(102400, matchResult.start());
6423f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(102400, matchResult.end());
6424f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6425f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("test");
6426f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
6427f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.skip((String) null);
6428f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NullPointerException");
6429f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException e) {
6430f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
6431f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
6432f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
6433f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6434f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
6435f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws IOException
6436f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#nextDouble()
6437f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
6438f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
6439f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
6440f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
6441f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "nextDouble",
6442f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
6443f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
6444f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_nextDouble() throws IOException {
64458ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        Locale[] requiredLocales = {Locale.GERMANY, Locale.ENGLISH};
64468ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
64478ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot            // locale dependent test, bug 1943269
64488ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot            return;
64498ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        }
6450f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 45\u0666. 123.4 .123 ");
6451f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
6452f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(123.0, s.nextDouble());
6453f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(456.0, s.nextDouble());
6454f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(123.4, s.nextDouble());
6455f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0.123, s.nextDouble());
6456f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
6457f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextDouble();
6458f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NoSuchElementException");
6459f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
6460f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
6461f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
6462f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6463f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("+123.4 -456.7 123,456.789 0.1\u06623,4");
6464f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
6465f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(123.4, s.nextDouble());
6466f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-456.7, s.nextDouble());
6467f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(123456.789, s.nextDouble());
6468f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
6469f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextDouble();
6470f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
6471f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
6472f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
6473f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
6474f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6475f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Scientific notation
6476f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("+123.4E10 -456.7e+12 123,456.789E-10");
6477f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
6478f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(1.234E12, s.nextDouble());
6479f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-4.567E14, s.nextDouble());
6480f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(1.23456789E-5, s.nextDouble());
6481f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6482f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("NaN Infinity -Infinity");
6483f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(Double.NaN, s.nextDouble());
6484f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(Double.POSITIVE_INFINITY, s.nextDouble());
6485f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(Double.NEGATIVE_INFINITY, s.nextDouble());
6486f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6487f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        //The following test case fails on RI
6488f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s=new Scanner("\u221e");
6489f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
6490f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project//        assertEquals(Double.POSITIVE_INFINITY, s.nextDouble());
6491f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6492f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        String str=String.valueOf(Double.MAX_VALUE*2);
6493f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s=new Scanner(str);
6494f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(Double.POSITIVE_INFINITY,s.nextDouble());
6495f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6496f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
6497f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * Different locale can only recognize corresponding locale sensitive
6498f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * string. ',' is used in many locales as group separator.
6499f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
6500f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23,456 23,456");
6501f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
6502f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456.0, s.nextDouble());
6503f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
6504f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23.456, s.nextDouble());
6505f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6506f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23.456 23.456");
6507f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
6508f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23.456, s.nextDouble());
6509f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
6510f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456.0, s.nextDouble());
6511f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6512f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23,456.7 23.456,7");
6513f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
6514f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456.7, s.nextDouble());
6515f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
6516f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(23456.7, s.nextDouble());
6517f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6518f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123.4");
6519f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
6520f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(-123.4, s.nextDouble());
6521f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6522f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
6523f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
6524f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextDouble();
6525f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalStateException expected");
6526f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
6527f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            //expected
6528f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
6529f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
6530f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6531f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
6532f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @throws IOException
6533f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#nextBigDecimal()
6534f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
6535f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
6536f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
6537f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
6538f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "nextBigDecimal",
6539f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
6540f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
6541f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_nextBigDecimal() throws IOException {
65428ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        Locale[] requiredLocales = {Locale.ENGLISH, Locale.GERMANY};
65438ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        if (!Support_Locale.areLocalesAvailable(requiredLocales)) {
65448ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot            // locale dependent test, bug 1943269
65458ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot            return;
65468ba0b9bad4ee13bb30fa75c531921802c05611acBrett Chabot        }
6547f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 45\u0666. 123.4 .123 ");
6548f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
6549f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigDecimal("123"), s.nextBigDecimal());
6550f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigDecimal("456"), s.nextBigDecimal());
6551f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigDecimal("123.4"), s.nextBigDecimal());
6552f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigDecimal("0.123"), s.nextBigDecimal());
6553f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
6554f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBigDecimal();
6555f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NoSuchElementException");
6556f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
6557f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
6558f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
6559f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6560f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("+123.4 -456.7 123,456.789 0.1\u06623,4");
6561f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
6562f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigDecimal("123.4"), s.nextBigDecimal());
6563f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigDecimal("-456.7"), s.nextBigDecimal());
6564f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigDecimal("123456.789"), s.nextBigDecimal());
6565f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
6566f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBigDecimal();
6567f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
6568f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
6569f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
6570f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
6571f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6572f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Scientific notation
6573f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("+123.4E10 -456.7e+12 123,456.789E-10");
6574f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
6575f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigDecimal("1.234E12"), s.nextBigDecimal());
6576f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigDecimal("-4.567E14"), s.nextBigDecimal());
6577f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigDecimal("1.23456789E-5"), s.nextBigDecimal());
6578f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6579f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("NaN");
6580f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
6581f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBigDecimal();
6582f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw InputMismatchException");
6583f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (InputMismatchException e) {
6584f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
6585f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
6586f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6587f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        /*
6588f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * Different locale can only recognize corresponding locale sensitive
6589f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         * string. ',' is used in many locales as group separator.
6590f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project         */
6591f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23,456 23,456");
6592f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
6593f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigDecimal("23456"), s.nextBigDecimal());
6594f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
6595f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigDecimal("23.456"), s.nextBigDecimal());
6596f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6597f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23.456 23.456");
6598f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
6599f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigDecimal("23.456"), s.nextBigDecimal());
6600f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.GERMANY);
6601f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigDecimal("23456"), s.nextBigDecimal());
6602f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6603f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("23,456.7");
6604f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
6605f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigDecimal("23456.7"), s.nextBigDecimal());
6606f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6607f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("-123.4");
6608f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.useLocale(Locale.ENGLISH);
6609f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(new BigDecimal("-123.4"), s.nextBigDecimal());
6610f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6611f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
6612f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
6613f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextBigDecimal();
6614f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalStateException expected");
6615f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
6616f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            //expected
6617f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
6618f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
6619f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6620f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
6621f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#toString()
6622f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
6623f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
6624f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
6625f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
6626f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "toString",
6627f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
6628f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
6629f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_toString() {
6630f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("test");
6631f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertNotNull(s.toString());
6632f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
6633f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6634f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
6635f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#nextLine()
6636f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
6637f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
6638f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
6639f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
6640f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "nextLine",
6641f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
6642f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
6643f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_nextLine() {
6644f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("");
6645f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
6646f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
6647f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextLine();
6648f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw IllegalStateException");
6649f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
6650f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
6651f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
6652f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6653f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("test\r\ntest");
6654f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        String result = s.nextLine();
6655f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("test", result);
6656f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        MatchResult matchResult = s.match();
6657f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.start());
6658f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(6, matchResult.end());
6659f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6660f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("\u0085");
6661f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.nextLine();
6662f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("", result);
6663f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
6664f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.start());
6665f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(1, matchResult.end());
6666f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6667f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("\u2028");
6668f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.nextLine();
6669f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("", result);
6670f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
6671f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.start());
6672f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(1, matchResult.end());
6673f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6674f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("\u2029");
6675f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.nextLine();
6676f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("", result);
6677f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
6678f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.start());
6679f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(1, matchResult.end());
6680f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6681f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("");
6682f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
6683f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            result = s.nextLine();
6684f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw NoSuchElementException");
6685f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NoSuchElementException e) {
6686f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
6687f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
6688f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
6689f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.match();
6690f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw IllegalStateException");
6691f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
6692f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
6693f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
6694f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6695f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("Ttest");
6696f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.nextLine();
6697f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Ttest", result);
6698f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
6699f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.start());
6700f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(5, matchResult.end());
6701f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6702f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("\r\n");
6703f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.nextLine();
6704f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("", result);
6705f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
6706f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.start());
6707f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(2, matchResult.end());
6708f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6709f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        char[] chars = new char[1024];
6710f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Arrays.fill(chars, 'a');
6711f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        StringBuilder stringBuilder = new StringBuilder();
6712f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        stringBuilder.append(chars);
6713f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        chars = new char[] { '+', '-' };
6714f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        stringBuilder.append(chars);
6715f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        stringBuilder.append("\u2028");
6716f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(stringBuilder.toString());
6717f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.nextLine();
6718f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6719f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(stringBuilder.toString().substring(0, 1026), result);
6720f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
6721f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.start());
6722f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(1027, matchResult.end());
6723f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6724f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        chars = new char[1023];
6725f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Arrays.fill(chars, 'a');
6726f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        stringBuilder = new StringBuilder();
6727f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        stringBuilder.append(chars);
6728f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        stringBuilder.append("\r\n");
6729f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(stringBuilder.toString());
6730f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.nextLine();
6731f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6732f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(stringBuilder.toString().substring(0, 1023), result);
6733f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
6734f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.start());
6735f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(1025, matchResult.end());
6736f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6737f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("  ");
6738f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.nextLine();
6739f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("  ", result);
6740f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6741f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("test\n\n\n");
6742f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.nextLine();
6743f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("test", result);
6744f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
6745f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.start());
6746f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(5, matchResult.end());
6747f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.nextLine();
6748f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
6749f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(5, matchResult.start());
6750f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(6, matchResult.end());
6751f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6752f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("\n\n\n");
6753f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.nextLine();
6754f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("", result);
6755f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
6756f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.start());
6757f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(1, matchResult.end());
6758f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.nextLine();
6759f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
6760f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(1, matchResult.start());
6761f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(2, matchResult.end());
6762f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6763f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("123 test\n   ");
6764f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        int value = s.nextInt();
6765f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(123, value);
6766f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6767f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.nextLine();
6768f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(" test", result);
6769f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6770f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("test\n ");
6771f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.nextLine();
6772f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("test", result);
6773f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
6774f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6775f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
6776f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#hasNextLine()
6777f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
6778f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
6779f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
6780f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
6781f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "hasNextLine",
6782f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
6783f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
6784f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_hasNextLine() {
6785f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6786f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("");
6787f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s.close();
6788f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
6789f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.hasNextLine();
6790f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Should throw IllegalStateException");
6791f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalStateException e) {
6792f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
6793f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
6794f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6795f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("test\r\ntest");
6796f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        boolean result = s.hasNextLine();
6797f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(result);
6798f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        MatchResult matchResult = s.match();
6799f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.start());
6800f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(6, matchResult.end());
6801f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6802f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("\u0085");
6803f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.hasNextLine();
6804f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(result);
6805f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
6806f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.start());
6807f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(1, matchResult.end());
6808f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6809f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("\u2028");
6810f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.hasNextLine();
6811f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(result);
6812f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
6813f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.start());
6814f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(1, matchResult.end());
6815f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6816f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("\u2029");
6817f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.hasNextLine();
6818f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(result);
6819f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
6820f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.start());
6821f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(1, matchResult.end());
6822f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6823f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("test\n");
6824f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLine());
6825f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
6826f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.start());
6827f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(5, matchResult.end());
6828f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6829f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        char[] chars = new char[2048];
6830f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Arrays.fill(chars, 'a');
6831f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        StringBuilder stringBuilder = new StringBuilder();
6832f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        stringBuilder.append(chars);
6833f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner(stringBuilder.toString());
6834f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        result = s.hasNextLine();
6835f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(result);
6836f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6837f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
6838f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.start());
6839f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(2048, matchResult.end());
6840f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6841f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        s = new Scanner("\n\n\n");
6842f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLine());
6843f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
6844f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.start());
6845f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(1, matchResult.end());
6846f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6847f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // The scanner will not advance any input.
6848f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(s.hasNextLine());
6849f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        matchResult = s.match();
6850f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, matchResult.start());
6851f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(1, matchResult.end());
6852f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
6853f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6854f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    protected void setUp() throws Exception {
6855f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        super.setUp();
6856f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6857f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        server = new ServerSocket(0);
6858f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        address = new InetSocketAddress("127.0.0.1", server.getLocalPort());
6859f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6860f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        client = SocketChannel.open();
6861f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        client.connect(address);
6862f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        serverSocket = server.accept();
6863f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6864f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        os = serverSocket.getOutputStream();
6865f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
6866f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6867f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    protected void tearDown() throws Exception {
6868f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        super.tearDown();
6869f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6870f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
6871f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            serverSocket.close();
6872f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception e) {
6873f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6874f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
6875f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
6876f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            client.close();
6877f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception e) {
6878f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // do nothing
6879f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
6880f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
6881f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            server.close();
6882f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception e) {
6883f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // do nothing
6884f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
6885f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
6886f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6887f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
6888f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Scanner#Scanner(ReadableByteChannel)
6889f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
6890f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
6891f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
6892f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
6893f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "Scanner",
6894f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.nio.channels.ReadableByteChannel.class}
6895f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
6896f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_Constructor_LReadableByteChannel()
6897f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            throws IOException {
6898f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        InetSocketAddress localAddr = new InetSocketAddress("127.0.0.1",
6899f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                Support_PortManager.getNextPort());
6900f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        ServerSocketChannel ssc = ServerSocketChannel.open();
6901f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        ssc.socket().bind(localAddr);
6902f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6903f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        SocketChannel sc = SocketChannel.open();
6904f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        sc.connect(localAddr);
6905f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        sc.configureBlocking(false);
6906f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(sc.isBlocking());
6907f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6908f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        ssc.accept().close();
6909f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        ssc.close();
6910f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(sc.isBlocking());
6911f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6912f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Scanner s = new Scanner(sc);
6913f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        while (s.hasNextInt()) {
6914f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            s.nextInt();
6915f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
6916f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6917f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        sc.close();
6918f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
6919f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project}
6920