@Test
  public void testLanes() throws Exception {

    List<RouteSegmentResult> routeSegments = fe.searchRoute(ctx, startPoint, endPoint, null);
    Set<Long> reachedSegments = new TreeSet<Long>();
    Assert.assertNotNull(routeSegments);
    int prevSegment = -1;
    for (int i = 0; i <= routeSegments.size(); i++) {
      if (i == routeSegments.size() || routeSegments.get(i).getTurnType() != null) {
        if (prevSegment >= 0) {
          String lanes = getLanesString(routeSegments.get(prevSegment));
          String turn = routeSegments.get(prevSegment).getTurnType().toXmlString();
          String turnLanes = turn + ":" + lanes;
          String name = routeSegments.get(prevSegment).getDescription();

          long segmentId = routeSegments.get(prevSegment).getObject().getId();
          String expectedResult = expectedResults.get(segmentId);
          if (expectedResult != null) {
            if (!Algorithms.objectEquals(expectedResult, turnLanes)
                && !Algorithms.objectEquals(expectedResult, lanes)
                && !Algorithms.objectEquals(expectedResult, turn)) {
              Assert.assertEquals("Segment " + segmentId, expectedResult, turnLanes);
            }
          }

          System.out.println("segmentId: " + segmentId + " description: " + name);
        }
        prevSegment = i;
      }

      if (i < routeSegments.size()) {
        reachedSegments.add(routeSegments.get(i).getObject().getId());
      }
    }

    Set<Long> expectedSegments = expectedResults.keySet();
    for (Long expSegId : expectedSegments) {
      Assert.assertTrue(
          "Expected segment "
              + expSegId
              + " weren't reached in route segments "
              + reachedSegments.toString(),
          reachedSegments.contains(expSegId));
    }
  }
  @BeforeClass
  public static void setUp() throws Exception {
    String fileName = "../../resources/Turn_lanes_test.obf";

    File fl = new File(fileName);

    RandomAccessFile raf = new RandomAccessFile(fl, "r");

    fe = new RoutePlannerFrontEnd(false);
    RoutingConfiguration.Builder builder = RoutingConfiguration.getDefault();
    Map<String, String> params = new LinkedHashMap<String, String>();
    params.put("car", "true");
    params.put("short_way", "true");
    RoutingConfiguration config =
        builder.build("car", RoutingConfiguration.DEFAULT_MEMORY_LIMIT * 3, params);
    BinaryMapIndexReader[] binaryMapIndexReaders = {new BinaryMapIndexReader(raf, fl)};
    ctx =
        fe.buildRoutingContext(
            config, null, binaryMapIndexReaders, RoutePlannerFrontEnd.RouteCalculationMode.NORMAL);
    ctx.leftSideNavigation = false;
    RouteResultPreparation.PRINT_TO_CONSOLE_ROUTE_INFORMATION_TO_TEST = true;
  }