Path: blob/master/test/jdk/java/util/Arrays/StreamAndSpliterator.java
41152 views
/*1* Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation.7*8* This code is distributed in the hope that it will be useful, but WITHOUT9* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or10* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License11* version 2 for more details (a copy is included in the LICENSE file that12* accompanied this code).13*14* You should have received a copy of the GNU General Public License version15* 2 along with this work; if not, write to the Free Software Foundation,16* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.17*18* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA19* or visit www.oracle.com if you need additional information or have any20* questions.21*/2223/**24* @test25* @bug 803785726* @summary tests for stream and spliterator factory methods27* @run testng StreamAndSpliterator28*/2930import org.testng.annotations.Test;3132import java.util.Arrays;33import java.util.Spliterators;3435import org.testng.Assert.ThrowingRunnable;3637import static org.testng.Assert.assertThrows;3839public class StreamAndSpliterator {40@Test41public void testStreamNPEs() {42assertThrowsNPE(() -> Arrays.stream((int[]) null, 0, 0));43assertThrowsNPE(() -> Arrays.stream((long[]) null, 0, 0));44assertThrowsNPE(() -> Arrays.stream((double[]) null, 0, 0));45assertThrowsNPE(() -> Arrays.stream((String[]) null, 0, 0));46}4748@Test49public void testStreamAIOBEs() {50// origin > fence51assertThrowsAIOOB(() -> Arrays.stream(new int[]{}, 1, 0));52assertThrowsAIOOB(() -> Arrays.stream(new long[]{}, 1, 0));53assertThrowsAIOOB(() -> Arrays.stream(new double[]{}, 1, 0));54assertThrowsAIOOB(() -> Arrays.stream(new String[]{}, 1, 0));5556// bad origin57assertThrowsAIOOB(() -> Arrays.stream(new int[]{}, -1, 0));58assertThrowsAIOOB(() -> Arrays.stream(new long[]{}, -1, 0));59assertThrowsAIOOB(() -> Arrays.stream(new double[]{}, -1, 0));60assertThrowsAIOOB(() -> Arrays.stream(new String[]{}, -1, 0));6162// bad fence63assertThrowsAIOOB(() -> Arrays.stream(new int[]{}, 0, 1));64assertThrowsAIOOB(() -> Arrays.stream(new long[]{}, 0, 1));65assertThrowsAIOOB(() -> Arrays.stream(new double[]{}, 0, 1));66assertThrowsAIOOB(() -> Arrays.stream(new String[]{}, 0, 1));67}686970@Test71public void testSpliteratorNPEs() {72assertThrowsNPE(() -> Arrays.spliterator((int[]) null, 0, 0));73assertThrowsNPE(() -> Arrays.spliterator((long[]) null, 0, 0));74assertThrowsNPE(() -> Arrays.spliterator((double[]) null, 0, 0));75assertThrowsNPE(() -> Arrays.spliterator((String[]) null, 0, 0));76}7778@Test79public void testSpliteratorAIOBEs() {80// origin > fence81assertThrowsAIOOB(() -> Arrays.spliterator(new int[]{}, 1, 0));82assertThrowsAIOOB(() -> Arrays.spliterator(new long[]{}, 1, 0));83assertThrowsAIOOB(() -> Arrays.spliterator(new double[]{}, 1, 0));84assertThrowsAIOOB(() -> Arrays.spliterator(new String[]{}, 1, 0));8586// bad origin87assertThrowsAIOOB(() -> Arrays.spliterator(new int[]{}, -1, 0));88assertThrowsAIOOB(() -> Arrays.spliterator(new long[]{}, -1, 0));89assertThrowsAIOOB(() -> Arrays.spliterator(new double[]{}, -1, 0));90assertThrowsAIOOB(() -> Arrays.spliterator(new String[]{}, -1, 0));9192// bad fence93assertThrowsAIOOB(() -> Arrays.spliterator(new int[]{}, 0, 1));94assertThrowsAIOOB(() -> Arrays.spliterator(new long[]{}, 0, 1));95assertThrowsAIOOB(() -> Arrays.spliterator(new double[]{}, 0, 1));96assertThrowsAIOOB(() -> Arrays.spliterator(new String[]{}, 0, 1));97}9899100@Test101public void testSpliteratorNPEsFromSpliterators() {102assertThrowsNPE(() -> Spliterators.spliterator((int[]) null, 0, 0, 0));103assertThrowsNPE(() -> Spliterators.spliterator((long[]) null, 0, 0, 0));104assertThrowsNPE(() -> Spliterators.spliterator((double[]) null, 0, 0, 0));105assertThrowsNPE(() -> Spliterators.spliterator((String[]) null, 0, 0, 0));106}107108@Test109public void testSpliteratorAIOBEsFromSpliterators() {110// origin > fence111assertThrowsAIOOB(() -> Spliterators.spliterator(new int[]{}, 1, 0, 0));112assertThrowsAIOOB(() -> Spliterators.spliterator(new long[]{}, 1, 0, 0));113assertThrowsAIOOB(() -> Spliterators.spliterator(new double[]{}, 1, 0, 0));114assertThrowsAIOOB(() -> Spliterators.spliterator(new String[]{}, 1, 0, 0));115116// bad origin117assertThrowsAIOOB(() -> Spliterators.spliterator(new int[]{}, -1, 0, 0));118assertThrowsAIOOB(() -> Spliterators.spliterator(new long[]{}, -1, 0, 0));119assertThrowsAIOOB(() -> Spliterators.spliterator(new double[]{}, -1, 0, 0));120assertThrowsAIOOB(() -> Spliterators.spliterator(new String[]{}, -1, 0, 0));121122// bad fence123assertThrowsAIOOB(() -> Spliterators.spliterator(new int[]{}, 0, 1, 0));124assertThrowsAIOOB(() -> Spliterators.spliterator(new long[]{}, 0, 1, 0));125assertThrowsAIOOB(() -> Spliterators.spliterator(new double[]{}, 0, 1, 0));126assertThrowsAIOOB(() -> Spliterators.spliterator(new String[]{}, 0, 1, 0));127}128129void assertThrowsNPE(ThrowingRunnable r) {130assertThrows(NullPointerException.class, r);131}132133void assertThrowsAIOOB(ThrowingRunnable r) {134assertThrows(ArrayIndexOutOfBoundsException.class, r);135}136}137138139