/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.geotoolkit.index.quadtree.fs;
import org.geotoolkit.index.quadtree.AbstractNode;
import com.vividsolutions.jts.geom.Envelope;
import java.io.IOException;
import org.geotoolkit.index.quadtree.DataReader;
import org.geotoolkit.index.Data;
import org.geotoolkit.index.DataDefinition;
import java.io.File;
import java.util.Iterator;
import org.geotoolkit.index.CloseableCollection;
import org.geotoolkit.index.DefaultData;
import org.geotoolkit.index.quadtree.QuadTree;
import org.junit.Test;
import static org.junit.Assert.*;
/**
*
* @author jsorel
*/
public class FileSystemNodeTest extends org.geotoolkit.test.TestBase {
public static final DataDefinition DATA_DEFINITION = new DataDefinition("US-ASCII", Integer.class, Long.class);
public FileSystemNodeTest() {
}
/**
* Just test it doesn't raise an error.
* TODO : move tests from shapefile.
*/
@Test
public void testNoerror() throws Exception {
final File file = new File("src/test/resources/org/geotoolkit/index/sample.qix");
final FileSystemIndexStore store = new FileSystemIndexStore(file);
final DataReader reader = new DataReader() {
@Override
public Data read(final int id) throws IOException {
return new DefaultData(DATA_DEFINITION){
@Override
public String toString() {
return Integer.toString(id);
}
};
}
@Override
public void close() throws IOException {
}
@Override
public void read(int[] ids, Data[] buffer, int size) throws IOException {
for(int i=0;i<size;i++){
buffer[i] = read(ids[i]);
}
}
};
final QuadTree tree = store.load();
assertEquals(10,tree.getMaxDepth());
assertEquals(new Envelope(-8.86966023318779,3.188061808903407,36.113981340792286,43.55971524165336),
tree.getRoot().getBounds(new Envelope()));
assertEquals(3602,tree.getNumShapes());
final AbstractNode root = tree.getRoot();
for(int i=0;i<4;i++){
root.getSubNode(i);
}
CloseableCollection col = tree.search(reader,new Envelope(-8,3,37,40));
Iterator ite = col.iterator();
while(ite.hasNext()){
ite.next();
}
}
}