@Test
public void randomTests() {
KdTreeSearchN<double[]> alg = createAlg();
KdTree tree = StandardKdTreeSearch1Tests.createTreeA();
alg.setTree(tree);
List<double[]> data = new ArrayList<double[]>();
flattenTree(tree.root,data);
for( int i = 0; i < 100; i++ ) {
int searchN = rand.nextInt(data.size()+5)+1;
double[] target = data.get( rand.nextInt(data.size()));
double maxDistance = rand.nextDouble()*10;
List<double[]> expected = findNeighbors(data,target,maxDistance,searchN);
found.reset();
alg.setMaxDistance(maxDistance);
alg.findNeighbor(target, searchN, found);
assertEquals(expected.size(),found.size);
for( int j = 0; j < expected.size(); j++ ) {
checkContains(expected.get(j));
}
}
}