import { describe } from "mocha" import { expect } from "chai" import { ExtraFuncParams, ExtraFunctions } from "../../Logic/ExtraFunctions" import { OsmFeature } from "../../Models/OsmFeature" describe("OverlapFunc", () => { it("should give doors on the edge", () => { const door: OsmFeature = { type: "Feature", id: "node/9909268725", properties: { automatic_door: "no", door: "hinged", indoor: "door", "kerb:height": "0 cm", width: "1", id: "node/9909268725", }, geometry: { type: "Point", coordinates: [4.3494436, 50.8657928], }, } const hermanTeirlinck = { type: "Feature", id: "way/444059131", properties: { timestamp: "2022-07-27T15:15:01Z", version: 27, changeset: 124146283, user: "Pieter Vander Vennet", uid: 3818858, "addr:city": "Bruxelles - Brussel", "addr:housenumber": "88", "addr:postcode": "1000", "addr:street": "Avenue du Port - Havenlaan", building: "government", "building:levels": "5", name: "Herman Teirlinckgebouw", operator: "Vlaamse overheid", wikidata: "Q47457146", wikipedia: "nl:Herman Teirlinckgebouw", id: "way/444059131", _backend: "https://www.openstreetmap.org", _lat: "50.86622355", _lon: "4.3501212", _layer: "walls_and_buildings", _length: "380.5933566256343", "_length:km": "0.4", "_now:date": "2022-07-29", "_now:datetime": "2022-07-29 14:19:25", "_loaded:date": "2022-07-29", "_loaded:datetime": "2022-07-29 14:19:25", "_last_edit:contributor": "Pieter Vander Vennet", "_last_edit:contributor:uid": 3818858, "_last_edit:changeset": 124146283, "_last_edit:timestamp": "2022-07-27T15:15:01Z", _version_number: 27, "_geometry:type": "Polygon", _surface: "7461.252251355437", "_surface:ha": "0.7", _country: "be", }, geometry: { type: "Polygon", coordinates: [ [ [4.3493369, 50.8658274], [4.3493393, 50.8658266], [4.3494436, 50.8657928], [4.3495272, 50.8657658], [4.349623, 50.8657348], [4.3497442, 50.8656956], [4.3498441, 50.8656632], [4.3500768, 50.8655878], [4.3501619, 50.8656934], [4.3502113, 50.8657551], [4.3502729, 50.8658321], [4.3503063, 50.8658737], [4.3503397, 50.8659153], [4.3504159, 50.8660101], [4.3504177, 50.8660123], [4.3504354, 50.8660345], [4.3505348, 50.8661584], [4.3504935, 50.866172], [4.3506286, 50.8663405], [4.3506701, 50.8663271], [4.3508563, 50.8665592], [4.3509055, 50.8666206], [4.3506278, 50.8667104], [4.3504502, 50.8667675], [4.3503132, 50.8668115], [4.3502162, 50.8668427], [4.3501645, 50.8668593], [4.3499296, 50.8665664], [4.3498821, 50.8665073], [4.3498383, 50.8664527], [4.3498126, 50.8664207], [4.3497459, 50.8663376], [4.3497227, 50.8663086], [4.3496517, 50.8662201], [4.3495158, 50.8660507], [4.3493369, 50.8658274], ], ], }, bbox: { maxLat: 50.8668593, maxLon: 4.3509055, minLat: 50.8655878, minLon: 4.3493369, }, } const params: ExtraFuncParams = { getFeatureById: (id) => undefined, getFeaturesWithin: () => [[door]], memberships: undefined, } ExtraFunctions.FullPatchFeature(params, hermanTeirlinck) const overlap = (hermanTeirlinck).overlapWith("*") console.log(JSON.stringify(overlap)) expect(overlap[0].feat == door).true }) })