use of jcog.tree.rtree.util.Stats in project narchy by automenta.
the class SplitTest method randomEntryTest.
/**
* Adds many random entries to trees of different types and confirms that
* no entries are lost during insert/split.
*/
@Test
public void randomEntryTest() {
int entryCount = 25000;
final RectDouble2D[] rects = RTree2DTest.generateRandomRects(entryCount);
for (Spatialization.DefaultSplits s : Spatialization.DefaultSplits.values()) {
for (int min : new int[] { 2, 3, 4 }) {
for (int max : new int[] { min + 1, 8 }) {
final RTree<RectDouble2D> rTree = RTree2DTest.createRect2DTree(s, min, max);
int i = 0;
for (RectDouble2D r : rects) {
boolean added = rTree.add(r);
if (!added) {
// for debugging: try again and see what happened
rTree.add(r);
fail("");
}
assertTrue(added);
assertEquals(++i, rTree.size());
// assertEquals(i, rTree.stats().getEntryCount());
boolean tryAddingAgainToTestForNonMutation = rTree.add(r);
if (tryAddingAgainToTestForNonMutation) {
// for debugging: try again and see what happened
rTree.add(r);
fail("");
}
// reinsertion of existing element will not affect size and will return false here
assertFalse(tryAddingAgainToTestForNonMutation, i + "==?" + rTree.size());
// reinsertion should cause no change in size
assertEquals(i, rTree.size());
// assertEquals(i, rTree.stats().getEntryCount());
}
assertEquals(entryCount, rTree.size());
final Stats stats = rTree.stats();
assertEquals(entryCount, stats.getEntryCount());
stats.print(System.out);
}
}
}
}
use of jcog.tree.rtree.util.Stats in project narchy by automenta.
the class AxialSplitLeafTest method randomEntryTest.
/**
* Adds many random entries and confirm that no entries
* are lost during insert/split.
*/
@Test
public void randomEntryTest() {
final int entryCount = 50000;
final RectDouble2D[] rects = RTree2DTest.generateRandomRects(entryCount);
final RTree<RectDouble2D> rTree = RTree2DTest.createRect2DTree(TYPE);
for (int i = 0; i < rects.length; i++) {
rTree.add(rects[i]);
}
final Stats stats = rTree.stats();
assertTrue(Math.abs(entryCount - stats.getEntryCount()) < 20, "Unexpected number of entries in " + TYPE + " split tree: " + stats.getEntryCount() + " entries - expected: " + entryCount + " actual: " + stats.getEntryCount());
stats.print(System.out);
}
use of jcog.tree.rtree.util.Stats in project narchy by automenta.
the class LinearSplitLeafTest method basicSplitTest.
/**
* Adds enough entries to force a single split and confirms that
* no entries are lost.
*/
@Test
public void basicSplitTest() {
RTree<RectDouble2D> rTree = RTree2DTest.createRect2DTree(TYPE);
rTree.add(new RectDouble2D(0, 0, 1, 1));
rTree.add(new RectDouble2D(1, 1, 2, 2));
rTree.add(new RectDouble2D(2, 2, 3, 3));
rTree.add(new RectDouble2D(3, 3, 4, 4));
rTree.add(new RectDouble2D(4, 4, 5, 5));
rTree.add(new RectDouble2D(5, 5, 6, 6));
rTree.add(new RectDouble2D(6, 6, 7, 7));
rTree.add(new RectDouble2D(7, 7, 8, 8));
// 9 entries guarantees a split
rTree.add(new RectDouble2D(8, 8, 9, 9));
Stats stats = rTree.stats();
assertTrue(stats.getMaxDepth() == 1, "Unexpected max depth after basic split");
assertTrue(stats.getBranchCount() == 1, "Unexpected number of branches after basic split");
assertTrue(stats.getLeafCount() == 2, "Unexpected number of leaves after basic split");
assertTrue(stats.getEntriesPerLeaf() == 4.5, "Unexpected number of entries per leaf after basic split");
}
use of jcog.tree.rtree.util.Stats in project narchy by automenta.
the class LinearSplitLeafTest method causeLinearSplitNiceDist.
@Test
public void causeLinearSplitNiceDist() {
final RTree<RectDouble2D> rTree = RTree2DTest.createRect2DTree(2, 8, TYPE);
final Random rand = new Random(13);
for (int i = 0; i < 500; i++) {
final int x1 = rand.nextInt(250);
final int y1 = rand.nextInt(250);
final int x2 = x1 + rand.nextInt(10);
final int y2 = y1 + rand.nextInt(10);
rTree.add(new RectDouble2D(x1, y1, x2, y2));
}
final Stats stats = rTree.stats();
stats.print(System.out);
}
use of jcog.tree.rtree.util.Stats in project narchy by automenta.
the class QuadraticSplitLeafTest method randomEntryTest.
/**
* Adds many random entries to trees of different types and confirms that
* no entries are lost during insertion (and split).
*/
@Test
public void randomEntryTest() {
final int entryCount = 50000;
final RectDouble2D[] rects = RTree2DTest.generateRandomRects(entryCount);
final RTree<RectDouble2D> rTree = RTree2DTest.createRect2DTree(TYPE);
for (int i = 0; i < rects.length; i++) {
rTree.add(rects[i]);
}
final Stats stats = rTree.stats();
assertTrue(Math.abs(entryCount - stats.getEntryCount()) < 20, "Unexpected number of entries in " + TYPE + " split tree: " + stats.getEntryCount() + " entries - expected: " + entryCount + " actual: " + stats.getEntryCount());
stats.print(System.out);
}
Aggregations