EncodingManager createEncodingManager(boolean restrictedOnly) { if (restrictedOnly) carEncoder = new CarFlagEncoder(5, 5, 1); else // allow for basic costs too carEncoder = new CarFlagEncoder(5, 5, 3); return new EncodingManager(carEncoder); }
private NameSimilarityEdgeFilter createNameSimilarityEdgeFilter(String s) { return new NameSimilarityEdgeFilter(DefaultEdgeFilter.allEdges(new CarFlagEncoder()), s); }
@Before public void setUp() { carEncoder = new CarFlagEncoder(); carManager = new EncodingManager(carEncoder); }
@Before public void setUp() { carEncoder = new CarFlagEncoder(); carManager = new EncodingManager(carEncoder); }
@Test public void testRegisterOnlyOnceAllowed() { CarFlagEncoder instance = new CarFlagEncoder(10, 0.5, 0); EncodingManager tmpEM = new EncodingManager(instance); try { tmpEM = new EncodingManager(instance); assertTrue(false); } catch (IllegalStateException ex) { } }
@Before public void setUp() { encoder = new CarFlagEncoder(); em = new EncodingManager(Arrays.asList(encoder), 8); graph = new GraphBuilder(em).create(); // 0-1 graph.edge(0, 1, 1, true); AbstractRoutingAlgorithmTester.updateDistancesFor(graph, 0, 0.00, 0.00); AbstractRoutingAlgorithmTester.updateDistancesFor(graph, 1, 0.01, 0.01); }
@Test public void testWrongEncoders() { try { FootFlagEncoder foot = new FootFlagEncoder(); new EncodingManager(foot, foot); assertTrue(false); } catch (Exception ex) { assertEquals("You must not register a FlagEncoder (foot) twice!", ex.getMessage()); } try { new EncodingManager(new FootFlagEncoder(), new CarFlagEncoder(), new BikeFlagEncoder(), new MountainBikeFlagEncoder(), new RacingBikeFlagEncoder()); assertTrue(false); } catch (Exception ex) { assertTrue(ex.getMessage(), ex.getMessage().startsWith("Encoders are requesting 44 bits, more than 32 bits of way flags. Decrease the")); } }
@Before public void setUp() { carEncoder = new CarFlagEncoder(); encodingManager = new EncodingManager(carEncoder); g = new GraphHopperStorage(new RAMDirectory(), encodingManager, false, new GraphExtension.NoOpExtension()).create(100); }
@Test public void testIssue_1256() { ReaderWay way = new ReaderWay(1); way.setTag("route", "ferry"); way.setTag("estimated_distance", 257); CarFlagEncoder lowFactorCar = new CarFlagEncoder(10, 1, 0); lowFactorCar.defineWayBits(0,0); assertEquals(2.5, encoder.getFerrySpeed(way), .1); assertEquals(.5, lowFactorCar.getFerrySpeed(way), .1); } }
@Before public void setUp() { encoder = new CarFlagEncoder(); ghStorage = new GraphHopperStorage(new RAMDirectory(), new EncodingManager(encoder), false, new GraphExtension.NoOpExtension()); ghStorage.create(1000); }
@Before public void setUp() { encoder = new CarFlagEncoder(); tm = TraversalMode.NODE_BASED; GraphHopperStorage tmp = new GraphHopperStorage(new RAMDirectory(), new EncodingManager(encoder), false, new GraphExtension.NoOpExtension()); tmp.create(1000); graph = tmp; }
@Test public void testMultiplePreparationsIdenticalView() { CarFlagEncoder tmpCarEncoder = new CarFlagEncoder(); BikeFlagEncoder tmpBikeEncoder = new BikeFlagEncoder(); EncodingManager tmpEncodingManager = new EncodingManager(tmpCarEncoder, tmpBikeEncoder); // FastestWeighting would lead to different shortcuts due to different default speeds for bike and car Weighting carWeighting = new ShortestWeighting(tmpCarEncoder); Weighting bikeWeighting = new ShortestWeighting(tmpBikeEncoder); List<Weighting> chWeightings = Arrays.asList(carWeighting, bikeWeighting); GraphHopperStorage ghStorage = new GraphHopperStorage(chWeightings, dir, tmpEncodingManager, false, new GraphExtension.NoOpExtension()).create(1000); initShortcutsGraph(ghStorage); ghStorage.freeze(); for (Weighting w : chWeightings) { checkPath(ghStorage, w, 7, 5, IntArrayList.from(3, 9, 14, 16, 13, 12)); } }
@Test public void addWeighting() { LMAlgoFactoryDecorator dec = new LMAlgoFactoryDecorator().setEnabled(true); dec.addWeighting("fastest"); assertEquals(Arrays.asList("fastest"), dec.getWeightingsAsStrings()); // special parameters like the maximum weight dec = new LMAlgoFactoryDecorator().setEnabled(true); dec.addWeighting("fastest|maximum=65000"); dec.addWeighting("shortest|maximum=20000"); assertEquals(Arrays.asList("fastest", "shortest"), dec.getWeightingsAsStrings()); FlagEncoder car = new CarFlagEncoder(); EncodingManager em = new EncodingManager(car); dec.addWeighting(new FastestWeighting(car)).addWeighting(new ShortestWeighting(car)); dec.createPreparations(new GraphHopperStorage(new RAMDirectory(), em, false, new GraphExtension.NoOpExtension()), null); assertEquals(1, dec.getPreparations().get(0).getLandmarkStorage().getFactor(), .1); assertEquals(0.3, dec.getPreparations().get(1).getLandmarkStorage().getFactor(), .1); }
@Test public void testMultiplePreparationsDifferentView() { CarFlagEncoder tmpCarEncoder = new CarFlagEncoder(); BikeFlagEncoder tmpBikeEncoder = new BikeFlagEncoder(); EncodingManager tmpEncodingManager = new EncodingManager(tmpCarEncoder, tmpBikeEncoder); Weighting carWeighting = new FastestWeighting(tmpCarEncoder); Weighting bikeWeighting = new FastestWeighting(tmpBikeEncoder); List<Weighting> chWeightings = Arrays.asList(carWeighting, bikeWeighting); GraphHopperStorage ghStorage = new GraphHopperStorage(chWeightings, dir, tmpEncodingManager, false, new GraphExtension.NoOpExtension()).create(1000); initShortcutsGraph(ghStorage); EdgeIteratorState edge = GHUtility.getEdge(ghStorage, 9, 14); edge.setFlags(tmpBikeEncoder.setAccess(edge.getFlags(), false, false)); ghStorage.freeze(); checkPath(ghStorage, carWeighting, 7, 5, IntArrayList.from(3, 9, 14, 16, 13, 12)); // detour around blocked 9,14 checkPath(ghStorage, bikeWeighting, 9, 5, IntArrayList.from(3, 10, 14, 16, 13, 12)); }
@Test public void testMaxValue() { EncodedDoubleValue instance1 = new EncodedDoubleValue("test1", 0, 8, 0.5, 60, 100); long flags = instance1.setDoubleValue(0, instance1.getMaxValue()); assertEquals(100, instance1.getDoubleValue(flags), 1e-1); CarFlagEncoder carEncoder = new CarFlagEncoder(10, 0.5, 0); new EncodingManager(carEncoder); ReaderWay way = new ReaderWay(1); way.setTag("highway", "motorway_link"); way.setTag("maxspeed", "70 mph"); flags = carEncoder.handleWayTags(way, 1, 0); // double speed = AbstractFlagEncoder.parseSpeed("70 mph"); flags = carEncoder.reverseFlags(flags); assertEquals(101.5, carEncoder.getSpeed(flags), 1e-1); }
@Test public void testBaseGraph() { CarFlagEncoder carFE = new CarFlagEncoder(); EncodingManager em = new EncodingManager(carFE); AlgorithmOptions opts = AlgorithmOptions.start(). weighting(new ShortestWeighting(carFE)).build(); GraphHopperStorage ghStorage = createGHStorage(em, Arrays.asList(opts.getWeighting()), false); initDirectedAndDiffSpeed(ghStorage, carFE); // do CH preparation for car createFactory(ghStorage, opts); // use base graph for solving normal Dijkstra Path p1 = new RoutingAlgorithmFactorySimple().createAlgo(ghStorage, defaultOpts).calcPath(0, 3); assertEquals(IntArrayList.from(0, 1, 5, 2, 3), p1.calcNodes()); assertEquals(p1.toString(), 402.29, p1.getDistance(), 1e-2); assertEquals(p1.toString(), 144823, p1.getTime()); }
@Test public void testMaxValue() { CarFlagEncoder instance = new CarFlagEncoder(10, 0.5, 0); EncodingManager em = new EncodingManager(instance); ReaderWay way = new ReaderWay(1); way.setTag("highway", "motorway_link"); way.setTag("maxspeed", "60 mph"); long flags = instance.handleWayTags(way, 1, 0); // double speed = AbstractFlagEncoder.parseSpeed("60 mph"); // => 96.56 * 0.9 => 86.9 assertEquals(86.9, instance.getSpeed(flags), 1e-1); flags = instance.reverseFlags(flags); assertEquals(86.9, instance.getSpeed(flags), 1e-1); // test that maxPossibleValue is not exceeded way = new ReaderWay(2); way.setTag("highway", "motorway_link"); way.setTag("maxspeed", "70 mph"); flags = instance.handleWayTags(way, 1, 0); assertEquals(101.5, instance.getSpeed(flags), .1); }
@Test public void testMergeFlagsBeforeAdding() { FlagEncoder carEncoder = new CarFlagEncoder(5, 5, 3); FlagEncoder bikeEncoder = new BikeFlagEncoder(5, 5, 3); EncodingManager manager = new EncodingManager(carEncoder, bikeEncoder); GraphHopperStorage g = new GraphBuilder(manager).create(); initGraph(g); TurnCostExtension tcs = (TurnCostExtension) g.getExtension(); long carRestricted = carEncoder.getTurnFlags(true, 0); long bikeRestricted = bikeEncoder.getTurnFlags(true, 0); int edge23 = getEdge(g, 2, 3).getEdge(); int edge02 = getEdge(g, 0, 2).getEdge(); tcs.addTurnInfo(edge02, 2, edge23, carRestricted | bikeRestricted); long flags023 = tcs.getTurnCostFlags(edge02, 2, edge23); assertEquals(Double.POSITIVE_INFINITY, carEncoder.getTurnCost(flags023), 0); assertEquals(Double.POSITIVE_INFINITY, bikeEncoder.getTurnCost(flags023), 0); } }
@Test public void testTurnFlagEncoding_noCosts() { FlagEncoder tmpEnc = new CarFlagEncoder(8, 5, 0); EncodingManager em = new EncodingManager(tmpEnc); long flags_r0 = tmpEnc.getTurnFlags(true, 0); long flags_0 = tmpEnc.getTurnFlags(false, 0); long flags_r20 = tmpEnc.getTurnFlags(true, 0); long flags_20 = tmpEnc.getTurnFlags(false, 20); assertEquals(0, tmpEnc.getTurnCost(flags_r0), 1e-1); assertEquals(0, tmpEnc.getTurnCost(flags_0), 1e-1); assertEquals(0, tmpEnc.getTurnCost(flags_r20), 1e-1); assertEquals(0, tmpEnc.getTurnCost(flags_20), 1e-1); assertFalse(tmpEnc.isTurnRestricted(flags_r0)); assertFalse(tmpEnc.isTurnRestricted(flags_0)); assertFalse(tmpEnc.isTurnRestricted(flags_r20)); assertFalse(tmpEnc.isTurnRestricted(flags_20)); }
@Test public void testAcceptsCar() { CarFlagEncoder encoder = new CarFlagEncoder(5, 5, 0); assertEquals(40, encoder.parseSpeed("40 km/h"), 1e-3); assertEquals(40, encoder.parseSpeed("40km/h"), 1e-3); assertEquals(40, encoder.parseSpeed("40kmh"), 1e-3); assertEquals(64.374, encoder.parseSpeed("40mph"), 1e-3); assertEquals(48.28, encoder.parseSpeed("30 mph"), 1e-3); assertEquals(-1, encoder.parseSpeed(null), 1e-3); assertEquals(18.52, encoder.parseSpeed("10 knots"), 1e-3); assertEquals(19, encoder.parseSpeed("19 kph"), 1e-3); assertEquals(19, encoder.parseSpeed("19kph"), 1e-3); assertEquals(50, encoder.parseSpeed("RO:urban"), 1e-3); assertEquals(80, encoder.parseSpeed("RU:rural"), 1e-3); assertEquals(6, encoder.parseSpeed("walk"), 1e-3); }