| /* |
| * Copyright 2016 Google Inc. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); you may not |
| * use this file except in compliance with the License. You may obtain a copy of |
| * the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| * License for the specific language governing permissions and limitations under |
| * the License. |
| */ |
| package com.google.gwt.emultest.java8.util; |
| |
| import com.google.gwt.emultest.java.util.EmulTestBase; |
| |
| import java.util.Arrays; |
| |
| /** |
| * Java 8 methods to test in java.util.Arrays. |
| */ |
| public class ArraysTest extends EmulTestBase { |
| |
| public void testParallelPrefix_double() { |
| double[] array = {1}; |
| Arrays.parallelPrefix(array, Double::sum); |
| assertTrue(Arrays.equals(new double[]{1}, array)); |
| |
| array = new double[]{1, 2, 3}; |
| Arrays.parallelPrefix(array, Double::sum); |
| assertTrue(Arrays.equals(new double[]{1, 3, 6}, array)); |
| |
| array = new double[]{1, 2, 3}; |
| Arrays.parallelPrefix(array, 0, 0, Double::sum); |
| assertTrue(Arrays.equals(new double[]{1, 2, 3}, array)); |
| |
| array = new double[]{1, 2, 3, 4, 5}; |
| Arrays.parallelPrefix(array, 1, 4, Double::sum); |
| assertTrue(Arrays.equals(new double[]{1, 2, 5, 9, 5}, array)); |
| } |
| |
| public void testParallelPrefix_int() { |
| int[] array = {1}; |
| Arrays.parallelPrefix(array, Integer::sum); |
| assertTrue(Arrays.equals(new int[]{1}, array)); |
| |
| array = new int[]{1, 2, 3}; |
| Arrays.parallelPrefix(array, Integer::sum); |
| assertTrue(Arrays.equals(new int[]{1, 3, 6}, array)); |
| |
| array = new int[]{1, 2, 3}; |
| Arrays.parallelPrefix(array, 0, 0, Integer::sum); |
| assertTrue(Arrays.equals(new int[]{1, 2, 3}, array)); |
| |
| array = new int[]{1, 2, 3, 4, 5}; |
| Arrays.parallelPrefix(array, 1, 4, Integer::sum); |
| assertTrue(Arrays.equals(new int[]{1, 2, 5, 9, 5}, array)); |
| } |
| |
| public void testParallelPrefix_long() { |
| long[] array = {1}; |
| Arrays.parallelPrefix(array, Long::sum); |
| assertTrue(Arrays.equals(new long[]{1}, array)); |
| |
| array = new long[]{1, 2, 3}; |
| Arrays.parallelPrefix(array, Long::sum); |
| assertTrue(Arrays.equals(new long[]{1, 3, 6}, array)); |
| |
| array = new long[]{1, 2, 3}; |
| Arrays.parallelPrefix(array, 0, 0, Long::sum); |
| assertTrue(Arrays.equals(new long[]{1, 2, 3}, array)); |
| |
| array = new long[]{1, 2, 3, 4, 5}; |
| Arrays.parallelPrefix(array, 1, 4, Long::sum); |
| assertTrue(Arrays.equals(new long[]{1, 2, 5, 9, 5}, array)); |
| } |
| |
| public void testParallelPrefix_Object() { |
| String[] array = {"a"}; |
| Arrays.parallelPrefix(array, String::concat); |
| assertEquals(new String[]{"a"}, array); |
| |
| array = new String[]{"a", "b", "c"}; |
| Arrays.parallelPrefix(array, String::concat); |
| assertEquals(new String[]{"a", "ab", "abc"}, array); |
| |
| array = new String[]{"a", "b", "c"}; |
| Arrays.parallelPrefix(array, 0, 0, String::concat); |
| assertEquals(new String[]{"a", "b", "c"}, array); |
| |
| array = new String[]{"a", "b", "c", "d", "e"}; |
| Arrays.parallelPrefix(array, 1, 4, String::concat); |
| assertEquals(new String[]{"a", "b", "bc", "bcd", "e"}, array); |
| } |
| |
| public void testSetAll_double() { |
| double[] array = {}; |
| Arrays.setAll(array, i -> (double) i); |
| assertTrue(Arrays.equals(new double[0], array)); |
| |
| array = new double[]{0, 0, 0}; |
| Arrays.setAll(array, i -> (double) i + 1); |
| assertTrue(Arrays.equals(new double[]{1, 2, 3}, array)); |
| } |
| |
| public void testSetAll_int() { |
| int[] array = {}; |
| Arrays.setAll(array, i -> i); |
| assertTrue(Arrays.equals(new int[0], array)); |
| |
| array = new int[]{0, 0, 0}; |
| Arrays.setAll(array, i -> i + 1); |
| assertTrue(Arrays.equals(new int[]{1, 2, 3}, array)); |
| } |
| |
| public void testSetAll_long() { |
| long[] array = {}; |
| Arrays.setAll(array, i -> (long) i); |
| assertTrue(Arrays.equals(new long[0], array)); |
| |
| array = new long[]{0, 0, 0}; |
| Arrays.setAll(array, i -> (long) i + 1); |
| assertTrue(Arrays.equals(new long[]{1, 2, 3}, array)); |
| } |
| |
| public void testSetAll_Object() { |
| String[] array = {}; |
| Arrays.setAll(array, i -> "" + i); |
| assertEquals(new String[0], array); |
| |
| array = new String[]{"a", "b", "c"}; |
| Arrays.setAll(array, i -> "" + (i + 1)); |
| assertEquals(new String[]{"1", "2", "3"}, array); |
| } |
| |
| public void testArrayStreamInt() { |
| int[] six = {1, 2, 3, 4, 5, 6}; |
| |
| // zero entries |
| assertEquals(new int[]{}, Arrays.stream(six, 0, 0).toArray()); |
| assertEquals(new int[]{}, Arrays.stream(six, 1, 1).toArray()); |
| |
| // single entry |
| assertEquals(new int[]{1}, Arrays.stream(six, 0, 1).toArray()); |
| assertEquals(new int[]{2}, Arrays.stream(six, 1, 2).toArray()); |
| |
| // multiple entries |
| assertEquals(new int[]{1, 2, 3}, Arrays.stream(six, 0, 3).toArray()); |
| assertEquals(new int[]{4, 5, 6}, Arrays.stream(six, 3, 6).toArray()); |
| |
| try { |
| // start < 0 |
| Arrays.stream(six, -1, 1); |
| fail("expected aioobe"); |
| } catch (ArrayIndexOutOfBoundsException expected) { |
| // expected |
| } |
| try { |
| // end < start |
| Arrays.stream(six, 2, 1); |
| fail("expected aioobe"); |
| } catch (ArrayIndexOutOfBoundsException expected) { |
| // expected |
| } |
| try { |
| // end > size |
| Arrays.stream(six, 0, 7); |
| fail("expected aioobe"); |
| } catch (ArrayIndexOutOfBoundsException expected) { |
| // expected |
| } |
| } |
| |
| public void testArrayStreamLong() { |
| long[] six = {1, 2, 3, 4, 5, 6}; |
| |
| // zero entries |
| assertEquals(new long[]{}, Arrays.stream(six, 0, 0).toArray()); |
| assertEquals(new long[]{}, Arrays.stream(six, 1, 1).toArray()); |
| |
| // single entry |
| assertEquals(new long[]{1}, Arrays.stream(six, 0, 1).toArray()); |
| assertEquals(new long[]{2}, Arrays.stream(six, 1, 2).toArray()); |
| |
| // multiple entries |
| assertEquals(new long[]{1, 2, 3}, Arrays.stream(six, 0, 3).toArray()); |
| assertEquals(new long[]{4, 5, 6}, Arrays.stream(six, 3, 6).toArray()); |
| |
| try { |
| // start < 0 |
| Arrays.stream(six, -1, 1); |
| fail("expected aioobe"); |
| } catch (ArrayIndexOutOfBoundsException expected) { |
| // expected |
| } |
| try { |
| // end < start |
| Arrays.stream(six, 2, 1); |
| fail("expected aioobe"); |
| } catch (ArrayIndexOutOfBoundsException expected) { |
| // expected |
| } |
| try { |
| // end > size |
| Arrays.stream(six, 0, 7); |
| fail("expected aioobe"); |
| } catch (ArrayIndexOutOfBoundsException expected) { |
| // expected |
| } |
| } |
| |
| public void testArrayStreamDouble() { |
| double[] six = {1, 2, 3, 4, 5, 6}; |
| |
| // zero entries |
| assertEquals(new double[]{}, Arrays.stream(six, 0, 0).toArray()); |
| assertEquals(new double[]{}, Arrays.stream(six, 1, 1).toArray()); |
| |
| // single entry |
| assertEquals(new double[]{1}, Arrays.stream(six, 0, 1).toArray()); |
| assertEquals(new double[]{2}, Arrays.stream(six, 1, 2).toArray()); |
| |
| // multiple entries |
| assertEquals(new double[]{1, 2, 3}, Arrays.stream(six, 0, 3).toArray()); |
| assertEquals(new double[]{4, 5, 6}, Arrays.stream(six, 3, 6).toArray()); |
| |
| try { |
| // start < 0 |
| Arrays.stream(six, -1, 1); |
| fail("expected aioobe"); |
| } catch (ArrayIndexOutOfBoundsException expected) { |
| // expected |
| } |
| try { |
| // end < start |
| Arrays.stream(six, 2, 1); |
| fail("expected aioobe"); |
| } catch (ArrayIndexOutOfBoundsException expected) { |
| // expected |
| } |
| try { |
| // end > size |
| Arrays.stream(six, 0, 7); |
| fail("expected aioobe"); |
| } catch (ArrayIndexOutOfBoundsException expected) { |
| // expected |
| } |
| } |
| |
| public void testArrayStreamObject() { |
| String[] six = {"1", "2", "3", "4", "5", "6"}; |
| |
| // zero entries |
| assertEquals(new String[]{}, Arrays.stream(six, 0, 0).toArray()); |
| assertEquals(new String[]{}, Arrays.stream(six, 1, 1).toArray()); |
| |
| // single entry |
| assertEquals(new String[]{"1"}, Arrays.stream(six, 0, 1).toArray()); |
| assertEquals(new String[]{"2"}, Arrays.stream(six, 1, 2).toArray()); |
| |
| // multiple entries |
| assertEquals(new String[]{"1", "2", "3"}, Arrays.stream(six, 0, 3).toArray()); |
| assertEquals(new String[]{"4", "5", "6"}, Arrays.stream(six, 3, 6).toArray()); |
| |
| try { |
| // start < 0 |
| Arrays.stream(six, -1, 1); |
| fail("expected aioobe"); |
| } catch (ArrayIndexOutOfBoundsException expected) { |
| // expected |
| } |
| try { |
| // end < start |
| Arrays.stream(six, 2, 1); |
| fail("expected aioobe"); |
| } catch (ArrayIndexOutOfBoundsException expected) { |
| // expected |
| } |
| try { |
| // end > size |
| Arrays.stream(six, 0, 7); |
| fail("expected aioobe"); |
| } catch (ArrayIndexOutOfBoundsException expected) { |
| // expected |
| } |
| } |
| } |