MATH-1651: Modified unit test.
The old test was flaky because it assumed a fixed iteration order. [Thanks to Anant Dahiya for pointing it out.] The new test indirectly checks how neuron's identifiers are assigned. Closes #213.
This commit is contained in:
parent
24e4acc7de
commit
50977290cd
|
@ -18,6 +18,7 @@
|
||||||
package org.apache.commons.math4.neuralnet;
|
package org.apache.commons.math4.neuralnet;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.NoSuchElementException;
|
import java.util.NoSuchElementException;
|
||||||
|
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
|
@ -108,25 +109,16 @@ public class NetworkTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testIterationOrder() {
|
public void testIdentifierAssignment() {
|
||||||
final FeatureInitializer[] initArray = {init};
|
final FeatureInitializer[] initArray = {init};
|
||||||
final Network net = new NeuronSquareMesh2D(4, false,
|
final long[] ids = getIdentifiers(new NeuronSquareMesh2D(4, false,
|
||||||
3, true,
|
3, true,
|
||||||
SquareNeighbourhood.VON_NEUMANN,
|
SquareNeighbourhood.VON_NEUMANN,
|
||||||
initArray).getNetwork();
|
initArray).getNetwork());
|
||||||
|
|
||||||
// Check that the comparator provides a specific order.
|
Assert.assertEquals(12, ids.length);
|
||||||
boolean isUnspecifiedOrder = false;
|
Assert.assertEquals(0, ids[0]);
|
||||||
long previousId = Long.MIN_VALUE;
|
Assert.assertEquals(11, ids[ids.length - 1]);
|
||||||
for (Neuron n : net.getNeurons()) {
|
|
||||||
final long currentId = n.getIdentifier();
|
|
||||||
if (currentId < previousId) {
|
|
||||||
isUnspecifiedOrder = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
previousId = currentId;
|
|
||||||
}
|
|
||||||
Assert.assertFalse(isUnspecifiedOrder);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -169,4 +161,20 @@ public class NetworkTest {
|
||||||
Assert.assertFalse(netNeighbours.contains(netNeuron1));
|
Assert.assertFalse(netNeighbours.contains(netNeuron1));
|
||||||
Assert.assertTrue(copyNeighbours.contains(copyNeuron1));
|
Assert.assertTrue(copyNeighbours.contains(copyNeuron1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param net Network.
|
||||||
|
* @return the sorted list identifiers.
|
||||||
|
*/
|
||||||
|
private long[] getIdentifiers(Network net) {
|
||||||
|
final Collection<Neuron> neurons = net.getNeurons();
|
||||||
|
final long[] identifiers = new long[neurons.size()];
|
||||||
|
|
||||||
|
int idx = 0;
|
||||||
|
for (Neuron n : neurons) {
|
||||||
|
identifiers[idx++] = n.getIdentifier();
|
||||||
|
}
|
||||||
|
Arrays.sort(identifiers);
|
||||||
|
return identifiers;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue