test/java/util/Scanner/ScanTest.java

Print this page

        

*** 22,32 **** */ /** * @test * @bug 4313885 4926319 4927634 5032610 5032622 5049968 5059533 6223711 6277261 6269946 6288823 ! * 8072722 8139414 * @summary Basic tests of java.util.Scanner methods * @key randomness * @modules jdk.localedata * @run main/othervm ScanTest */ --- 22,32 ---- */ /** * @test * @bug 4313885 4926319 4927634 5032610 5032622 5049968 5059533 6223711 6277261 6269946 6288823 ! * 8072722 8139414 8166261 * @summary Basic tests of java.util.Scanner methods * @key randomness * @modules jdk.localedata * @run main/othervm ScanTest */
*** 34,43 **** --- 34,44 ---- import java.io.*; import java.math.*; import java.nio.*; import java.text.*; import java.util.*; + import java.util.function.BiConsumer; import java.util.function.Consumer; import java.util.regex.*; import java.util.stream.*; public class ScanTest {
*** 77,86 **** --- 78,88 ---- cacheTest2(); nonASCIITest(); resetTest(); streamCloseTest(); streamComodTest(); + outOfRangeRadixTest(); for (int j = 0; j < NUM_SOURCE_TYPES; j++) { hasNextTest(j); nextTest(j); hasNextPatternTest(j);
*** 1507,1516 **** --- 1509,1560 ---- } sc.close(); report("Reset test"); } + static List<BiConsumer <Scanner, Integer>> methodWRList = Arrays.asList( + (s, r) -> s.hasNextByte(r), + (s, r) -> s.nextByte(r), + (s, r) -> s.hasNextShort(r), + (s, r) -> s.nextShort(r), + (s, r) -> s.hasNextInt(r), + (s, r) -> s.nextInt(r), + (s, r) -> s.hasNextLong(r), + (s, r) -> s.nextLong(r), + (s, r) -> s.hasNextBigInteger(r), + (s, r) -> s.nextBigInteger(r) + ); + + /* + * Test that setting the radix to an out of range value triggers + * an IllegalArgumentException + */ + public static void outOfRangeRadixTest() throws Exception { + int[] bad = new int[] { -1, 0, 1, 37, 38 }; + int[] good = IntStream.rangeClosed(Character.MIN_RADIX, Character.MAX_RADIX) + .toArray(); + + methodWRList.stream().forEach( m -> { + for (int r : bad) { + try (Scanner sc = new Scanner("10 10 10 10")) { + m.accept(sc, r); + failCount++; + } catch (IllegalArgumentException ise) {} + } + }); + methodWRList.stream().forEach( m -> { + for (int r : good) { + try (Scanner sc = new Scanner("10 10 10 10")) { + m.accept(sc, r); + } catch (Exception x) { + failCount++; + } + } + }); + report("Radix out of range test"); + } + /* * Test that closing the stream also closes the underlying Scanner. * The cases of attempting to open streams on a closed Scanner are * covered by closeTest(). */