Remove access to underlying containers inside Graph and Node.
This commit is contained in:
@@ -11,29 +11,68 @@ import org.junit.Test;
|
||||
|
||||
public class BinaryHeapTest {
|
||||
|
||||
private int[] data1 = IntStream.range(0, 20).toArray();
|
||||
private int[] data2 = { 8, 1, 6, 3, 4, 5, 9 };
|
||||
class MutableInteger implements Comparable<MutableInteger> {
|
||||
|
||||
private BinaryHeap<Integer> heap1, heap2;
|
||||
// Actual value
|
||||
private int value;
|
||||
|
||||
public MutableInteger(int value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return The integer value stored inside this MutableInteger.
|
||||
*/
|
||||
public int get() {
|
||||
return this.value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the integer value stored inside this MutableInteger.
|
||||
*
|
||||
* @param value New value to set.
|
||||
*/
|
||||
public void set(int value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(MutableInteger other) {
|
||||
return Integer.compare(this.value, other.value);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
// Raw data arrays.
|
||||
private MutableInteger[] data1 = IntStream.range(0, 20).mapToObj(MutableInteger::new)
|
||||
.toArray(MutableInteger[]::new);
|
||||
private MutableInteger[] data2 = Arrays.stream(new int[] { 8, 1, 6, 3, 4, 5, 9 })
|
||||
.mapToObj(MutableInteger::new).toArray(MutableInteger[]::new);
|
||||
|
||||
// Actual heap.
|
||||
private BinaryHeap<MutableInteger> heap1, heap2;
|
||||
|
||||
@Before
|
||||
public void init() {
|
||||
// Create the range heap
|
||||
this.heap1 = new BinaryHeap<Integer>();
|
||||
this.heap2 = new BinaryHeap<Integer>();
|
||||
this.heap1 = new BinaryHeap<>();
|
||||
this.heap2 = new BinaryHeap<>();
|
||||
|
||||
for (int v: data1)
|
||||
this.heap1.insert(v);
|
||||
for (int v: data2)
|
||||
this.heap2.insert(v);
|
||||
for (MutableInteger v: data1) {
|
||||
this.heap1.add(v);
|
||||
}
|
||||
|
||||
for (MutableInteger v: data2) {
|
||||
this.heap2.add(v);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInsert() {
|
||||
BinaryHeap<Integer> heap = new BinaryHeap<Integer>();
|
||||
BinaryHeap<MutableInteger> heap = new BinaryHeap<>();
|
||||
int size = 0;
|
||||
for (int x: data1) {
|
||||
heap.insert(x);
|
||||
for (MutableInteger x: data1) {
|
||||
heap.add(x);
|
||||
size += 1;
|
||||
assertEquals(heap.size(), size);
|
||||
}
|
||||
@@ -41,8 +80,8 @@ public class BinaryHeapTest {
|
||||
|
||||
heap = new BinaryHeap<>();
|
||||
size = 0;
|
||||
for (int x: data2) {
|
||||
heap.insert(x);
|
||||
for (MutableInteger x: data2) {
|
||||
heap.add(x);
|
||||
size += 1;
|
||||
assertEquals(heap.size(), size);
|
||||
}
|
||||
@@ -52,11 +91,10 @@ public class BinaryHeapTest {
|
||||
@Test
|
||||
public void testDeleteMin() {
|
||||
// range 1 (sorted)
|
||||
int[] range1 = data1;
|
||||
int size = range1.length;
|
||||
int size = data1.length;
|
||||
assertEquals(heap1.size(), size);
|
||||
for (int x: range1) {
|
||||
assertEquals(heap1.deleteMin().intValue(), x);
|
||||
for (MutableInteger x: data1) {
|
||||
assertEquals(heap1.deleteMin(), x);
|
||||
size -= 1;
|
||||
assertEquals(heap1.size(), size);
|
||||
}
|
||||
@@ -64,12 +102,12 @@ public class BinaryHeapTest {
|
||||
assertTrue(heap1.isEmpty());
|
||||
|
||||
// range 2 (was not sorted)
|
||||
int[] range2 = Arrays.copyOf(data2, data2.length);
|
||||
MutableInteger[] range2 = Arrays.copyOf(data2, data2.length);
|
||||
Arrays.sort(range2);
|
||||
size = range2.length;
|
||||
assertEquals(heap2.size(), size);
|
||||
for (int x: range2) {
|
||||
assertEquals(heap2.deleteMin().intValue(), x);
|
||||
for (MutableInteger x: range2) {
|
||||
assertEquals(heap2.deleteMin().get(), x.get());
|
||||
size -= 1;
|
||||
assertEquals(heap2.size(), size);
|
||||
}
|
||||
@@ -77,4 +115,12 @@ public class BinaryHeapTest {
|
||||
assertTrue(heap2.isEmpty());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUpdate() {
|
||||
MutableInteger newMin = data2[data2.length - 1];
|
||||
newMin.set(0);
|
||||
heap2.update(newMin);
|
||||
assertEquals(heap2.findMin(), newMin);
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -62,7 +62,7 @@ public class GraphTest {
|
||||
*/
|
||||
private List<Arc> getArcsBetween(Node a, Node b) {
|
||||
List<Arc> arcs = new ArrayList<>();
|
||||
for (Arc arc: a.getSuccessors()) {
|
||||
for (Arc arc: a) {
|
||||
if (arc.getDestination().equals(b)) {
|
||||
arcs.add(arc);
|
||||
}
|
||||
@@ -76,53 +76,33 @@ public class GraphTest {
|
||||
|
||||
// Basic asserts...
|
||||
assertEquals("R/" + graph.getMapId(), transpose.getMapId());
|
||||
assertEquals(graph.getNodes().size(), transpose.getNodes().size());
|
||||
assertEquals(graph.size(), transpose.size());
|
||||
|
||||
final int expNbSucc[] = { 4, 2, 2, 4, 2 };
|
||||
for (int i = 0; i < expNbSucc.length; ++i) {
|
||||
assertEquals(expNbSucc[i], transpose.getNodes().get(i).getSuccessors().size());
|
||||
assertEquals(expNbSucc[i], transpose.get(i).getNumberOfSuccessors());
|
||||
}
|
||||
|
||||
assertEquals(
|
||||
getArcsBetween(transpose.getNodes().get(0), transpose.getNodes().get(1)).size(), 1);
|
||||
assertEquals(
|
||||
getArcsBetween(transpose.getNodes().get(0), transpose.getNodes().get(2)).size(), 1);
|
||||
assertEquals(
|
||||
getArcsBetween(transpose.getNodes().get(0), transpose.getNodes().get(3)).size(), 1);
|
||||
assertEquals(
|
||||
getArcsBetween(transpose.getNodes().get(0), transpose.getNodes().get(4)).size(), 1);
|
||||
assertEquals(
|
||||
getArcsBetween(transpose.getNodes().get(1), transpose.getNodes().get(0)).size(), 1);
|
||||
assertEquals(
|
||||
getArcsBetween(transpose.getNodes().get(1), transpose.getNodes().get(2)).size(), 1);
|
||||
assertEquals(
|
||||
getArcsBetween(transpose.getNodes().get(1), transpose.getNodes().get(3)).size(), 0);
|
||||
assertEquals(
|
||||
getArcsBetween(transpose.getNodes().get(1), transpose.getNodes().get(4)).size(), 0);
|
||||
assertEquals(
|
||||
getArcsBetween(transpose.getNodes().get(2), transpose.getNodes().get(0)).size(), 1);
|
||||
assertEquals(
|
||||
getArcsBetween(transpose.getNodes().get(2), transpose.getNodes().get(1)).size(), 1);
|
||||
assertEquals(
|
||||
getArcsBetween(transpose.getNodes().get(2), transpose.getNodes().get(3)).size(), 0);
|
||||
assertEquals(
|
||||
getArcsBetween(transpose.getNodes().get(2), transpose.getNodes().get(4)).size(), 0);
|
||||
assertEquals(
|
||||
getArcsBetween(transpose.getNodes().get(3), transpose.getNodes().get(0)).size(), 1);
|
||||
assertEquals(
|
||||
getArcsBetween(transpose.getNodes().get(3), transpose.getNodes().get(1)).size(), 0);
|
||||
assertEquals(
|
||||
getArcsBetween(transpose.getNodes().get(3), transpose.getNodes().get(2)).size(), 3);
|
||||
assertEquals(
|
||||
getArcsBetween(transpose.getNodes().get(3), transpose.getNodes().get(4)).size(), 0);
|
||||
assertEquals(
|
||||
getArcsBetween(transpose.getNodes().get(4), transpose.getNodes().get(0)).size(), 1);
|
||||
assertEquals(
|
||||
getArcsBetween(transpose.getNodes().get(4), transpose.getNodes().get(1)).size(), 0);
|
||||
assertEquals(
|
||||
getArcsBetween(transpose.getNodes().get(4), transpose.getNodes().get(2)).size(), 0);
|
||||
assertEquals(
|
||||
getArcsBetween(transpose.getNodes().get(4), transpose.getNodes().get(3)).size(), 1);
|
||||
assertEquals(getArcsBetween(transpose.get(0), transpose.get(1)).size(), 1);
|
||||
assertEquals(getArcsBetween(transpose.get(0), transpose.get(2)).size(), 1);
|
||||
assertEquals(getArcsBetween(transpose.get(0), transpose.get(3)).size(), 1);
|
||||
assertEquals(getArcsBetween(transpose.get(0), transpose.get(4)).size(), 1);
|
||||
assertEquals(getArcsBetween(transpose.get(1), transpose.get(0)).size(), 1);
|
||||
assertEquals(getArcsBetween(transpose.get(1), transpose.get(2)).size(), 1);
|
||||
assertEquals(getArcsBetween(transpose.get(1), transpose.get(3)).size(), 0);
|
||||
assertEquals(getArcsBetween(transpose.get(1), transpose.get(4)).size(), 0);
|
||||
assertEquals(getArcsBetween(transpose.get(2), transpose.get(0)).size(), 1);
|
||||
assertEquals(getArcsBetween(transpose.get(2), transpose.get(1)).size(), 1);
|
||||
assertEquals(getArcsBetween(transpose.get(2), transpose.get(3)).size(), 0);
|
||||
assertEquals(getArcsBetween(transpose.get(2), transpose.get(4)).size(), 0);
|
||||
assertEquals(getArcsBetween(transpose.get(3), transpose.get(0)).size(), 1);
|
||||
assertEquals(getArcsBetween(transpose.get(3), transpose.get(1)).size(), 0);
|
||||
assertEquals(getArcsBetween(transpose.get(3), transpose.get(2)).size(), 3);
|
||||
assertEquals(getArcsBetween(transpose.get(3), transpose.get(4)).size(), 0);
|
||||
assertEquals(getArcsBetween(transpose.get(4), transpose.get(0)).size(), 1);
|
||||
assertEquals(getArcsBetween(transpose.get(4), transpose.get(1)).size(), 0);
|
||||
assertEquals(getArcsBetween(transpose.get(4), transpose.get(2)).size(), 0);
|
||||
assertEquals(getArcsBetween(transpose.get(4), transpose.get(3)).size(), 1);
|
||||
|
||||
}
|
||||
}
|
||||
|
@@ -18,7 +18,7 @@ public class NodeTest {
|
||||
public void initAll() throws IOException {
|
||||
|
||||
// Create nodes
|
||||
nodes = new Node[5];
|
||||
nodes = new Node[6];
|
||||
for (int i = 0; i < nodes.length; ++i) {
|
||||
nodes[i] = new Node(i, null);
|
||||
}
|
||||
@@ -54,7 +54,7 @@ public class NodeTest {
|
||||
* @return The first arc between from a to b, or null.
|
||||
*/
|
||||
private Arc getFirstArcBetween(Node a, Node b) {
|
||||
for (Arc arc: a.getSuccessors()) {
|
||||
for (Arc arc: a) {
|
||||
if (arc.getDestination().equals(b)) {
|
||||
return arc;
|
||||
}
|
||||
@@ -63,13 +63,25 @@ public class NodeTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLinkNodes() {
|
||||
final int[] expNbSucc = { 4, 2, 5, 2, 1 };
|
||||
public void testGetNumberOfSuccessors() {
|
||||
final int[] expNbSucc = { 4, 2, 5, 2, 1, 0 };
|
||||
assertEquals(nodes.length, expNbSucc.length);
|
||||
for (int i = 0; i < expNbSucc.length; ++i) {
|
||||
assertEquals(nodes[i].getSuccessors().size(), expNbSucc[i]);
|
||||
assertEquals(nodes[i].getNumberOfSuccessors(), expNbSucc[i]);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHasSuccessors() {
|
||||
final int[] expNbSucc = { 4, 2, 5, 2, 1, 0 };
|
||||
assertEquals(nodes.length, expNbSucc.length);
|
||||
for (int i = 0; i < expNbSucc.length; ++i) {
|
||||
assertEquals(nodes[i].hasSuccessors(), expNbSucc[i] != 0);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLinkNodes() {
|
||||
assertEquals(getFirstArcBetween(nodes[0], nodes[1]).getRoadInformation(),
|
||||
getFirstArcBetween(nodes[1], nodes[0]).getRoadInformation());
|
||||
}
|
||||
|
Reference in New Issue
Block a user