Changeset 11104 in josm for trunk/test/unit/org/openstreetmap/josm/actions/CreateMultipolygonActionTest.java
- Timestamp:
- 2016-10-08T15:28:54+02:00 (8 years ago)
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/test/unit/org/openstreetmap/josm/actions/CreateMultipolygonActionTest.java
r11095 r11104 1 package org.openstreetmap.josm.actions 1 // License: GPL. For details, see LICENSE file. 2 package org.openstreetmap.josm.actions; 2 3 3 import org.junit.BeforeClass 4 import org.junit.Test 5 import org.openstreetmap.josm.JOSMFixture 6 import org.openstreetmap.josm.TestUtils 7 import org.openstreetmap.josm.actions.search.SearchAction 8 import org.openstreetmap.josm.actions.search.SearchCompiler 9 import org.openstreetmap.josm.data.osm.Relation 10 import org.openstreetmap.josm.data.osm.Way 11 import org.openstreetmap.josm.io.OsmReader 12 import org.openstreetmap.josm.tools.SubclassFilteredCollection 4 import static org.junit.Assert.assertEquals; 13 5 6 import java.io.FileInputStream; 7 import java.util.Collection; 8 import java.util.Map; 9 import java.util.TreeMap; 10 11 import org.junit.Rule; 12 import org.junit.Test; 13 import org.openstreetmap.josm.TestUtils; 14 import org.openstreetmap.josm.actions.search.SearchAction.SearchSetting; 15 import org.openstreetmap.josm.actions.search.SearchCompiler; 16 import org.openstreetmap.josm.actions.search.SearchCompiler.ParseError; 17 import org.openstreetmap.josm.command.SequenceCommand; 18 import org.openstreetmap.josm.data.osm.DataSet; 19 import org.openstreetmap.josm.data.osm.Relation; 20 import org.openstreetmap.josm.data.osm.RelationMember; 21 import org.openstreetmap.josm.data.osm.Way; 22 import org.openstreetmap.josm.io.OsmReader; 23 import org.openstreetmap.josm.testutils.JOSMTestRules; 24 import org.openstreetmap.josm.tools.Pair; 25 import org.openstreetmap.josm.tools.SubclassFilteredCollection; 26 27 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; 28 29 /** 30 * Unit test of {@link CreateMultipolygonAction} 31 */ 14 32 public class CreateMultipolygonActionTest { 15 33 16 @BeforeClass 17 public static void setUp() { 18 JOSMFixture.createUnitTestFixture().init(); 19 } 34 /** 35 * Setup test. 36 */ 37 @Rule 38 @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD") 39 public JOSMTestRules test = new JOSMTestRules().projection(); 20 40 21 static defgetRefToRoleMap(Relation relation) {22 def refToRole = new TreeMap<String, String>()23 for ( i inrelation.getMembers()) {24 refToRole.put(i. member.get("ref"), i.role);41 private static Map<String, String> getRefToRoleMap(Relation relation) { 42 Map<String, String> refToRole = new TreeMap<>(); 43 for (RelationMember i : relation.getMembers()) { 44 refToRole.put(i.getMember().get("ref"), i.getRole()); 25 45 } 26 46 return refToRole; 27 47 } 28 48 29 static def regexpSearch(String search) { 30 def setting = new SearchAction.SearchSetting() 31 setting.text = search 32 setting.regexSearch = true 33 return setting 49 private static SearchSetting regexpSearch(String search) { 50 SearchSetting setting = new SearchSetting(); 51 setting.text = search; 52 setting.regexSearch = true; 53 return setting; 54 } 55 56 @SuppressWarnings("unchecked") 57 private static Pair<SequenceCommand, Relation> createMultipolygonCommand(Collection<Way> ways, String pattern, Relation r) 58 throws ParseError { 59 return CreateMultipolygonAction.createMultipolygonCommand( 60 (Collection<Way>) (Collection<?>) SubclassFilteredCollection.filter(ways, SearchCompiler.compile(regexpSearch(pattern))), r); 34 61 } 35 62 36 63 @Test 37 public void testCreate1() {38 defds = OsmReader.parseDataSet(new FileInputStream(TestUtils.getTestDataRoot() + "create_multipolygon.osm"), null);39 def mp = CreateMultipolygonAction.createMultipolygonCommand(ds.getWays(), null)40 assert mp.a.getDescriptionText() == "Sequence: Create multipolygon"41 assert getRefToRoleMap(mp.b).toString() == "[1:outer, 1.1:inner, 1.1.1:outer, 1.1.2:outer, 1.2:inner]"64 public void testCreate1() throws Exception { 65 DataSet ds = OsmReader.parseDataSet(new FileInputStream(TestUtils.getTestDataRoot() + "create_multipolygon.osm"), null); 66 Pair<SequenceCommand, Relation> mp = CreateMultipolygonAction.createMultipolygonCommand(ds.getWays(), null); 67 assertEquals("Sequence: Create multipolygon", mp.a.getDescriptionText()); 68 assertEquals("{1=outer, 1.1=inner, 1.1.1=outer, 1.1.2=outer, 1.2=inner}", getRefToRoleMap(mp.b).toString()); 42 69 } 43 70 44 71 @Test 45 public void testCreate2() { 46 def ds = OsmReader.parseDataSet(new FileInputStream(TestUtils.getTestDataRoot() + "create_multipolygon.osm"), null); 47 def ways = SubclassFilteredCollection.filter(ds.getWays(), SearchCompiler.compile("ref=1 OR ref:1.1.")) 48 def mp = CreateMultipolygonAction.createMultipolygonCommand(ways as Collection<Way>, null) 49 assert getRefToRoleMap(mp.b).toString() == "[1:outer, 1.1.1:inner, 1.1.2:inner]" 72 public void testCreate2() throws Exception { 73 DataSet ds = OsmReader.parseDataSet(new FileInputStream(TestUtils.getTestDataRoot() + "create_multipolygon.osm"), null); 74 Pair<SequenceCommand, Relation> mp = createMultipolygonCommand(ds.getWays(), "ref=1 OR ref:1.1.", null); 75 assertEquals("{1=outer, 1.1.1=inner, 1.1.2=inner}", getRefToRoleMap(mp.b).toString()); 50 76 } 51 77 52 78 @Test 53 public void testUpdate1() { 54 def ds = OsmReader.parseDataSet(new FileInputStream(TestUtils.getTestDataRoot() + "create_multipolygon.osm"), null); 55 def ways = SubclassFilteredCollection.filter(ds.getWays(), SearchCompiler.compile(regexpSearch("ref=\".*1\$\""))) 56 def mp = CreateMultipolygonAction.createMultipolygonCommand(ways as Collection<Way>, null) 57 assert mp.b.getMembersCount() == 3 58 assert getRefToRoleMap(mp.b).toString() == "[1:outer, 1.1:inner, 1.1.1:outer]" 59 def ways2 = SubclassFilteredCollection.filter(ds.getWays(), SearchCompiler.compile(regexpSearch("ref=1.2"))) 60 def mp2 = CreateMultipolygonAction.createMultipolygonCommand(ways2 as Collection<Way>, mp.b) 61 assert mp2.b.getMembersCount() == 4 62 assert getRefToRoleMap(mp2.b).toString() == "[1:outer, 1.1:inner, 1.1.1:outer, 1.2:inner]" 79 public void testUpdate1() throws Exception { 80 DataSet ds = OsmReader.parseDataSet(new FileInputStream(TestUtils.getTestDataRoot() + "create_multipolygon.osm"), null); 81 Pair<SequenceCommand, Relation> mp = createMultipolygonCommand(ds.getWays(), "ref=\".*1$\"", null); 82 assertEquals(3, mp.b.getMembersCount()); 83 assertEquals("{1=outer, 1.1=inner, 1.1.1=outer}", getRefToRoleMap(mp.b).toString()); 84 Pair<SequenceCommand, Relation> mp2 = createMultipolygonCommand(ds.getWays(), "ref=1.2", mp.b); 85 assertEquals(4, mp2.b.getMembersCount()); 86 assertEquals("{1=outer, 1.1=inner, 1.1.1=outer, 1.2=inner}", getRefToRoleMap(mp2.b).toString()); 63 87 } 64 88 65 89 @Test 66 public void testUpdate2() { 67 def ds = OsmReader.parseDataSet(new FileInputStream(TestUtils.getTestDataRoot() + "create_multipolygon.osm"), null); 68 def ways = SubclassFilteredCollection.filter(ds.getWays(), SearchCompiler.compile("ref=1 OR ref:1.1.1")) 69 def mp = CreateMultipolygonAction.createMultipolygonCommand(ways as Collection<Way>, null) 70 assert getRefToRoleMap(mp.b).toString() == "[1:outer, 1.1.1:inner]" 71 def ways2 = SubclassFilteredCollection.filter(ds.getWays(), SearchCompiler.compile(regexpSearch("ref=1.1 OR ref=1.2 OR ref=1.1.2"))) 72 def mp2 = CreateMultipolygonAction.createMultipolygonCommand(ways2 as Collection<Way>, mp.b) 73 assert getRefToRoleMap(mp2.b).toString() == "[1:outer, 1.1:inner, 1.1.1:outer, 1.1.2:outer, 1.2:inner]" 90 public void testUpdate2() throws Exception { 91 DataSet ds = OsmReader.parseDataSet(new FileInputStream(TestUtils.getTestDataRoot() + "create_multipolygon.osm"), null); 92 Pair<SequenceCommand, Relation> mp = createMultipolygonCommand(ds.getWays(), "ref=1 OR ref:1.1.1", null); 93 assertEquals("{1=outer, 1.1.1=inner}", getRefToRoleMap(mp.b).toString()); 94 Pair<SequenceCommand, Relation> mp2 = createMultipolygonCommand(ds.getWays(), "ref=1.1 OR ref=1.2 OR ref=1.1.2", mp.b); 95 assertEquals("{1=outer, 1.1=inner, 1.1.1=outer, 1.1.2=outer, 1.2=inner}", getRefToRoleMap(mp2.b).toString()); 74 96 } 75 97 }
Note:
See TracChangeset
for help on using the changeset viewer.