blob: 5396d401cf74b68de18b99d0fdbe4cd01df5eec6 [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 static java.util.Arrays.asList;
import com.google.gwt.emultest.java.util.EmulTestBase;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.function.Predicate;
import java.util.function.UnaryOperator;
/**
* Tests for java.util.List implementing classes Java 8 API emulation.
*/
abstract class AbstractJava8ListTest extends EmulTestBase {
public void testForeach() {
List<String> list = createEmptyList();
try {
list.forEach(null);
fail();
} catch (NullPointerException expected) {
}
list.forEach(e -> fail());
list = createEmptyList();
list.addAll(asList("a", "b", "c"));
ArrayList<String> visited = new ArrayList<>();
list.forEach(visited::add);
assertEquals(asList("a", "b", "c"), visited);
}
public void testRemoveIf() {
List<String> list = createEmptyList();
try {
list.removeIf(null);
fail();
} catch (NullPointerException expected) {
}
list = createEmptyList();
list.addAll(asList("a", "b", "c"));
assertFalse(list.removeIf(e -> false));
assertEquals(asList("a", "b", "c"), list);
assertFalse(list.removeIf(Predicate.isEqual("")));
assertEquals(asList("a", "b", "c"), list);
assertTrue(list.removeIf(Predicate.isEqual("b")));
assertEquals(asList("a", "c"), list);
list.add("d");
assertTrue(list.removeIf(e -> e.equals("a") || e.equals("c")));
assertEquals(asList("d"), list);
assertTrue(list.removeIf(Predicate.isEqual("d")));
assertFalse(list.removeIf(Predicate.isEqual("d")));
assertTrue(list.isEmpty());
Collections.addAll(list, "a", "b");
assertFalse(list.removeIf(Objects::isNull));
assertEquals(asList("a", "b"), list);
}
public void testReplaceAll() {
List<String> list = createEmptyList();
try {
list.replaceAll(null);
fail();
} catch (NullPointerException expected) {
}
list.replaceAll(UnaryOperator.identity());
assertTrue(list.isEmpty());
Collections.addAll(list, "a", "b");
list.replaceAll(UnaryOperator.identity());
assertEquals(asList("a", "b"), list);
list.replaceAll(e -> e + "0");
assertEquals(asList("a0", "b0"), list);
list.add("c");
list.replaceAll(e -> e + "1");
assertEquals(asList("a01", "b01", "c1"), list);
}
public void testSort() {
List<String> list = createEmptyList();
list.sort(null);
Collections.addAll(list, "b", "a", "c");
list.sort(null);
assertEquals(asList("a", "b", "c"), list);
list = createEmptyList();
Collections.addAll(list, "b", "a", "c");
list.sort(Collections.reverseOrder());
assertEquals(asList("c", "b", "a"), list);
}
protected abstract List<String> createEmptyList();
}