// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.data.osm; import static org.junit.Assert.assertEquals; import org.junit.Test; /** * Unit tests of {@link SimplePrimitiveId} class. */ public class SimplePrimitiveIdTest { /** * Unit test of {@link SimplePrimitiveId#fromString} for nodes. */ @Test public void testFromStringNode() { assertEquals(new SimplePrimitiveId(123, OsmPrimitiveType.NODE), SimplePrimitiveId.fromString("node/123")); assertEquals(new SimplePrimitiveId(123, OsmPrimitiveType.NODE), SimplePrimitiveId.fromString("n123")); assertEquals(new SimplePrimitiveId(123, OsmPrimitiveType.NODE), SimplePrimitiveId.fromString("node123")); assertEquals(new SimplePrimitiveId(123456789123456789L, OsmPrimitiveType.NODE), SimplePrimitiveId.fromString("n123456789123456789")); } /** * Unit test of {@link SimplePrimitiveId#fromString} for ways. */ @Test public void testFromStringWay() { assertEquals(new SimplePrimitiveId(123, OsmPrimitiveType.WAY), SimplePrimitiveId.fromString("way/123")); assertEquals(new SimplePrimitiveId(123, OsmPrimitiveType.WAY), SimplePrimitiveId.fromString("w123")); assertEquals(new SimplePrimitiveId(123, OsmPrimitiveType.WAY), SimplePrimitiveId.fromString("way123")); assertEquals(new SimplePrimitiveId(123456789123456789L, OsmPrimitiveType.WAY), SimplePrimitiveId.fromString("w123456789123456789")); } /** * Unit test of {@link SimplePrimitiveId#fromString} for relations. */ @Test public void testFromStringRelation() { assertEquals(new SimplePrimitiveId(123, OsmPrimitiveType.RELATION), SimplePrimitiveId.fromString("relation/123")); assertEquals(new SimplePrimitiveId(123, OsmPrimitiveType.RELATION), SimplePrimitiveId.fromString("r123")); assertEquals(new SimplePrimitiveId(123, OsmPrimitiveType.RELATION), SimplePrimitiveId.fromString("rel123")); assertEquals(new SimplePrimitiveId(123, OsmPrimitiveType.RELATION), SimplePrimitiveId.fromString("relation123")); } /** * Unit test of {@link SimplePrimitiveId#fromString} for invalid input. */ @Test(expected = IllegalArgumentException.class) public void testFromStringBad() { SimplePrimitiveId.fromString("foobar"); } /** * Unit test of {@link SimplePrimitiveId#fuzzyParse}. */ @Test public void testFuzzyParse() { assertEquals("[relation 123]", SimplePrimitiveId.fuzzyParse("foo relation/123 bar").toString()); assertEquals("[relation 123, way 345, node 789]", SimplePrimitiveId.fuzzyParse("foo relation/123 and way/345 but also node/789").toString()); assertEquals("[relation 123, relation 124, way 345, way 346, node 789]", SimplePrimitiveId.fuzzyParse("foo relation/123-24 and way/345-346 but also node/789").toString()); } @Test public void testFromCopyAction() { assertEquals(new SimplePrimitiveId(123, OsmPrimitiveType.NODE), SimplePrimitiveId.fromString("node 123")); assertEquals(new SimplePrimitiveId(123, OsmPrimitiveType.WAY), SimplePrimitiveId.fromString("way 123")); assertEquals(new SimplePrimitiveId(123, OsmPrimitiveType.RELATION), SimplePrimitiveId.fromString("relation 123")); } /** * Unit test of {@link SimplePrimitiveId#multipleFromString}. */ @Test public void testMultipleFromString() { assertEquals("[node 234]", SimplePrimitiveId.multipleFromString("node/234").toString()); assertEquals("[node 234]", SimplePrimitiveId.multipleFromString("node/234-234").toString()); assertEquals("[]", SimplePrimitiveId.multipleFromString("node/2-1").toString()); assertEquals("[node 123, node 124]", SimplePrimitiveId.multipleFromString("node/123-124").toString()); assertEquals("[node 123, node 124]", SimplePrimitiveId.multipleFromString("n/123-124").toString()); assertEquals("[node 123, node 124, node 125, node 126]", SimplePrimitiveId.multipleFromString("node123-126").toString()); assertEquals("[way 123]", SimplePrimitiveId.multipleFromString("way/123-123").toString()); assertEquals("[way 123, way 124, way 125, way 126, way 127]", SimplePrimitiveId.multipleFromString("w/123-127").toString()); assertEquals("[way 123, way 124, way 125]", SimplePrimitiveId.multipleFromString("way123-125").toString()); assertEquals("[relation 123, relation 124, relation 125]", SimplePrimitiveId.multipleFromString("relation/123-125").toString()); assertEquals("[relation 123, relation 124, relation 125]", SimplePrimitiveId.multipleFromString("r/123-125").toString()); assertEquals("[relation 123, relation 124, relation 125]", SimplePrimitiveId.multipleFromString("relation123-125").toString()); assertEquals("[node 234, node 235]", SimplePrimitiveId.multipleFromString("node/234-5").toString()); assertEquals("[node 234, node 235]", SimplePrimitiveId.multipleFromString("node/234-35").toString()); assertEquals("[node 234, node 235]", SimplePrimitiveId.multipleFromString("node/234-235").toString()); assertEquals("[node 998, node 999, node 1000, node 1001]", SimplePrimitiveId.multipleFromString("node/998-1001").toString()); } /** * Unit test of {@link SimplePrimitiveId#multipleFromString} for invalid data. */ @Test(expected = IllegalArgumentException.class) public void testMultipleFromStringBad() { SimplePrimitiveId.multipleFromString("foo node123 bar"); } }