package com.smartlivedata.transformer; import com.smartlivedata.AtlasTest; import com.smartlivedata.osm.data.FastNode; import com.smartlivedata.osm.data.Way; import com.smartlivedata.osm.transformer.AtlasTransformer; import com.smartlivedata.osm.transformer.ContractCriteria; import org.junit.Test; import org.neo4j.graphdb.Transaction; import java.util.List; public class AtlasTransformerTest extends AtlasTest { AtlasTransformer atlasTransformer = new AtlasTransformer(); @Test public void simpleRoadContraction() { List<FastNode> dummyNodesForWay1 = getDummyNodesForWay(20); Way way1 = getDummyWay(dummyNodesForWay1); fastWriter.start(graphDatabaseService); dummyNodesForWay1.stream().forEach(fastNode -> fastWriter.addNode(fastNode)); fastWriter.addWay(way1); fastWriter.finish(); // this is a bug, i should count way start node as an inserted node assertFastNodeCountInDatabase(20,21); Transaction tx = graphDatabaseService.beginTx(); ContractCriteria contractCriteria = new ContractCriteria(); atlasTransformer.applyContraction(this.graphDatabaseService, contractCriteria); tx.success(); tx.close(); assertFastNodeCountInDatabase(20,4); } @Test public void contractRoadTest() { List<FastNode> dummyNodesForWay1 = getDummyNodesForWay(20); List<FastNode> dummyNodesForWay2 = getDummyNodesForWay(19); FastNode middleNode = dummyNodesForWay1.get(10); dummyNodesForWay2.add(10,middleNode); Way way1 = getDummyWay(dummyNodesForWay1); Way way2 = getDummyWay(dummyNodesForWay2); fastWriter.start(graphDatabaseService); dummyNodesForWay1.stream().forEach(fastNode -> fastWriter.addNode(fastNode)); dummyNodesForWay2.stream().forEach(fastNode -> fastWriter.addNode(fastNode)); fastWriter.addWay(way1); fastWriter.addWay(way2); // because there are two WAY_START nodes assertFastNodeCountInDatabase(39,41); System.out.println(dummyNodesForWay1.toString()); System.out.println(dummyNodesForWay2.toString()); Transaction tx = graphDatabaseService.beginTx(); ContractCriteria contractCriteria = new ContractCriteria(); atlasTransformer.applyContraction(this.graphDatabaseService, contractCriteria); tx.success(); tx.close(); } }