jdk/test/java/util/Scanner/ScanTest.java
author smarks
Wed, 29 Jul 2015 15:21:12 -0700
changeset 31903 752473818053
child 32001 cd908e480e4e
permissions -rw-r--r--
8132206: move ScanTest.java into OpenJDK Reviewed-by: psandoz, sherman
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
31903
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
     1
/*
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
     2
 * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
     4
 *
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
     7
 * published by the Free Software Foundation.
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
     8
 *
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    13
 * accompanied this code).
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    14
 *
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    18
 *
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    21
 * questions.
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    22
 */
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    23
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    24
/**
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    25
 * @test
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    26
 * @bug 4313885 4926319 4927634 5032610 5032622 5049968 5059533 6223711 6277261 6269946 6288823
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    27
 * @summary Basic tests of java.util.Scanner methods
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    28
 * @key randomness
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    29
 */
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    30
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    31
import java.util.*;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    32
import java.text.*;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    33
import java.io.*;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    34
import java.nio.*;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    35
import java.util.regex.*;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    36
import java.math.*;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    37
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    38
public class ScanTest {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    39
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    40
    private static boolean failure = false;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    41
    private static int failCount = 0;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    42
    private static int NUM_SOURCE_TYPES = 2;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    43
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    44
    public static void main(String[] args) throws Exception {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    45
        Locale reservedLocale = Locale.getDefault();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    46
        String lang = reservedLocale.getLanguage();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    47
        try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    48
            if (!"en".equals(lang) &&
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    49
                !"zh".equals(lang) &&
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    50
                !"ko".equals(lang) &&
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    51
                !"ja".equals(lang)) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    52
                //Before we have resource to improve the test to be ready for
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    53
                //arbitrary locale, force the default locale to be "English"
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    54
                //for now.
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    55
                Locale.setDefault(Locale.ENGLISH);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    56
            }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    57
            skipTest();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    58
            findInLineTest();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    59
            findWithinHorizonTest();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    60
            findInEmptyLineTest();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    61
            removeTest();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    62
            fromFileTest();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    63
            ioExceptionTest();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    64
            matchTest();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    65
            delimiterTest();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    66
            useLocaleTest();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    67
            closeTest();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    68
            cacheTest();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    69
            cacheTest2();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    70
            nonASCIITest();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    71
            resetTest();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    72
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    73
            for (int j=0; j<NUM_SOURCE_TYPES; j++) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    74
                hasNextTest(j);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    75
                nextTest(j);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    76
                hasNextPatternTest(j);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    77
                nextPatternTest(j);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    78
                booleanTest(j);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    79
                byteTest(j);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    80
                shortTest(j);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    81
                intTest(j);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    82
                longTest(j);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    83
                floatTest(j);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    84
                doubleTest(j);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    85
                integerPatternTest(j);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    86
                floatPatternTest(j);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    87
                bigIntegerPatternTest(j);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    88
                bigDecimalPatternTest(j);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    89
                hasNextLineTest(j);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    90
                nextLineTest(j);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    91
                singleDelimTest(j);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    92
            }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    93
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    94
            // Examples
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    95
            //example1();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    96
            //example2();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    97
            //example3();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    98
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
    99
            // Usage cases
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   100
            useCase1();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   101
            useCase2();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   102
            useCase3();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   103
            useCase4();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   104
            useCase5();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   105
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   106
            if (failure)
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   107
                throw new RuntimeException("Failure in the scanning tests.");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   108
            else
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   109
                System.err.println("OKAY: All tests passed.");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   110
        } finally {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   111
            // restore the default locale
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   112
            Locale.setDefault(reservedLocale);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   113
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   114
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   115
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   116
    public static void useCase1() throws Exception {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   117
        File f = new File(System.getProperty("test.src", "."), "input.txt");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   118
        Scanner sc = new Scanner(f);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   119
        sc.findWithinHorizon("usage case 1", 0);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   120
        String[] names = new String[4];
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   121
        for (int i=0; i<4; i++) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   122
            while(sc.hasNextFloat())
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   123
                sc.nextFloat();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   124
            names[i] = sc.next();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   125
            sc.nextLine();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   126
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   127
        if (!names[0].equals("Frank"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   128
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   129
        if (!names[1].equals("Joe"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   130
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   131
        if (!names[2].equals("Mary"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   132
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   133
        if (!names[3].equals("Michelle"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   134
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   135
        sc.close();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   136
        report("Use case 1");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   137
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   138
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   139
    public static void useCase2() throws Exception {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   140
        File f = new File(System.getProperty("test.src", "."), "input.txt");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   141
        Scanner sc = new Scanner(f).useDelimiter("-");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   142
        String testDataTag = sc.findWithinHorizon("usage case 2\n", 0);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   143
        if (!testDataTag.equals("usage case 2\n"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   144
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   145
        if (!sc.next().equals("cat"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   146
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   147
        if (sc.nextInt() != 9)
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   148
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   149
        if (!sc.next().equals("dog"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   150
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   151
        if (sc.nextInt() != 6)
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   152
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   153
        if (!sc.next().equals("pig"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   154
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   155
        if (sc.nextInt() != 2)
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   156
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   157
        if (!sc.next().equals(""))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   158
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   159
        if (sc.nextInt() != 5)
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   160
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   161
        sc.close();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   162
        report("Use case 2");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   163
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   164
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   165
    public static void useCase3() throws Exception {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   166
        File f = new File(System.getProperty("test.src", "."), "input.txt");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   167
        Scanner sc = new Scanner(f);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   168
        String testDataTag = sc.findWithinHorizon("usage case 3\n", 0);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   169
        if (!testDataTag.equals("usage case 3\n"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   170
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   171
        Pattern tagPattern = Pattern.compile("@[a-z]+");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   172
        Pattern endPattern = Pattern.compile("\\*\\/");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   173
        String tag;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   174
        String end = sc.findInLine(endPattern);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   175
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   176
        while (end == null) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   177
            if ((tag = sc.findInLine(tagPattern)) != null) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   178
                String text = sc.nextLine();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   179
                text = text.substring(0, text.length() - 1);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   180
                //System.out.println(text);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   181
            } else {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   182
                sc.nextLine();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   183
            }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   184
            end = sc.findInLine(endPattern);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   185
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   186
        report("Use case 3");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   187
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   188
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   189
    public static void useCase4() throws Exception {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   190
        File f = new File(System.getProperty("test.src", "."), "input.txt");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   191
        Scanner sc = new Scanner(f);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   192
        String testDataTag = sc.findWithinHorizon("usage case 4\n", 0);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   193
        if (!testDataTag.equals("usage case 4\n"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   194
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   195
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   196
        // Read some text parts of four hrefs
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   197
        String[] expected = { "Diffs", "Sdiffs", "Old", "New" };
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   198
        for (int i=0; i<4; i++) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   199
            sc.findWithinHorizon("<a href", 1000);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   200
            sc.useDelimiter("[<>\n]+");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   201
            sc.next();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   202
            String textOfRef = sc.next();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   203
            if (!textOfRef.equals(expected[i]))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   204
                failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   205
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   206
        // Read some html tags using < and > as delimiters
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   207
        if (!sc.next().equals("/a"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   208
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   209
        if (!sc.next().equals("b"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   210
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   211
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   212
        // Scan some html tags using skip and next
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   213
        Pattern nonTagStart = Pattern.compile("[^<]+");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   214
        Pattern tag = Pattern.compile("<[^>]+?>");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   215
        Pattern spotAfterTag = Pattern.compile("(?<=>)");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   216
        String[] expected2 = { "</b>", "<p>", "<ul>", "<li>" };
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   217
        sc.useDelimiter(spotAfterTag);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   218
        int tagsFound = 0;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   219
        while(tagsFound < 4) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   220
            if (!sc.hasNext(tag)) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   221
                // skip text between tags
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   222
                sc.skip(nonTagStart);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   223
            }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   224
            String tagContents = sc.next(tag);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   225
            if (!tagContents.equals(expected2[tagsFound]))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   226
                failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   227
            tagsFound++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   228
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   229
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   230
        report("Use case 4");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   231
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   232
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   233
    public static void useCase5() throws Exception {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   234
        File f = new File(System.getProperty("test.src", "."), "input.txt");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   235
        Scanner sc = new Scanner(f);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   236
        String testDataTag = sc.findWithinHorizon("usage case 5\n", 0);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   237
        if (!testDataTag.equals("usage case 5\n"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   238
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   239
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   240
        sc.findWithinHorizon("Share Definitions", 0);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   241
        sc.nextLine();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   242
        sc.next("\\[([a-z]+)\\]");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   243
        String shareName = sc.match().group(1);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   244
        if (!shareName.equals("homes"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   245
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   246
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   247
        String[] keys = { "comment", "browseable", "writable", "valid users" };
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   248
        String[] vals = { "Home Directories", "no", "yes", "%S" };
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   249
        for (int i=0; i<4; i++) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   250
            sc.useDelimiter("=");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   251
            String key = sc.next().trim();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   252
            if (!key.equals(keys[i]))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   253
                failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   254
            sc.skip("[ =]+");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   255
            sc.useDelimiter("\n");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   256
            String value = sc.next();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   257
            if (!value.equals(vals[i]))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   258
                failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   259
            sc.nextLine();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   260
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   261
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   262
        report("Use case 5");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   263
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   264
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   265
    public static void nonASCIITest() throws Exception {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   266
        String yourBasicTibetanNumberZero = "\u0f20";
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   267
        String yourBasicTibetanFloatingNumber = "\u0f23.\u0f27";
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   268
        String weirdMixtureOfTibetanAndASCII = "\u0f23.7";
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   269
        String weirdMixtureOfASCIIAndTibetan = "3.\u0f27";
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   270
        Scanner sc = new Scanner(yourBasicTibetanNumberZero);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   271
        int i = sc.nextInt();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   272
        if (i != 0)
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   273
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   274
        sc = new Scanner(yourBasicTibetanFloatingNumber);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   275
        float f = sc.nextFloat();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   276
        if (f != Float.parseFloat("3.7"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   277
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   278
        sc = new Scanner(weirdMixtureOfTibetanAndASCII);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   279
        f = sc.nextFloat();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   280
        if (f != Float.parseFloat("3.7"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   281
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   282
        sc = new Scanner(weirdMixtureOfASCIIAndTibetan);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   283
        f = sc.nextFloat();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   284
        if (f != Float.parseFloat("3.7"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   285
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   286
        report("Scanning non ASCII digits");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   287
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   288
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   289
    public static void findWithinHorizonTest() throws Exception {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   290
        // Test with a string source
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   291
        Scanner sc = new Scanner("dog  cat     cat    dog     cat");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   292
        try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   293
            sc.findWithinHorizon("dog", -1);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   294
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   295
        } catch (IllegalArgumentException iae) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   296
            // Correct result
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   297
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   298
        if (sc.findWithinHorizon("dog", 2) != null)
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   299
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   300
        if (!sc.findWithinHorizon("dog", 3).equals("dog"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   301
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   302
        if (sc.findWithinHorizon("cat", 4) != null)
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   303
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   304
        if (!sc.findWithinHorizon("cat", 5).equals("cat"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   305
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   306
         if (sc.findWithinHorizon("cat", 7) != null)
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   307
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   308
        if (sc.findWithinHorizon("dog", 7) != null)
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   309
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   310
        if (!sc.findWithinHorizon("cat", 0).equals("cat"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   311
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   312
        if (!sc.findWithinHorizon("dog", 0).equals("dog"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   313
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   314
        if (!sc.findWithinHorizon("cat", 0).equals("cat"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   315
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   316
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   317
        // Test with a stream source
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   318
        StutteringInputStream stutter = new StutteringInputStream();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   319
        for (int index=0; index<stutter.length(); index++) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   320
            //System.out.println("index is now "+index);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   321
            sc = new Scanner(stutter);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   322
            String word = stutter.wordInIndex(index);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   323
            if (word != null) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   324
                String result = sc.findWithinHorizon(word, index);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   325
                if ((result == null) || (!result.equals(word)))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   326
                    failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   327
            }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   328
            stutter.reset();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   329
            word = stutter.wordBeyondIndex(index);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   330
            sc = new Scanner(stutter);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   331
            String result = sc.findWithinHorizon(word, index);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   332
            if ((result != null) && (index > 0))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   333
                failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   334
            stutter.reset();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   335
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   336
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   337
        // We must loop to let StutteringInputStream do its magic
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   338
        for (int j=0; j<10; j++) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   339
            // An anchor at the end of stream should work
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   340
            stutter.reset();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   341
            sc = new Scanner(stutter);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   342
            String result = sc.findWithinHorizon("phant$", 0);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   343
            if (!result.equals("phant"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   344
                failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   345
            stutter.reset();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   346
            sc = new Scanner(stutter);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   347
            result = sc.findWithinHorizon("phant$", 54);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   348
            if (!result.equals("phant"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   349
                failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   350
            // An anchor at the end of horizon should not
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   351
            stutter.reset();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   352
            sc = new Scanner(stutter);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   353
            result = sc.findWithinHorizon("brummer$", 7);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   354
            if (result != null)
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   355
                failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   356
            // An anchor at start should work
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   357
            stutter.reset();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   358
            sc = new Scanner(stutter);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   359
            result = sc.findWithinHorizon("^brummer", 0);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   360
            if (!result.equals("brummer"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   361
                failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   362
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   363
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   364
        report("Find to horizon test");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   365
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   366
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   367
    // StutteringInputStream returns 1 to 3 characters at a time
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   368
    static class StutteringInputStream implements Readable {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   369
        StutteringInputStream() {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   370
            text = "brummer hisser tort zardzard rantrant caimagator phant";
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   371
            datalen = 54;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   372
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   373
        StutteringInputStream(String text) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   374
            this.text = text;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   375
            datalen = text.length();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   376
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   377
        Random generator = new Random();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   378
        String text;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   379
        int datalen;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   380
        int index = 0;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   381
        public int length() {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   382
            return datalen;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   383
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   384
        public void reset() {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   385
            index = 0;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   386
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   387
        public String wordInIndex(int index) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   388
            if (index < 7)  return null;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   389
            if (index < 14) return "brummer";
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   390
            if (index < 19) return "hisser";
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   391
            if (index < 28) return "tort";
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   392
            if (index < 37) return "zardzard";
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   393
            if (index < 48) return "rantrant";
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   394
            return "caimagator";
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   395
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   396
        public String wordBeyondIndex(int index) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   397
            if (index < 7)  return "brummer";
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   398
            if (index < 14) return "hisser";
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   399
            if (index < 19) return "tort";
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   400
            if (index < 28) return "zardzard";
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   401
            if (index < 37) return "rantrant";
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   402
            if (index < 48) return "caimagator";
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   403
            return "phantphant";
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   404
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   405
        public int read(java.nio.CharBuffer target) throws IOException {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   406
            if (index > datalen-1)
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   407
                return -1; // EOS
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   408
            int len = target.remaining();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   409
            if (len > 4) // return 1 to 3 characters
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   410
                len = generator.nextInt(3) + 1;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   411
            while ((index + len) > datalen)
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   412
                len--;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   413
            for (int i=0; i<len; i++)
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   414
                target.put(text.charAt(index++));
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   415
            return len;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   416
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   417
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   418
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   419
    public static void hasNextLineTest(int sourceType) throws Exception {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   420
        Scanner sc = scannerFor("1\n2\n3 3\r\n4 4 4\r5", sourceType);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   421
        if (!sc.hasNextLine()) failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   422
        if (!sc.nextLine().equals("1")) failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   423
        if (!sc.hasNextLine()) failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   424
        if (sc.nextInt() != 2) failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   425
        if (!sc.hasNextLine()) failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   426
        if (!sc.nextLine().equals("")) failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   427
        if (!sc.hasNextLine()) failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   428
        if (sc.nextInt() != 3) failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   429
        if (!sc.hasNextLine()) failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   430
        if (!sc.nextLine().equals(" 3")) failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   431
        if (!sc.hasNextLine()) failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   432
        if (sc.nextInt() != 4) failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   433
        if (!sc.hasNextLine()) failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   434
        if (sc.nextInt() != 4) failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   435
        if (!sc.hasNextLine()) failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   436
        if (!sc.nextLine().equals(" 4")) failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   437
        if (!sc.hasNextLine()) failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   438
        if (!sc.nextLine().equals("5")) failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   439
        if (sc.hasNextLine()) failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   440
        sc = new Scanner("blah blah blah blah blah blah");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   441
        if (!sc.hasNextLine()) failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   442
        if (!sc.nextLine().equals("blah blah blah blah blah blah"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   443
           failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   444
        if (sc.hasNextLine()) failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   445
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   446
        // Go through all the lines in a file
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   447
        File f = new File(System.getProperty("test.src", "."), "input.txt");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   448
        sc = new Scanner(f);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   449
        String lastLine = "blah";
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   450
        while(sc.hasNextLine())
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   451
            lastLine = sc.nextLine();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   452
        if (!lastLine.equals("# Data for usage case 6")) failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   453
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   454
        report("Has next line test");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   455
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   456
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   457
    public static void nextLineTest(int sourceType) throws Exception {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   458
        Scanner sc = scannerFor("1\n2\n3 3\r\n4 4 4\r5", sourceType);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   459
        if (!sc.nextLine().equals("1"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   460
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   461
        if (sc.nextInt() != 2)
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   462
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   463
        if (!sc.nextLine().equals(""))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   464
           failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   465
        if (sc.nextInt() != 3)
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   466
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   467
        if (!sc.nextLine().equals(" 3"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   468
           failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   469
        if (sc.nextInt() != 4)
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   470
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   471
        if (sc.nextInt() != 4)
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   472
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   473
        if (!sc.nextLine().equals(" 4"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   474
           failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   475
        if (!sc.nextLine().equals("5"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   476
           failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   477
        sc = new Scanner("blah blah blah blah blah blah");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   478
        if (!sc.nextLine().equals("blah blah blah blah blah blah"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   479
           failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   480
        report("Next line test");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   481
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   482
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   483
    public static void singleDelimTest(int sourceType) throws Exception {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   484
        Scanner sc = scannerFor("12 13  14   15    16     17      ",
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   485
                                sourceType);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   486
        sc.useDelimiter(" ");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   487
        for (int i=0; i<6; i++) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   488
            int j = sc.nextInt();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   489
            if (j != 12 + i)
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   490
                failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   491
            for (int k=0; k<i; k++) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   492
                String empty = sc.next();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   493
                if (!empty.equals(""))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   494
                    failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   495
            }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   496
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   497
        report("Single delim test");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   498
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   499
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   500
    /*
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   501
     * The hasNextPattern caches a match of a pattern called the regular cache
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   502
     * The hasNextType caches a match of that type called the type cache
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   503
     * Any next must clear the caches whether it uses them or not, because
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   504
     * it advances past a token thus invalidating any cached token; any
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   505
     * hasNext must set a cache to what it finds.
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   506
     */
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   507
    public static void cacheTest() throws Exception {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   508
        // Test clearing of the type cache
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   509
        Scanner scanner = new Scanner("777 dog");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   510
        scanner.hasNextInt();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   511
        scanner.findInLine("777");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   512
        try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   513
            scanner.nextInt();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   514
            System.out.println("type cache not cleared by find");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   515
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   516
        } catch (InputMismatchException ime) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   517
            // Correct
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   518
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   519
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   520
        scanner = new Scanner("777 dog");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   521
        scanner.hasNextInt();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   522
        scanner.skip("777");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   523
        try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   524
            scanner.nextInt();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   525
            System.out.println("type cache not cleared by skip");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   526
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   527
        } catch (InputMismatchException ime) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   528
            // Correct
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   529
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   530
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   531
        // Test clearing of the regular cache
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   532
        scanner = new Scanner("777 dog");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   533
        scanner.hasNext("777");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   534
        scanner.findInLine("777");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   535
        try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   536
            scanner.next("777");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   537
            System.out.println("regular cache not cleared by find");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   538
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   539
        } catch (InputMismatchException ime) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   540
            // Correct
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   541
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   542
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   543
        // Test two primitive next clearing of type cache
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   544
        scanner = new Scanner("777 dog");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   545
        scanner.hasNextInt();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   546
        scanner.nextLong();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   547
        try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   548
            scanner.nextInt();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   549
            System.out.println("type cache not cleared by primitive next");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   550
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   551
        } catch (InputMismatchException ime) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   552
            // Correct
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   553
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   554
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   555
        // Test using both of them, type first
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   556
        scanner = new Scanner("777 dog");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   557
        scanner.hasNext("777");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   558
        scanner.nextInt();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   559
        try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   560
            scanner.next("777");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   561
            System.out.println("regular cache not cleared by primitive next");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   562
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   563
        } catch (InputMismatchException ime) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   564
            // Correct
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   565
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   566
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   567
        // Test using both of them, regular first
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   568
        scanner = new Scanner("777 dog");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   569
        scanner.hasNext("777");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   570
        scanner.hasNextInt();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   571
        scanner.next("777");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   572
        try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   573
            scanner.nextInt();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   574
            System.out.println("type cache not cleared by regular next");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   575
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   576
        } catch (InputMismatchException ime) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   577
            // Correct
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   578
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   579
        report("Cache test");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   580
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   581
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   582
    /*
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   583
     * The hasNext<IntegerType>(radix) method caches a matched integer type
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   584
     * with specified radix for the next next<IntegerType>(radix) invoke.
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   585
     * The cache value should not be used if the next<IntegerType>(radix)
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   586
     * has different radix value with the last hasNext<IntegerType>(radix).
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   587
     */
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   588
    public static void cacheTest2() throws Exception {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   589
        // Test clearing of the type cache
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   590
        Scanner scanner = new Scanner("10");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   591
        scanner.hasNextByte(16);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   592
        if (scanner.nextByte(10) != 10) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   593
            System.out.println("wrong radix cache is used");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   594
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   595
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   596
        scanner = new Scanner("10");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   597
        scanner.hasNextShort(16);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   598
        if (scanner.nextShort(10) != 10) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   599
            System.out.println("wrong radix cache is used");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   600
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   601
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   602
        scanner = new Scanner("10");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   603
        scanner.hasNextInt(16);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   604
        if (scanner.nextInt(10) != 10) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   605
            System.out.println("wrong radix cache is used");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   606
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   607
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   608
        scanner = new Scanner("10");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   609
        scanner.hasNextLong(16);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   610
        if (scanner.nextLong(10) != 10) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   611
            System.out.println("wrong radix cache is used");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   612
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   613
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   614
        scanner = new Scanner("10");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   615
        scanner.hasNextBigInteger(16);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   616
        if (scanner.nextBigInteger(10).intValue() != 10) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   617
            System.out.println("wrong radix cache is used");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   618
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   619
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   620
        report("Cache test2");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   621
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   622
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   623
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   624
    public static void closeTest() throws Exception {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   625
        Scanner sc = new Scanner("testing");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   626
        sc.close();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   627
        sc.ioException();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   628
        sc.delimiter();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   629
        sc.useDelimiter("blah");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   630
        sc.useDelimiter(Pattern.compile("blah"));
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   631
        for (int i=0; i<NUM_METHODS; i++) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   632
            try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   633
                methodCall(sc, i);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   634
                failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   635
            } catch (IllegalStateException ise) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   636
                // Correct
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   637
            }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   638
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   639
        report("Close test");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   640
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   641
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   642
    private static int NUM_METHODS = 23;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   643
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   644
    private static void methodCall(Scanner sc, int i) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   645
        switch(i) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   646
            case 0: sc.hasNext(); break;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   647
            case 1: sc.next(); break;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   648
            case 2: sc.hasNext(Pattern.compile("blah")); break;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   649
            case 3: sc.next(Pattern.compile("blah")); break;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   650
            case 4: sc.hasNextBoolean(); break;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   651
            case 5: sc.nextBoolean(); break;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   652
            case 6: sc.hasNextByte(); break;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   653
            case 7: sc.nextByte(); break;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   654
            case 8: sc.hasNextShort(); break;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   655
            case 9: sc.nextShort(); break;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   656
            case 10: sc.hasNextInt(); break;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   657
            case 11: sc.nextInt(); break;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   658
            case 12: sc.hasNextLong(); break;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   659
            case 13: sc.nextLong(); break;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   660
            case 14: sc.hasNextFloat(); break;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   661
            case 15: sc.nextFloat(); break;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   662
            case 16: sc.hasNextDouble(); break;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   663
            case 17: sc.nextDouble(); break;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   664
            case 18: sc.hasNextBigInteger(); break;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   665
            case 19: sc.nextBigInteger(); break;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   666
            case 20: sc.hasNextBigDecimal(); break;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   667
            case 21: sc.nextBigDecimal(); break;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   668
            case 22: sc.hasNextLine(); break;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   669
            default:
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   670
                break;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   671
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   672
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   673
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   674
    public static void removeTest() throws Exception {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   675
        Scanner sc = new Scanner("testing");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   676
        try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   677
            sc.remove();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   678
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   679
        } catch (UnsupportedOperationException uoe) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   680
            // Correct result
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   681
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   682
        report("Remove test");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   683
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   684
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   685
    public static void delimiterTest() throws Exception {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   686
        Scanner sc = new Scanner("blah");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   687
        Pattern test = sc.delimiter();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   688
        if (!test.toString().equals("\\p{javaWhitespace}+"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   689
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   690
        sc.useDelimiter("a");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   691
        test = sc.delimiter();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   692
        if (!test.toString().equals("a"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   693
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   694
        sc.useDelimiter(Pattern.compile("b"));
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   695
        test = sc.delimiter();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   696
        if (!test.toString().equals("b"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   697
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   698
        report("Delimiter test");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   699
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   700
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   701
    public static void ioExceptionTest() throws Exception {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   702
        Readable thrower = new ThrowingReadable();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   703
        Scanner sc = new Scanner(thrower);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   704
        try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   705
            sc.nextInt();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   706
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   707
        } catch (NoSuchElementException nsee) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   708
            // Correct result
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   709
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   710
        Exception thrown = sc.ioException();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   711
        String detail = thrown.getMessage();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   712
        if (!detail.equals("ThrowingReadable always throws"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   713
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   714
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   715
        report("IOException test");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   716
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   717
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   718
    public static void bigIntegerPatternTest(int sourceType) throws Exception {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   719
        Scanner sc = scannerFor("23 9223372036854775817", sourceType);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   720
        if (!sc.nextBigInteger().equals(BigInteger.valueOf(23)))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   721
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   722
        if (!sc.nextBigInteger().equals(new BigInteger(
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   723
            "9223372036854775817", 10)))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   724
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   725
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   726
        // Test another radix
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   727
        sc = new Scanner("4a4 4A4").useRadix(16);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   728
        if (!sc.nextBigInteger().equals(new BigInteger("4a4", 16)))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   729
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   730
        if (!sc.nextBigInteger().equals(new BigInteger("4A4", 16)))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   731
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   732
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   733
        // Test alternating radices
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   734
        sc = new Scanner("12 4a4 14 4f4");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   735
        if (!sc.nextBigInteger(10).equals(new BigInteger("12", 10)))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   736
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   737
        if (!sc.nextBigInteger(16).equals(new BigInteger("4a4", 16)))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   738
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   739
        if (!sc.nextBigInteger(10).equals(new BigInteger("14", 10)))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   740
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   741
        if (!sc.nextBigInteger(16).equals(new BigInteger("4f4", 16)))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   742
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   743
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   744
        // Test use of a lot of radices
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   745
        for (int i=2; i<17; i++) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   746
            sc = new Scanner("1111");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   747
            if (!sc.nextBigInteger(i).equals(new BigInteger("1111", i)))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   748
                failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   749
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   750
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   751
        report("BigInteger pattern");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   752
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   753
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   754
    public static void bigDecimalPatternTest(int sourceType) throws Exception {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   755
        Scanner sc = scannerFor("23 45.99 -45,067.444 3.4e10", sourceType);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   756
        if (!sc.nextBigDecimal().equals(BigDecimal.valueOf(23)))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   757
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   758
        if (!sc.nextBigDecimal().equals(new BigDecimal("45.99")))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   759
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   760
        if (!sc.nextBigDecimal().equals(new BigDecimal("-45067.444")))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   761
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   762
        if (!sc.nextBigDecimal().equals(new BigDecimal("3.4e10")))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   763
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   764
        report("BigDecimal pattern");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   765
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   766
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   767
    public static void integerPatternTest(int sourceType) throws Exception {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   768
        String input =
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   769
            "1 22 f FF Z -3 -44 123 1,200 -123 -3,400,000 5,40 ,500 ";
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   770
        Scanner sc = scannerFor(input, sourceType);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   771
        integerPatternBody(sc);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   772
        CharBuffer cb = CharBuffer.wrap(input);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   773
        sc = new Scanner(cb);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   774
        integerPatternBody(sc);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   775
        report("Integer pattern");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   776
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   777
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   778
    public static void integerPatternBody(Scanner sc) throws Exception {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   779
        if (sc.nextInt() != 1)        failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   780
        if (sc.nextShort() != 22)     failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   781
        if (sc.nextShort(16) != 15)   failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   782
        if (sc.nextShort(16) != 255)  failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   783
        if (sc.nextShort(36) != 35)   failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   784
        if (!sc.hasNextInt())         failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   785
        if (sc.nextInt() != -3)       failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   786
        if (sc.nextInt() != -44)      failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   787
        if (sc.nextLong() != 123)     failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   788
        if (!sc.hasNextInt())         failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   789
        if (sc.nextInt() != 1200)     failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   790
        if (sc.nextInt() != -123)     failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   791
        if (sc.nextInt() != -3400000) failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   792
        try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   793
            sc.nextInt();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   794
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   795
        } catch (InputMismatchException ime) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   796
            // Correct result
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   797
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   798
        sc.next();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   799
        try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   800
            sc.nextLong();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   801
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   802
        } catch (InputMismatchException ime) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   803
            // Correct result
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   804
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   805
        sc.next();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   806
        try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   807
            sc.next();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   808
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   809
        } catch (InputMismatchException ime) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   810
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   811
        } catch (NoSuchElementException nse) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   812
            // Correct result
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   813
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   814
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   815
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   816
    public static void floatPatternTest(int sourceType) throws Exception {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   817
        String input =
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   818
            "090.090 1 22.0 -3 -44.05 +.123 -.1234 -3400000 56,566.6 " +
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   819
            "Infinity +Infinity -Infinity NaN -NaN +NaN 5.4.0 5-.00 ++6.07";
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   820
        Scanner sc = scannerFor(input, sourceType);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   821
        floatPatternBody(sc);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   822
        CharBuffer cb = CharBuffer.wrap(input);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   823
        sc = new Scanner(cb);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   824
        floatPatternBody(sc);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   825
        report("Float pattern");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   826
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   827
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   828
    public static void floatPatternBody(Scanner sc) throws Exception {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   829
        if (sc.nextFloat() != 090.090f)                   failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   830
        if (sc.nextFloat() != 1f)                         failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   831
        if (sc.nextFloat() != 22.0f)                      failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   832
        if (sc.nextDouble() != -3d)                       failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   833
        if (sc.nextDouble() != -44.05d)                   failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   834
        if (sc.nextFloat() != .123f)                      failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   835
        if (sc.nextFloat() != -.1234f)                    failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   836
        if (sc.nextDouble() != -3400000d)                 failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   837
        if (sc.nextDouble() != 56566.6d)                  failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   838
        if (sc.nextDouble() != Double.POSITIVE_INFINITY)  failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   839
        if (sc.nextDouble() != Double.POSITIVE_INFINITY)  failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   840
        if (sc.nextDouble() != Double.NEGATIVE_INFINITY)  failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   841
        if (!Double.valueOf(sc.nextDouble()).isNaN())     failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   842
        if (!Double.valueOf(sc.nextDouble()).isNaN())     failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   843
        if (!Double.valueOf(sc.nextDouble()).isNaN())     failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   844
        try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   845
            sc.nextFloat();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   846
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   847
        } catch (NoSuchElementException nse) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   848
            // Correct result
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   849
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   850
        try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   851
            sc.nextDouble();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   852
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   853
        } catch (NoSuchElementException nse) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   854
            // Correct result
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   855
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   856
        try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   857
            sc.nextDouble();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   858
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   859
        } catch (NoSuchElementException nse) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   860
            // Correct result
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   861
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   862
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   863
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   864
    public static void fromFileTest() throws Exception {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   865
        File f = new File(System.getProperty("test.src", "."), "input.txt");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   866
        Scanner sc = new Scanner(f).useDelimiter("\n+");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   867
        String testDataTag = sc.findWithinHorizon("fromFileTest", 0);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   868
        if (!testDataTag.equals("fromFileTest"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   869
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   870
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   871
        int count = 0;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   872
        while (sc.hasNextLong()) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   873
            long blah = sc.nextLong();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   874
            count++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   875
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   876
        if (count != 7)
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   877
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   878
        sc.close();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   879
        report("From file");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   880
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   881
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   882
    private static void example1() throws Exception {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   883
        Scanner s = new Scanner("1 fish 2 fish red fish blue fish");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   884
        s.useDelimiter("\\s*fish\\s*");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   885
        List <String> results = new ArrayList<String>();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   886
        while(s.hasNext())
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   887
            results.add(s.next());
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   888
        System.out.println(results);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   889
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   890
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   891
    private static void example2() throws Exception {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   892
        Scanner s = new Scanner("1 fish 2 fish red fish blue fish");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   893
        s.useDelimiter("\\s*fish\\s*");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   894
        System.out.println(s.nextInt());
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   895
        System.out.println(s.nextInt());
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   896
        System.out.println(s.next());
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   897
        System.out.println(s.next());
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   898
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   899
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   900
    private static void example3() throws Exception {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   901
        Scanner s = new Scanner("1 fish 2 fish red fish blue fish");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   902
        s.findInLine("(\\d+) fish (\\d+) fish (\\w+) fish (\\w+)");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   903
        for (int i=1; i<=s.match().groupCount(); i++)
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   904
            System.out.println(s.match().group(i));
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   905
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   906
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   907
    private static void findInLineTest() throws Exception {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   908
        Scanner s = new Scanner("abc def ghi jkl mno");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   909
        Pattern letters = Pattern.compile("[a-z]+");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   910
        Pattern frogs = Pattern.compile("frogs");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   911
        String str = s.findInLine(letters);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   912
        if (!str.equals("abc"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   913
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   914
        if (!s.hasNext(letters))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   915
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   916
        try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   917
            str = s.findInLine(frogs);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   918
        } catch (NoSuchElementException nsee) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   919
            // Correct
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   920
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   921
        if (!s.hasNext())
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   922
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   923
        if (!s.hasNext(letters))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   924
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   925
        str = s.findInLine(letters);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   926
        if (!str.equals("def"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   927
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   928
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   929
        report("Find patterns");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   930
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   931
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   932
    private static void findInEmptyLineTest() throws Exception {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   933
        String eol = System.getProperty("line.separator");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   934
        Scanner s = new Scanner("line 1" + eol + "" + eol + "line 3" + eol);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   935
        int lineNo = 0;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   936
        while (s.hasNextLine()) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   937
            lineNo++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   938
            s.findInLine("3");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   939
            s.nextLine();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   940
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   941
        if (lineNo != 3)
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   942
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   943
        report("findInEmptyLine test");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   944
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   945
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   946
    private static void matchTest() throws Exception {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   947
        Scanner s = new Scanner("1 fish 2 fish red fish blue fish");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   948
        s.findInLine("(\\d+) fish (\\d+) fish (\\w+) fish (\\w+)");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   949
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   950
        MatchResult result = s.match();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   951
        if (!result.group(1).equals("1"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   952
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   953
        if (!result.group(2).equals("2"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   954
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   955
        if (!result.group(3).equals("red"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   956
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   957
        if (!result.group(4).equals("blue"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   958
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   959
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   960
        report("Match patterns");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   961
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   962
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   963
    private static void skipTest() throws Exception {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   964
        Scanner s = new Scanner("abc def ghi jkl mno");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   965
        Pattern letters = Pattern.compile("[a-z]+");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   966
        Pattern spaceLetters = Pattern.compile(" [a-z]+");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   967
        Pattern frogs = Pattern.compile("frogs");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   968
        try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   969
            s.skip(letters);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   970
        } catch (NoSuchElementException ime) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   971
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   972
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   973
        String token = s.next(letters);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   974
        if (!token.equals("def")) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   975
            System.out.println("expected def");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   976
            System.out.println("I found "+token);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   977
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   978
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   979
        try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   980
            s.skip(letters);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   981
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   982
        } catch (NoSuchElementException ime) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   983
            // Correct result
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   984
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   985
        token = s.next(letters);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   986
        if (!token.equals("ghi")) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   987
            System.out.println("expected ghi");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   988
            System.out.println("I found "+token);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   989
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   990
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   991
        try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   992
            s.skip(letters);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   993
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   994
        } catch (NoSuchElementException ime) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   995
            // Correct result because skip ignores delims
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   996
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   997
        try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   998
            s.skip(spaceLetters);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
   999
        } catch (NoSuchElementException ime) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1000
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1001
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1002
        token = s.next(letters);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1003
        if (!token.equals("mno")) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1004
            System.out.println("expected mno");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1005
            System.out.println("I found "+token);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1006
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1007
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1008
        try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1009
            s.skip(letters);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1010
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1011
        } catch (NoSuchElementException ime) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1012
            // Correct result
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1013
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1014
        report("Skip patterns");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1015
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1016
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1017
    private static void byteTest(int sourceType) throws Exception {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1018
        String input = " 3 0 00 b -B 012 44 -55 12 127 129 -131 dog 0x12";
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1019
        Scanner s = scannerFor(input, sourceType);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1020
        if (!s.hasNextByte())          failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1021
        if (s.nextByte() != (byte)3)   failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1022
        if (!s.hasNextByte())          failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1023
        if (s.nextByte() != (byte)0)   failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1024
        if (!s.hasNextByte())          failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1025
        if (s.nextByte() != (byte)0)   failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1026
        if (!s.hasNextByte(16))        failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1027
        if (s.nextByte(16) != (byte)11)failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1028
        if (!s.hasNextByte(16))        failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1029
        if (s.nextByte(16) != (byte)-11) failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1030
        if (!s.hasNextByte())          failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1031
        if (s.nextByte() != (byte)12)  failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1032
        if (!s.hasNextByte())          failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1033
        if (s.nextByte() != (byte)44)  failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1034
        if (!s.hasNextByte())          failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1035
        if (s.nextByte() != (byte)-55) failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1036
        if (!s.hasNextByte())          failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1037
        if (s.nextByte() != (byte)12)  failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1038
        if (!s.hasNextByte())          failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1039
        if (s.nextByte() != (byte)127) failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1040
        if (s.hasNextByte())           failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1041
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1042
        try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1043
            s.nextByte();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1044
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1045
        } catch (InputMismatchException ime) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1046
            // Correct result
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1047
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1048
        if (s.hasNextByte())           failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1049
        if (s.nextInt() != 129)        failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1050
        if (s.hasNextByte())           failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1051
        try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1052
            s.nextByte();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1053
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1054
        } catch (InputMismatchException ime) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1055
            // Correct result
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1056
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1057
        if (s.nextInt() != -131)       failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1058
        if (s.hasNextByte())           failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1059
        try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1060
            s.nextByte();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1061
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1062
        } catch (InputMismatchException ime) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1063
            // Correct result
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1064
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1065
        s.next(Pattern.compile("\\w+"));
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1066
        if (s.hasNextByte())
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1067
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1068
        try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1069
            s.nextByte();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1070
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1071
        } catch (NoSuchElementException nsee) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1072
            // Correct result
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1073
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1074
        s.next();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1075
        if (s.hasNextByte())
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1076
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1077
        try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1078
            byte bb = s.nextByte();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1079
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1080
        } catch (NoSuchElementException nsee) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1081
            // Correct result
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1082
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1083
        report("Scan bytes");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1084
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1085
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1086
    private static void shortTest(int sourceType) throws Exception {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1087
        String input = "  017 22 00E -34 44,333 -53999 0x19 dog";
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1088
        Scanner s = scannerFor(input, sourceType);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1089
        if (!s.hasNextShort())             failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1090
        if (s.nextShort() != (short)17)   failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1091
        if (!s.hasNextShort())            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1092
        if (s.nextShort() != (short)22)   failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1093
        if (!s.hasNextShort(16))          failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1094
        if (s.nextShort(16) != (short)14) failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1095
        if (!s.hasNextShort())            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1096
        if (s.nextShort() != (short)-34)  failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1097
        for (int i=0; i<4; i++) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1098
            if (s.hasNextShort())
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1099
                failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1100
            try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1101
                s.nextShort();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1102
                failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1103
            } catch (InputMismatchException ime) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1104
                // Correct result
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1105
            }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1106
            s.next();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1107
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1108
        try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1109
            s.next();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1110
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1111
        } catch (InputMismatchException ime) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1112
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1113
        } catch (NoSuchElementException nse) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1114
            // Correct result
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1115
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1116
        report("Scan shorts");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1117
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1118
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1119
    private static void intTest(int sourceType) throws Exception {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1120
        Scanner s = scannerFor(
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1121
            "22 022 C -34 0x80000000 -2147483649 dog ", sourceType);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1122
        if (!s.hasNextInt())      failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1123
        if (s.nextInt() != 22)    failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1124
        if (!s.hasNextInt())      failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1125
        if (s.nextInt() != 22)    failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1126
        if (!s.hasNextInt(16))    failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1127
        if (s.nextInt(16) != 12)  failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1128
        if (!s.hasNextInt())      failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1129
        if (s.nextInt() != -34)   failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1130
        for (int i=0; i<3; i++) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1131
            if (s.hasNextInt())
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1132
                failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1133
            try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1134
                s.nextInt();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1135
                failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1136
            } catch (InputMismatchException ime) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1137
                // Correct result
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1138
            }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1139
            s.next();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1140
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1141
        try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1142
            s.next();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1143
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1144
        } catch (InputMismatchException ime) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1145
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1146
        } catch (NoSuchElementException nse) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1147
            // Correct result
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1148
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1149
        report("Scan ints");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1150
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1151
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1152
    private static void longTest(int sourceType) throws Exception {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1153
        Scanner s = scannerFor(
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1154
        "022 9223372036854775807 0x8000000000000000 9223372036854775808 dog ",
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1155
              sourceType);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1156
        if (!s.hasNextLong())                        failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1157
        if (s.nextLong() != (long)22)                failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1158
        if (!s.hasNextLong())                        failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1159
        if (s.nextLong() != 9223372036854775807L)    failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1160
        for (int i=0; i<3; i++) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1161
            if (s.hasNextLong())
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1162
                failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1163
            try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1164
                s.nextLong();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1165
                failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1166
            } catch (InputMismatchException ime) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1167
                // Correct result
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1168
            }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1169
            s.next();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1170
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1171
        try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1172
            s.next();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1173
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1174
        } catch (InputMismatchException ime) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1175
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1176
        } catch (NoSuchElementException nse) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1177
            // Correct result
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1178
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1179
        report("Scan longs");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1180
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1181
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1182
    private static void floatTest(int sourceType) throws Exception {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1183
        Scanner s = scannerFor(
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1184
            "0 0. 0.0 2 2. 2.0 2.3 -2 -2.0 -2.3 -. 2-. 2..3", sourceType);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1185
        if (!s.hasNextFloat())      failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1186
        if (s.nextFloat() != 0f)    failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1187
        if (!s.hasNextFloat())      failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1188
        if (s.nextFloat() != 0f)    failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1189
        if (!s.hasNextFloat())      failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1190
        if (s.nextFloat() != 0f)    failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1191
        if (!s.hasNextFloat())      failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1192
        if (s.nextFloat() != 2f)    failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1193
        if (!s.hasNextFloat())      failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1194
        if (s.nextFloat() != 2f)    failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1195
        if (!s.hasNextFloat())      failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1196
        if (s.nextFloat() != 2f)    failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1197
        if (!s.hasNextFloat())      failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1198
        if (s.nextFloat() != 2.3f)  failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1199
        if (!s.hasNextFloat())      failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1200
        if (s.nextFloat() != -2f)   failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1201
        if (!s.hasNextFloat())      failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1202
        if (s.nextFloat() != -2f)   failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1203
        if (!s.hasNextFloat())      failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1204
        if (s.nextFloat() != -2.3f) failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1205
        for (int i=0; i<3; i++) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1206
            if (s.hasNextLong())
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1207
                failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1208
            try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1209
                s.nextFloat();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1210
                failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1211
            } catch (InputMismatchException ime) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1212
                // Correct result
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1213
            }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1214
            s.next();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1215
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1216
        try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1217
            s.next();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1218
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1219
        } catch (InputMismatchException ime) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1220
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1221
        } catch (NoSuchElementException nse) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1222
            // Correct result
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1223
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1224
        report("Scan floats");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1225
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1226
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1227
    private static void doubleTest(int sourceType) throws Exception {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1228
        Scanner s = scannerFor(
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1229
            "0 0. 0.0 2 2. 2.0 2.3 -2 -2.0 -2.3 -. 2-. 2..3", sourceType);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1230
        if (!s.hasNextDouble())             failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1231
        if (s.nextDouble() != 0d)           failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1232
        if (!s.hasNextDouble())             failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1233
        if (s.nextDouble() != 0d)           failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1234
        if (!s.hasNextDouble())             failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1235
        if (s.nextDouble() != 0d)           failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1236
        if (!s.hasNextDouble())             failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1237
        if (s.nextDouble() != 2d)           failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1238
        if (!s.hasNextDouble())             failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1239
        if (s.nextDouble() != 2d)           failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1240
        if (!s.hasNextDouble())             failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1241
        if (s.nextDouble() != 2d)           failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1242
        if (!s.hasNextDouble())             failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1243
        if (s.nextDouble() != 2.3d)         failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1244
        if (!s.hasNextDouble())             failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1245
        if (s.nextDouble() != -2d)          failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1246
        if (!s.hasNextDouble())             failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1247
        if (s.nextDouble() != -2d)          failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1248
        if (!s.hasNextDouble())             failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1249
        if (s.nextDouble() != -2.3d)        failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1250
        for (int i=0; i<3; i++) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1251
            if (s.hasNextLong())
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1252
                failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1253
            try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1254
                s.nextDouble();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1255
                failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1256
            } catch (InputMismatchException ime) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1257
                // Correct result
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1258
            }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1259
            s.next();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1260
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1261
        try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1262
            s.next();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1263
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1264
        } catch (InputMismatchException ime) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1265
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1266
        } catch (NoSuchElementException nse) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1267
            // Correct result
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1268
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1269
        report("Scan doubles");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1270
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1271
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1272
    private static void booleanTest(int sourceType) throws Exception {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1273
        Scanner s = scannerFor(
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1274
            " true false\t \r\n true FaLse \n  True Tru", sourceType);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1275
        if (!s.nextBoolean())     failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1276
        if (!s.hasNextBoolean())  failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1277
        if (s.nextBoolean())      failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1278
        if (!s.nextBoolean())     failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1279
        if (s.nextBoolean())      failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1280
        if (!s.nextBoolean())     failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1281
        if (s.hasNextBoolean())   failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1282
        try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1283
            s.nextBoolean();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1284
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1285
        } catch (NoSuchElementException nsee) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1286
            // Expected result
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1287
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1288
        report("Scan booleans");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1289
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1290
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1291
    private static void hasNextTest(int sourceType) throws Exception {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1292
        Scanner s = scannerFor(
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1293
            " blah blech\t blather  alongblatherindeed", sourceType);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1294
        if (!s.hasNext())            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1295
        if (!s.hasNext())            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1296
        String result = s.next();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1297
        if (!result.equals("blah"))  failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1298
        if (!s.hasNext())            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1299
        if (!s.hasNext())            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1300
        result = s.next();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1301
        if (!result.equals("blech")) failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1302
        if (!s.hasNext())            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1303
        result = s.next();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1304
        if (!result.equals("blather")) failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1305
        if (!s.hasNext())              failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1306
        if (!s.hasNext())              failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1307
        result = s.next();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1308
        if (!result.equals("alongblatherindeed")) failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1309
        if (s.hasNext())                          failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1310
        try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1311
            result = s.next();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1312
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1313
        } catch (NoSuchElementException nsee) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1314
            // Correct result
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1315
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1316
        report("Has next test");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1317
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1318
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1319
    private static void nextTest(int sourceType) throws Exception {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1320
        Scanner s = scannerFor(
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1321
            " blah blech\t blather  alongblatherindeed", sourceType);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1322
        String result = (String)s.next();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1323
        if (!result.equals("blah"))    failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1324
        result = (String)s.next();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1325
        if (!result.equals("blech"))   failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1326
        result = (String)s.next();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1327
        if (!result.equals("blather")) failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1328
        result = (String)s.next();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1329
        if (!result.equals("alongblatherindeed"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1330
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1331
        try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1332
            result = (String)s.next();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1333
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1334
        } catch (NoSuchElementException nsee) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1335
            // Correct result
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1336
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1337
        report("Next test");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1338
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1339
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1340
    private static void hasNextPatternTest(int sourceType) throws Exception {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1341
        Scanner s = scannerFor(
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1342
            " blah blech\t blather  alongblatherindeed", sourceType);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1343
        Pattern p1 = Pattern.compile("\\w+");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1344
        Pattern p2 = Pattern.compile("blech");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1345
        if (!s.hasNext(p1))    failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1346
        if (!s.hasNext(p1))    failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1347
        if (s.hasNext(p2))     failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1348
        String result = (String)s.next();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1349
        if (!result.equals("blah"))  failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1350
        if (!s.hasNext(p1))          failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1351
        if (!s.hasNext(p2))          failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1352
        result = (String)s.next();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1353
        if (!result.equals("blech")) failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1354
        if (!s.hasNext(p1))          failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1355
        if (s.hasNext(p2))           failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1356
        result = (String)s.next();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1357
        if (!result.equals("blather")) failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1358
        if (!s.hasNext(p1))            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1359
        if (s.hasNext(p2))             failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1360
        result = (String)s.next();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1361
        if (!result.equals("alongblatherindeed")) failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1362
        if (s.hasNext(p1))  failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1363
        if (s.hasNext(p2))  failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1364
        report("Has Next Pattern test");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1365
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1366
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1367
    private static void nextPatternTest(int sourceType) throws Exception {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1368
        Scanner s = scannerFor(
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1369
            " blah blech\t blather  alongblatherindeed", sourceType);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1370
        Pattern p1 = Pattern.compile("blah");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1371
        Pattern p2 = Pattern.compile("blech");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1372
        Pattern p3 = Pattern.compile("blather");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1373
        Pattern p4 = Pattern.compile("alongblatherindeed");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1374
        String result = null;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1375
        try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1376
            result = (String)s.next(p2);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1377
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1378
        } catch (NoSuchElementException nsee) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1379
            // Correct result
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1380
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1381
        result = (String)s.next(p1);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1382
        if (!result.equals("blah"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1383
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1384
        try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1385
            result = (String)s.next(p1);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1386
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1387
        } catch (NoSuchElementException nsee) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1388
            // Correct result
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1389
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1390
        result = (String)s.next(p2);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1391
        if (!result.equals("blech"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1392
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1393
        try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1394
            result = (String)s.next(p4);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1395
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1396
        } catch (NoSuchElementException nsee) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1397
            // Correct result
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1398
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1399
        result = (String)s.next(p3);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1400
        if (!result.equals("blather"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1401
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1402
        try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1403
            result = (String)s.next(p3);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1404
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1405
        } catch (NoSuchElementException nsee) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1406
            // Correct result
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1407
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1408
        result = (String)s.next(p4);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1409
        if (!result.equals("alongblatherindeed"))
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1410
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1411
        try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1412
            result = (String)s.next();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1413
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1414
        } catch (NoSuchElementException nsee) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1415
            // Correct result
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1416
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1417
        report("Next pattern test");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1418
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1419
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1420
    private static void useLocaleTest() throws Exception {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1421
        Scanner s = new Scanner("334.65").useLocale(Locale.ENGLISH);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1422
        if (!s.hasNextFloat())           failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1423
        if (s.nextFloat() != 334.65f)    failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1424
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1425
        s = new Scanner("334,65").useLocale(Locale.FRENCH);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1426
        if (!s.hasNextFloat())           failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1427
        if (s.nextFloat() != 334.65f)    failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1428
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1429
        s = new Scanner("4.334,65").useLocale(Locale.GERMAN);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1430
        if (!s.hasNextFloat())           failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1431
        if (s.nextFloat() != 4334.65f)    failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1432
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1433
        // Test case reported from India
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1434
        try {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1435
            String Message = "123978.90 $";
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1436
            Locale locale = new Locale("hi","IN");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1437
            NumberFormat form = NumberFormat.getInstance(locale);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1438
            double myNumber = 1902.09;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1439
            Scanner scanner = new Scanner(form.format(myNumber).toString());
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1440
            scanner.useLocale(locale);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1441
            double d = scanner.nextDouble();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1442
        } catch (InputMismatchException ime) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1443
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1444
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1445
        report("Use locale test");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1446
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1447
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1448
    public static void resetTest() throws Exception {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1449
        Scanner sc = new Scanner("");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1450
        int radix = sc.radix();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1451
        Locale locale = sc.locale();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1452
        Pattern delimiter = sc.delimiter();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1453
        Pattern a = Pattern.compile("A");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1454
        sc.useDelimiter(a);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1455
        Locale dummy = new Locale("en", "US", "dummy");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1456
        sc.useLocale(dummy);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1457
        sc.useRadix(16);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1458
        if (sc.radix() != 16 ||
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1459
            !sc.locale().equals(dummy) ||
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1460
            !sc.delimiter().pattern().equals(a.pattern())) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1461
            failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1462
        } else {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1463
            sc.reset();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1464
            if (sc.radix() != radix ||
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1465
                !sc.locale().equals(locale) ||
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1466
                !sc.delimiter().pattern().equals(delimiter.pattern())) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1467
                failCount++;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1468
            }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1469
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1470
        sc.close();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1471
        report("Reset test");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1472
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1473
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1474
    private static void report(String testName) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1475
        int spacesToAdd = 30 - testName.length();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1476
        StringBuffer paddedNameBuffer = new StringBuffer(testName);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1477
        for (int i=0; i<spacesToAdd; i++)
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1478
            paddedNameBuffer.append(" ");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1479
        String paddedName = paddedNameBuffer.toString();
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1480
        System.err.println(paddedName + ": " +
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1481
                           (failCount==0 ? "Passed":"Failed("+failCount+")"));
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1482
        if (failCount > 0)
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1483
            failure = true;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1484
        failCount = 0;
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1485
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1486
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1487
    static Scanner scannerFor(String input, int sourceType) {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1488
        if (sourceType == 1)
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1489
            return new Scanner(input);
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1490
        else
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1491
            return new Scanner(new StutteringInputStream(input));
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1492
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1493
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1494
    static class ThrowingReadable implements Readable {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1495
        ThrowingReadable() {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1496
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1497
        public int read(java.nio.CharBuffer cb) throws IOException {
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1498
            throw new IOException("ThrowingReadable always throws");
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1499
        }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1500
    }
752473818053 8132206: move ScanTest.java into OpenJDK
smarks
parents:
diff changeset
  1501
}