@Test public void testBasics() { long fl = footEncoder.flagsDefault(true, true); assertEquals(FootFlagEncoder.MEAN_SPEED, footEncoder.getSpeed(fl), 1e-1); long fl1 = footEncoder.flagsDefault(true, false); long fl2 = footEncoder.reverseFlags(fl1); assertEquals(footEncoder.getSpeed(fl2), footEncoder.getSpeed(fl1), 1e-1); }
@Test public void testGetSpeed() { long fl = footEncoder.setProperties(10, true, true); assertEquals(10, footEncoder.getSpeed(fl), 1e-1); }
@Test public void testFerrySpeed() { ReaderWay way = new ReaderWay(1); way.setTag("route", "ferry"); // a bit longer than an hour way.setTag("duration:seconds", "4000"); long flags = footEncoder.handleWayTags(way, footEncoder.acceptWay(way), 0); assertTrue(footEncoder.getSpeed(flags) > footEncoder.getMaxSpeed()); assertEquals(20, footEncoder.getSpeed(flags), .1); }
@Test public void testSlowHiking() { ReaderWay way = new ReaderWay(1); way.setTag("highway", "track"); way.setTag("sac_scale", "hiking"); long flags = footEncoder.handleWayTags(way, footEncoder.acceptWay(way), 0); assertEquals(FootFlagEncoder.MEAN_SPEED, footEncoder.getSpeed(flags), 1e-1); way.setTag("highway", "track"); way.setTag("sac_scale", "mountain_hiking"); flags = footEncoder.handleWayTags(way, footEncoder.acceptWay(way), 0); assertEquals(FootFlagEncoder.SLOW_SPEED, footEncoder.getSpeed(flags), 1e-1); }
@Test public void testMixSpeedAndSafe() { ReaderWay way = new ReaderWay(1); way.setTag("highway", "motorway"); long flags = footEncoder.handleWayTags(way, footEncoder.acceptWay(way), 0); assertEquals(0, flags); way.setTag("sidewalk", "yes"); flags = footEncoder.handleWayTags(way, footEncoder.acceptWay(way), 0); assertEquals(5, footEncoder.getSpeed(flags), 1e-1); way.clearTags(); way.setTag("highway", "track"); flags = footEncoder.handleWayTags(way, footEncoder.acceptWay(way), 0); assertEquals(5, footEncoder.getSpeed(flags), 1e-1); }
@Test public void testCombined() { FlagEncoder carEncoder = encodingManager.getEncoder("car"); long fl = footEncoder.setProperties(10, true, true) | carEncoder.setProperties(100, true, false); assertEquals(10, footEncoder.getSpeed(fl), 1e-1); assertTrue(footEncoder.isForward(fl)); assertTrue(footEncoder.isBackward(fl)); assertEquals(100, carEncoder.getSpeed(fl), 1e-1); assertTrue(carEncoder.isForward(fl)); assertFalse(carEncoder.isBackward(fl)); assertEquals(0, carEncoder.getSpeed(footEncoder.setProperties(10, true, true)), 1e-1); }
@Test public void testCompatibilityBug() { EncodingManager manager2 = new EncodingManager(FlagEncoderFactory.DEFAULT, "bike2", 8); ReaderWay osmWay = new ReaderWay(1); osmWay.setTag("highway", "footway"); osmWay.setTag("name", "test"); BikeFlagEncoder singleBikeEnc = (BikeFlagEncoder) manager2.getEncoder("bike2"); long flags = manager2.handleWayTags(osmWay, singleBikeEnc.acceptBit, 0); double singleSpeed = singleBikeEnc.getSpeed(flags); assertEquals(4, singleSpeed, 1e-3); assertEquals(singleSpeed, singleBikeEnc.getReverseSpeed(flags), 1e-3); EncodingManager manager = new EncodingManager(FlagEncoderFactory.DEFAULT, "bike2,bike,foot", 8); FootFlagEncoder foot = (FootFlagEncoder) manager.getEncoder("foot"); BikeFlagEncoder bike = (BikeFlagEncoder) manager.getEncoder("bike2"); long acceptBits = foot.acceptBit | bike.acceptBit; flags = manager.handleWayTags(osmWay, acceptBits, 0); assertEquals(singleSpeed, bike.getSpeed(flags), 1e-2); assertEquals(singleSpeed, bike.getReverseSpeed(flags), 1e-2); assertEquals(5, foot.getSpeed(flags), 1e-2); assertEquals(5, foot.getReverseSpeed(flags), 1e-2); }