@Test public void testPreferenceForSlowSpeed() { ReaderWay osmWay = new ReaderWay(1); osmWay.setTag("highway", "tertiary"); assertEquals(30, encoder.getSpeed(encoder.setSpeed(0, encoder.applyMaxSpeed(osmWay, 49))), 1e-1); assertPriority(PREFER.getValue(), osmWay); }
@Test public void testSetSpeed0_issue367() { long flags = encoder.setProperties(10, true, true); flags = encoder.setSpeed(flags, 0); assertEquals(0, encoder.getSpeed(flags), .1); assertEquals(10, encoder.getReverseSpeed(flags), .1); assertFalse(encoder.isForward(flags)); assertTrue(encoder.isBackward(flags)); }
protected long handleSpeed(ReaderWay way, double speed, long encoded) { encoded = setSpeed(encoded, speed); // handle oneways boolean isOneway = way.hasTag("oneway", oneways) || way.hasTag("oneway:bicycle", oneways) || way.hasTag("vehicle:backward") || way.hasTag("vehicle:forward") || way.hasTag("bicycle:forward"); if ((isOneway || way.hasTag("junction", "roundabout")) && !way.hasTag("oneway:bicycle", "no") && !way.hasTag("bicycle:backward") && !way.hasTag("cycleway", oppositeLanes) && !way.hasTag("cycleway:left", oppositeLanes) && !way.hasTag("cycleway:right", oppositeLanes)) { boolean isBackward = way.hasTag("oneway", "-1") || way.hasTag("oneway:bicycle", "-1") || way.hasTag("vehicle:forward", "no") || way.hasTag("bicycle:forward", "no"); if (isBackward) encoded |= backwardBit; else encoded |= forwardBit; } else { encoded |= directionBitMask; } return encoded; }
osmWay.setTag("highway", "tertiary"); osmWay.setTag("maxspeed", "50"); assertEquals(20, encoder.getSpeed(encoder.setSpeed(0, encoder.applyMaxSpeed(osmWay, 20))), 1e-1); assertPriority(PREFER.getValue(), osmWay); assertEquals(20, encoder.getSpeed(encoder.setSpeed(0, encoder.applyMaxSpeed(osmWay, 20))), 1e-1); assertPriority(PREFER.getValue(), osmWay); assertEquals(20, encoder.getSpeed(encoder.setSpeed(0, encoder.applyMaxSpeed(osmWay, 20))), 1e-1); assertPriority(PREFER.getValue(), osmWay); assertEquals(20, encoder.getSpeed(encoder.setSpeed(0, encoder.applyMaxSpeed(osmWay, 20))), 1e-1); assertPriority(UNCHANGED.getValue(), osmWay); assertEquals(20, encoder.getSpeed(encoder.setSpeed(0, encoder.applyMaxSpeed(osmWay, 20))), 1e-1); assertPriority(UNCHANGED.getValue(), osmWay); assertEquals(20, encoder.getSpeed(encoder.setSpeed(0, encoder.applyMaxSpeed(osmWay, 20))), 1e-1); assertPriority(REACH_DEST.getValue(), osmWay); assertEquals(20, encoder.getSpeed(encoder.setSpeed(0, encoder.applyMaxSpeed(osmWay, 20))), 1e-1); assertPriority(AVOID_AT_ALL_COSTS.getValue(), osmWay); osmWay.setTag("tunnel", "yes"); osmWay.setTag("maxspeed", "80"); assertEquals(20, encoder.getSpeed(encoder.setSpeed(0, encoder.applyMaxSpeed(osmWay, 20))), 1e-1); assertPriority(AVOID_AT_ALL_COSTS.getValue(), osmWay); osmWay.setTag("tunnel", "yes");
@Test public void testMaxSpeed() { ReaderWay way = new ReaderWay(1); way.setTag("highway", "secondary"); way.setTag("maxspeed", "10"); long allowed = encoder.acceptWay(way); long encoded = encoder.handleWayTags(way, allowed, 0); assertEquals(10, encoder.getSpeed(encoded), 1e-1); assertPriority(VERY_NICE.getValue(), way); way = new ReaderWay(1); way.setTag("highway", "tertiary"); way.setTag("maxspeed", "90"); assertEquals(20, encoder.getSpeed(encoder.setSpeed(0, encoder.applyMaxSpeed(way, 20))), 1e-1); assertPriority(UNCHANGED.getValue(), way); way = new ReaderWay(1); way.setTag("highway", "track"); way.setTag("maxspeed", "90"); assertEquals(20, encoder.getSpeed(encoder.setSpeed(0, encoder.applyMaxSpeed(way, 20))), 1e-1); assertPriority(UNCHANGED.getValue(), way); way = new ReaderWay(1); way.setTag("highway", "residential"); way.setTag("maxspeed", "15"); assertEquals(15, encoder.getSpeed(encoder.setSpeed(0, encoder.applyMaxSpeed(way, 15))), 1.0); allowed = encoder.acceptWay(way); encoded = encoder.handleWayTags(way, allowed, 0); assertEquals(15, encoder.getSpeed(encoded), 1.0); assertPriority(VERY_NICE.getValue(), way); }
protected long handleSpeed( OSMWay way, double speed, long encoded ) { encoded = setSpeed(encoded, speed); // handle oneways boolean isOneway = way.hasTag("oneway", oneways) || way.hasTag("oneway:bicycle", oneways) || way.hasTag("vehicle:backward") || way.hasTag("vehicle:forward") || way.hasTag("bicycle:forward"); if ((isOneway || way.hasTag("junction", "roundabout")) && !way.hasTag("oneway:bicycle", "no") && !way.hasTag("bicycle:backward") && !way.hasTag("cycleway", oppositeLanes)) { boolean isBackward = way.hasTag("oneway", "-1") || way.hasTag("oneway:bicycle", "-1") || way.hasTag("vehicle:forward", "no") || way.hasTag("bicycle:forward", "no"); if (isBackward) encoded |= backwardBit; else encoded |= forwardBit; } else { encoded |= directionBitMask; } return encoded; }
protected long handleSpeed(ReaderWay way, double speed, long encoded) { encoded = setSpeed(encoded, speed); // handle oneways boolean isOneway = way.hasTag("oneway", oneways) || way.hasTag("oneway:bicycle", oneways) || way.hasTag("vehicle:backward") || way.hasTag("vehicle:forward") || way.hasTag("bicycle:forward"); if ((isOneway || way.hasTag("junction", "roundabout")) && !way.hasTag("oneway:bicycle", "no") && !way.hasTag("bicycle:backward") && !way.hasTag("cycleway", oppositeLanes) && !way.hasTag("cycleway:left", oppositeLanes) && !way.hasTag("cycleway:right", oppositeLanes)) { boolean isBackward = way.hasTag("oneway", "-1") || way.hasTag("oneway:bicycle", "-1") || way.hasTag("vehicle:forward", "no") || way.hasTag("bicycle:forward", "no"); if (isBackward) encoded |= backwardBit; else encoded |= forwardBit; } else { encoded |= directionBitMask; } return encoded; }
protected long handleSpeed(ReaderWay way, double speed, long encoded) { encoded = setSpeed(encoded, speed); // handle oneways boolean isOneway = way.hasTag("oneway", oneways) || way.hasTag("oneway:bicycle", oneways) || way.hasTag("vehicle:backward") || way.hasTag("vehicle:forward") || way.hasTag("bicycle:forward"); if ((isOneway || way.hasTag("junction", "roundabout")) && !way.hasTag("oneway:bicycle", "no") && !way.hasTag("bicycle:backward") && !way.hasTag("cycleway", oppositeLanes) && !way.hasTag("cycleway:left", oppositeLanes) && !way.hasTag("cycleway:right", oppositeLanes)) { boolean isBackward = way.hasTag("oneway", "-1") || way.hasTag("oneway:bicycle", "-1") || way.hasTag("vehicle:forward", "no") || way.hasTag("bicycle:forward", "no"); if (isBackward) encoded |= backwardBit; else encoded |= forwardBit; } else { encoded |= directionBitMask; } return encoded; }