@ParameterizedTest
  @ValueSource(booleans = {false, true})
  void postProcessTileFeatures(boolean postProcessLayersToo) throws Exception {
    double y = 0.5 + Z15_WIDTH / 2;
    double lat = GeoUtils.getWorldLat(y);

    double x1 = 0.5 + Z15_WIDTH / 4;
    double lng1 = GeoUtils.getWorldLon(x1);
    double lng2 = GeoUtils.getWorldLon(x1 + Z15_WIDTH * 10d / 256);

    List<SimpleFeature> features1 = List.of(
      newReaderFeature(newPoint(lng1, lat), Map.of("from", "a")),
      newReaderFeature(newPoint(lng2, lat), Map.of("from", "b"))
    );
    var testProfile = new Profile.NullProfile() {
      @Override
      public void processFeature(SourceFeature sourceFeature, FeatureCollector features) {
        features.point(sourceFeature.getString("from"))
          .inheritAttrFromSource("from")
          .setMinZoom(15);
      }

      @Override
      public Map<String, List<VectorTile.Feature>> postProcessTileFeatures(TileCoord tileCoord,
        Map<String, List<VectorTile.Feature>> layers) {
        List<VectorTile.Feature> features = new ArrayList<>();
        features.addAll(layers.get("a"));
        features.addAll(layers.get("b"));
        return Map.of("c", features);
      }

      @Override
      public List<VectorTile.Feature> postProcessLayerFeatures(String layer, int zoom, List<VectorTile.Feature> items) {
        return postProcessLayersToo ? items.reversed() : items;
      }
    };
    var results = run(
      Map.of("threads", "1", "maxzoom", "15"),
      (featureGroup, profile, config) -> processReaderFeatures(featureGroup, profile, config, features1),
      testProfile);

    assertSubmap(sortListValues(Map.of(
      TileCoord.ofXYZ(Z15_TILES / 2, Z15_TILES / 2, 15), List.of(
        feature(newPoint(64, 128), "c", Map.of("from", "a")),
        feature(newPoint(74, 128), "c", Map.of("from", "b"))
      )
    )), sortListValues(results.tiles));
  }
In-memory tests with fake data and profiles to ensure all features work end-to-end.
planetiler-core/src/test/java/com/onthegomap/planetiler/PlanetilerTests.java