blob: ffb42dd0e39b6a7338c95226416f337aeaff52e8 [file] [log] [blame]
/*
* 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
}
}
}