kopia lustrzana https://github.com/JOSM/MapWithAI
Add test for merging addresses/buildings
Signed-off-by: Taylor Smock <taylor.smock@kaart.com>pull/1/head v1.1.2
rodzic
a2bde9603d
commit
a4f0f65cd2
|
@ -0,0 +1,98 @@
|
||||||
|
package org.openstreetmap.josm.plugins.mapwithai.backend.commands.conflation;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertNull;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
|
||||||
|
import org.junit.Rule;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.openstreetmap.josm.TestUtils;
|
||||||
|
import org.openstreetmap.josm.command.Command;
|
||||||
|
import org.openstreetmap.josm.data.coor.LatLon;
|
||||||
|
import org.openstreetmap.josm.data.osm.DataSet;
|
||||||
|
import org.openstreetmap.josm.data.osm.Node;
|
||||||
|
import org.openstreetmap.josm.data.osm.Relation;
|
||||||
|
import org.openstreetmap.josm.data.osm.RelationMember;
|
||||||
|
import org.openstreetmap.josm.data.osm.Way;
|
||||||
|
import org.openstreetmap.josm.testutils.JOSMTestRules;
|
||||||
|
|
||||||
|
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
|
||||||
|
|
||||||
|
public class MergeBuildingAddressTest {
|
||||||
|
/**
|
||||||
|
* Setup test.
|
||||||
|
*/
|
||||||
|
@Rule
|
||||||
|
@SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
|
||||||
|
public JOSMTestRules rule = new JOSMTestRules().projection();
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSingleAddress() {
|
||||||
|
DataSet ds = new DataSet();
|
||||||
|
Node addr = new Node(new LatLon(0, 0));
|
||||||
|
ds.addPrimitive(addr);
|
||||||
|
addr.put("addr:housenumber", "1");
|
||||||
|
MergeBuildingAddress conflation = new MergeBuildingAddress(ds);
|
||||||
|
assertNull(conflation.getCommand(Collections.singletonList(addr)));
|
||||||
|
final double square = 0.0001;
|
||||||
|
Way way = TestUtils.newWay("", new Node(new LatLon(-square, -square)), new Node(new LatLon(-square, square)),
|
||||||
|
new Node(new LatLon(square, square)), new Node(new LatLon(square, -square)));
|
||||||
|
way.getNodes().forEach(ds::addPrimitive);
|
||||||
|
ds.addPrimitive(way);
|
||||||
|
way.addNode(way.firstNode());
|
||||||
|
assertNull(conflation.getCommand(Collections.singletonList(addr)));
|
||||||
|
|
||||||
|
way.put("building", "yes");
|
||||||
|
Command command = conflation.getCommand(Collections.singletonList(addr));
|
||||||
|
command.executeCommand();
|
||||||
|
assertEquals("1", way.get("addr:housenumber"));
|
||||||
|
command.undoCommand();
|
||||||
|
|
||||||
|
way.remove("building");
|
||||||
|
Relation multipolygon = new Relation();
|
||||||
|
multipolygon.addMember(new RelationMember("outer", way));
|
||||||
|
multipolygon.put("type", "multipolygon");
|
||||||
|
ds.addPrimitive(multipolygon);
|
||||||
|
assertNull(conflation.getCommand(Collections.singletonList(addr)));
|
||||||
|
multipolygon.put("building", "yes");
|
||||||
|
command = conflation.getCommand(Collections.singletonList(addr));
|
||||||
|
command.executeCommand();
|
||||||
|
assertEquals("1", multipolygon.get("addr:housenumber"));
|
||||||
|
command.undoCommand();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testMultiAddress() {
|
||||||
|
DataSet ds = new DataSet();
|
||||||
|
Node addr = new Node(new LatLon(0, 0));
|
||||||
|
Node addr2 = new Node(new LatLon(0.00005, 0.00005));
|
||||||
|
ds.addPrimitive(addr);
|
||||||
|
ds.addPrimitive(addr2);
|
||||||
|
addr.put("addr:housenumber", "1");
|
||||||
|
addr2.put("addr:housenumber", "2");
|
||||||
|
addr.put("addr:street", "Test");
|
||||||
|
addr2.put("addr:street", "Test");
|
||||||
|
MergeBuildingAddress conflation = new MergeBuildingAddress(ds);
|
||||||
|
assertNull(conflation.getCommand(Collections.singletonList(addr)));
|
||||||
|
final double square = 0.0001;
|
||||||
|
Way way = TestUtils.newWay("", new Node(new LatLon(-square, -square)), new Node(new LatLon(-square, square)),
|
||||||
|
new Node(new LatLon(square, square)), new Node(new LatLon(square, -square)));
|
||||||
|
way.getNodes().forEach(ds::addPrimitive);
|
||||||
|
ds.addPrimitive(way);
|
||||||
|
way.addNode(way.firstNode());
|
||||||
|
assertNull(conflation.getCommand(Collections.singletonList(addr)));
|
||||||
|
|
||||||
|
way.put("building", "yes");
|
||||||
|
assertNull(conflation.getCommand(Collections.singletonList(addr)));
|
||||||
|
|
||||||
|
way.remove("building");
|
||||||
|
Relation multipolygon = new Relation();
|
||||||
|
multipolygon.addMember(new RelationMember("outer", way));
|
||||||
|
multipolygon.put("type", "multipolygon");
|
||||||
|
ds.addPrimitive(multipolygon);
|
||||||
|
assertNull(conflation.getCommand(Collections.singletonList(addr)));
|
||||||
|
multipolygon.put("building", "yes");
|
||||||
|
assertNull(conflation.getCommand(Collections.singletonList(addr)));
|
||||||
|
}
|
||||||
|
}
|
Ładowanie…
Reference in New Issue