mirror of
https://github.com/konsoletyper/teavm.git
synced 2024-11-27 01:30:35 +08:00
classlib: fix implementations of SequencedCollection methods in ArrayList
This commit is contained in:
parent
55426b25cf
commit
e383b94e1b
@ -16,6 +16,7 @@
|
||||
package org.teavm.classlib.java.util;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.NoSuchElementException;
|
||||
import java.util.Objects;
|
||||
import java.util.function.Consumer;
|
||||
import org.teavm.classlib.java.io.TSerializable;
|
||||
@ -66,12 +67,14 @@ public class TArrayList<E> extends TAbstractList<E> implements TCloneable, TSeri
|
||||
|
||||
@Override
|
||||
public E getFirst() {
|
||||
return get(0);
|
||||
checkIfNotEmpty();
|
||||
return array[0];
|
||||
}
|
||||
|
||||
@Override
|
||||
public E getLast() {
|
||||
return get(size - 1);
|
||||
checkIfNotEmpty();
|
||||
return array[size - 1];
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -124,14 +127,22 @@ public class TArrayList<E> extends TAbstractList<E> implements TCloneable, TSeri
|
||||
|
||||
@Override
|
||||
public E removeFirst() {
|
||||
checkIfNotEmpty();
|
||||
return remove(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public E removeLast() {
|
||||
checkIfNotEmpty();
|
||||
return remove(size - 1);
|
||||
}
|
||||
|
||||
private void checkIfNotEmpty() {
|
||||
if (isEmpty()) {
|
||||
throw new NoSuchElementException();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public E remove(int index) {
|
||||
checkIndex(index);
|
||||
|
@ -29,6 +29,7 @@ import java.util.Iterator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.ListIterator;
|
||||
import java.util.NoSuchElementException;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.teavm.junit.TeaVMTestRunner;
|
||||
@ -290,4 +291,35 @@ public class ArrayListTest {
|
||||
lit.add("x");
|
||||
assertEquals(List.of("d", "x", "a"), list);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void sequenceCollectionMethodsOnEmpty() {
|
||||
var empty = new ArrayList<>();
|
||||
|
||||
try {
|
||||
empty.getFirst();
|
||||
fail();
|
||||
} catch (NoSuchElementException e) {
|
||||
// ok
|
||||
}
|
||||
try {
|
||||
empty.getLast();
|
||||
fail();
|
||||
} catch (NoSuchElementException e) {
|
||||
// ok
|
||||
}
|
||||
|
||||
try {
|
||||
empty.removeFirst();
|
||||
fail();
|
||||
} catch (NoSuchElementException e) {
|
||||
// ok
|
||||
}
|
||||
try {
|
||||
empty.removeLast();
|
||||
fail();
|
||||
} catch (NoSuchElementException e) {
|
||||
// ok
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user