Update tests for PriorityQueue.
This commit is contained in:
parent
4e541e67cf
commit
cf672f8cd4
@ -2,6 +2,7 @@ package org.insa.algo.utils;
|
|||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
|
import static org.junit.Assert.fail;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@ -69,6 +70,11 @@ public abstract class PriorityQueueTest {
|
|||||||
return Integer.compare(this.value, other.value);
|
return Integer.compare(this.value, other.value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return Integer.toString(get());
|
||||||
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
protected static class TestParameters<E extends Comparable<E>> {
|
protected static class TestParameters<E extends Comparable<E>> {
|
||||||
@ -108,6 +114,11 @@ public abstract class PriorityQueueTest {
|
|||||||
Arrays.stream(new int[]{ 1, 7, 4, 8, 9, 6, 5 })
|
Arrays.stream(new int[]{ 1, 7, 4, 8, 9, 6, 5 })
|
||||||
.mapToObj(MutableInteger::new).toArray(MutableInteger[]::new),
|
.mapToObj(MutableInteger::new).toArray(MutableInteger[]::new),
|
||||||
new int[]{ 2, 0, 1, 3, 4, 5, 6 }));
|
new int[]{ 2, 0, 1, 3, 4, 5, 6 }));
|
||||||
|
|
||||||
|
objects.add(new TestParameters<>(
|
||||||
|
Arrays.stream(new int[]{ 1, 7, 2, 8, 9, 3, 4, 10, 11, 12, 13, 5, 6 })
|
||||||
|
.mapToObj(MutableInteger::new).toArray(MutableInteger[]::new),
|
||||||
|
new int[]{ 3, 4, 0, 2, 5, 6, 1, 7, 8, 9, 10, 11, 12 }));
|
||||||
return objects;
|
return objects;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -194,26 +205,57 @@ public abstract class PriorityQueueTest {
|
|||||||
queue.remove(new MutableInteger(0));
|
queue.remove(new MutableInteger(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = ElementNotFoundException.class)
|
@Test
|
||||||
public void testRemoveNotFound() {
|
public void testRemoveNotFound() {
|
||||||
Assume.assumeFalse(queue.isEmpty());
|
Assume.assumeFalse(queue.isEmpty());
|
||||||
List<MutableInteger> data = Arrays.asList(parameters.data);
|
List<MutableInteger> data = Arrays.asList(parameters.data);
|
||||||
queue.remove(new MutableInteger(Collections.min(data).get() - 1));
|
MutableInteger min = new MutableInteger(Collections.min(data).get() - 1),
|
||||||
queue.remove(new MutableInteger(Collections.max(data).get() + 1));
|
max = new MutableInteger(Collections.max(data).get() + 1);
|
||||||
|
try {
|
||||||
|
queue.remove(min);
|
||||||
|
fail("Expected exception " + ElementNotFoundException.class.getName());
|
||||||
|
}
|
||||||
|
catch (ElementNotFoundException e) {
|
||||||
|
assertEquals(e.getElement(), min);
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
queue.remove(max);
|
||||||
|
fail("Expected exception " + ElementNotFoundException.class.getName());
|
||||||
|
}
|
||||||
|
catch (ElementNotFoundException e) {
|
||||||
|
assertEquals(e.getElement(), max);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = ElementNotFoundException.class)
|
@Test
|
||||||
public void testDeleteThenRemove() {
|
public void testDeleteThenRemove() {
|
||||||
Assume.assumeFalse(queue.isEmpty());
|
Assume.assumeFalse(queue.isEmpty());
|
||||||
|
while (!queue.isEmpty()) {
|
||||||
MutableInteger min = queue.deleteMin();
|
MutableInteger min = queue.deleteMin();
|
||||||
|
try {
|
||||||
queue.remove(min);
|
queue.remove(min);
|
||||||
|
fail("Expected exception " + ElementNotFoundException.class.getName());
|
||||||
|
}
|
||||||
|
catch (ElementNotFoundException e) {
|
||||||
|
assertEquals(e.getElement(), min);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = ElementNotFoundException.class)
|
@Test
|
||||||
public void testRemoveTwice() {
|
public void testRemoveTwice() {
|
||||||
Assume.assumeFalse(queue.isEmpty());
|
Assume.assumeFalse(queue.isEmpty());
|
||||||
queue.remove(parameters.data[4 % parameters.data.length]);
|
for (MutableInteger data: parameters.data) {
|
||||||
queue.remove(parameters.data[4 % parameters.data.length]);
|
PriorityQueue<MutableInteger> copyQueue = this.createQueue(this.queue);
|
||||||
|
copyQueue.remove(data);
|
||||||
|
try {
|
||||||
|
copyQueue.remove(data);
|
||||||
|
fail("Expected exception " + ElementNotFoundException.class.getName());
|
||||||
|
}
|
||||||
|
catch (ElementNotFoundException e) {
|
||||||
|
assertEquals(e.getElement(), data);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -233,6 +275,7 @@ public abstract class PriorityQueueTest {
|
|||||||
remains_in.add(parameters.data[parameters.deleteOrder[j]]);
|
remains_in.add(parameters.data[parameters.deleteOrder[j]]);
|
||||||
remains_cp.add(copyTree.deleteMin());
|
remains_cp.add(copyTree.deleteMin());
|
||||||
}
|
}
|
||||||
|
|
||||||
Collections.sort(remains_in);
|
Collections.sort(remains_in);
|
||||||
|
|
||||||
// Check that the copy is now empty, and that both list contains all
|
// Check that the copy is now empty, and that both list contains all
|
||||||
|
Loading…
Reference in New Issue
Block a user