forked from MapComplete/MapComplete
		
	
		
			
	
	
		
			691 lines
		
	
	
	
		
			25 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			691 lines
		
	
	
	
		
			25 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
|  | import {describe} from 'mocha' | ||
|  | import {expect} from 'chai' | ||
|  | import {Utils} from "../../../../Utils"; | ||
|  | import {OsmObject, OsmRelation} from "../../../../Logic/Osm/OsmObject"; | ||
|  | import {InPlaceReplacedmentRTSH, TurnRestrictionRSH} from "../../../../Logic/Osm/Actions/RelationSplitHandler"; | ||
|  | import {Changes} from "../../../../Logic/Osm/Changes"; | ||
|  | 
 | ||
|  | describe("RelationSplitHandler", () => { | ||
|  | 
 | ||
|  |     Utils.injectJsonDownloadForTests( | ||
|  |         "https://www.openstreetmap.org/api/0.6/node/1124134958/ways", | ||
|  |         { | ||
|  |             "version": "0.6", | ||
|  |             "generator": "CGImap 0.8.5 (2937646 spike-07.openstreetmap.org)", | ||
|  |             "copyright": "OpenStreetMap and contributors", | ||
|  |             "attribution": "http://www.openstreetmap.org/copyright", | ||
|  |             "license": "http://opendatacommons.org/licenses/odbl/1-0/", | ||
|  |             "elements": [{ | ||
|  |                 "type": "way", | ||
|  |                 "id": 97038428, | ||
|  |                 "timestamp": "2019-06-19T12:26:24Z", | ||
|  |                 "version": 6, | ||
|  |                 "changeset": 71399984, | ||
|  |                 "user": "Pieter Vander Vennet", | ||
|  |                 "uid": 3818858, | ||
|  |                 "nodes": [1124134958, 323729212, 323729351, 2542460408, 187073405], | ||
|  |                 "tags": { | ||
|  |                     "highway": "residential", | ||
|  |                     "name": "Brugs-Kerkhofstraat", | ||
|  |                     "sett:pattern": "arc", | ||
|  |                     "surface": "sett" | ||
|  |                 } | ||
|  |             }, { | ||
|  |                 "type": "way", | ||
|  |                 "id": 97038434, | ||
|  |                 "timestamp": "2019-06-19T12:26:24Z", | ||
|  |                 "version": 5, | ||
|  |                 "changeset": 71399984, | ||
|  |                 "user": "Pieter Vander Vennet", | ||
|  |                 "uid": 3818858, | ||
|  |                 "nodes": [1124134958, 1124135024, 187058607], | ||
|  |                 "tags": { | ||
|  |                     "bicycle": "use_sidepath", | ||
|  |                     "highway": "residential", | ||
|  |                     "name": "Kerkhofblommenstraat", | ||
|  |                     "sett:pattern": "arc", | ||
|  |                     "surface": "sett" | ||
|  |                 } | ||
|  |             }, { | ||
|  |                 "type": "way", | ||
|  |                 "id": 97038435, | ||
|  |                 "timestamp": "2017-12-21T21:41:08Z", | ||
|  |                 "version": 4, | ||
|  |                 "changeset": 54826837, | ||
|  |                 "user": "Jakka", | ||
|  |                 "uid": 2403313, | ||
|  |                 "nodes": [1124134958, 2576628889, 1124135035, 5298371485, 5298371495], | ||
|  |                 "tags": {"bicycle": "use_sidepath", "highway": "residential", "name": "Kerkhofblommenstraat"} | ||
|  |             }, { | ||
|  |                 "type": "way", | ||
|  |                 "id": 251446313, | ||
|  |                 "timestamp": "2019-01-07T19:22:47Z", | ||
|  |                 "version": 4, | ||
|  |                 "changeset": 66106872, | ||
|  |                 "user": "M!dgard", | ||
|  |                 "uid": 763799, | ||
|  |                 "nodes": [1124134958, 5243143198, 4555715455], | ||
|  |                 "tags": {"foot": "yes", "highway": "service"} | ||
|  |             }] | ||
|  |         } | ||
|  |     ) | ||
|  | 
 | ||
|  |     Utils.injectJsonDownloadForTests( | ||
|  |         "https://www.openstreetmap.org/api/0.6/relation/9572808", | ||
|  |         { | ||
|  |             "version": "0.6", | ||
|  |             "generator": "CGImap 0.8.5 (3128319 spike-07.openstreetmap.org)", | ||
|  |             "copyright": "OpenStreetMap and contributors", | ||
|  |             "attribution": "http://www.openstreetmap.org/copyright", | ||
|  |             "license": "http://opendatacommons.org/licenses/odbl/1-0/", | ||
|  |             "elements": [{ | ||
|  |                 "type": "relation", | ||
|  |                 "id": 9572808, | ||
|  |                 "timestamp": "2021-08-12T12:44:06Z", | ||
|  |                 "version": 11, | ||
|  |                 "changeset": 109573204, | ||
|  |                 "user": "A67-A67", | ||
|  |                 "uid": 553736, | ||
|  |                 "members": [{"type": "way", "ref": 173662702, "role": ""}, { | ||
|  |                     "type": "way", | ||
|  |                     "ref": 467606230, | ||
|  |                     "role": "" | ||
|  |                 }, {"type": "way", "ref": 126267167, "role": ""}, { | ||
|  |                     "type": "way", | ||
|  |                     "ref": 301897426, | ||
|  |                     "role": "" | ||
|  |                 }, {"type": "way", "ref": 687866206, "role": ""}, { | ||
|  |                     "type": "way", | ||
|  |                     "ref": 295132739, | ||
|  |                     "role": "" | ||
|  |                 }, {"type": "way", "ref": 690497698, "role": ""}, { | ||
|  |                     "type": "way", | ||
|  |                     "ref": 627893684, | ||
|  |                     "role": "" | ||
|  |                 }, {"type": "way", "ref": 295132741, "role": ""}, { | ||
|  |                     "type": "way", | ||
|  |                     "ref": 301903120, | ||
|  |                     "role": "" | ||
|  |                 }, {"type": "way", "ref": 672541156, "role": ""}, { | ||
|  |                     "type": "way", | ||
|  |                     "ref": 126264330, | ||
|  |                     "role": "" | ||
|  |                 }, {"type": "way", "ref": 280440853, "role": ""}, { | ||
|  |                     "type": "way", | ||
|  |                     "ref": 838499667, | ||
|  |                     "role": "" | ||
|  |                 }, {"type": "way", "ref": 838499663, "role": ""}, { | ||
|  |                     "type": "way", | ||
|  |                     "ref": 690497623, | ||
|  |                     "role": "" | ||
|  |                 }, {"type": "way", "ref": 301902946, "role": ""}, { | ||
|  |                     "type": "way", | ||
|  |                     "ref": 280460715, | ||
|  |                     "role": "" | ||
|  |                 }, {"type": "way", "ref": 972534369, "role": ""}, { | ||
|  |                     "type": "way", | ||
|  |                     "ref": 695680702, | ||
|  |                     "role": "" | ||
|  |                 }, {"type": "way", "ref": 690497860, "role": ""}, { | ||
|  |                     "type": "way", | ||
|  |                     "ref": 295410363, | ||
|  |                     "role": "" | ||
|  |                 }, {"type": "way", "ref": 823864063, "role": ""}, { | ||
|  |                     "type": "way", | ||
|  |                     "ref": 663172088, | ||
|  |                     "role": "" | ||
|  |                 }, {"type": "way", "ref": 659950322, "role": ""}, { | ||
|  |                     "type": "way", | ||
|  |                     "ref": 659950323, | ||
|  |                     "role": "" | ||
|  |                 }, {"type": "way", "ref": 230180094, "role": ""}, { | ||
|  |                     "type": "way", | ||
|  |                     "ref": 690497912, | ||
|  |                     "role": "" | ||
|  |                 }, {"type": "way", "ref": 39588765, "role": ""}], | ||
|  |                 "tags": { | ||
|  |                     "distance": "13 km", | ||
|  |                     "name": "Abdijenroute", | ||
|  |                     "network": "lcn", | ||
|  |                     "old_name": "Spoorlijn 58", | ||
|  |                     "operator": "Toerisme West-Vlaanderen", | ||
|  |                     "railway": "abandoned", | ||
|  |                     "route": "bicycle", | ||
|  |                     "type": "route", | ||
|  |                     "wikipedia": "nl:Spoorlijn 58" | ||
|  |                 } | ||
|  |             }] | ||
|  |         } | ||
|  |     ) | ||
|  | 
 | ||
|  |     Utils.injectJsonDownloadForTests( | ||
|  |         "https://www.openstreetmap.org/api/0.6/way/687866206/full", | ||
|  |         { | ||
|  |             "version": "0.6", | ||
|  |             "generator": "CGImap 0.8.5 (2601512 spike-07.openstreetmap.org)", | ||
|  |             "copyright": "OpenStreetMap and contributors", | ||
|  |             "attribution": "http://www.openstreetmap.org/copyright", | ||
|  |             "license": "http://opendatacommons.org/licenses/odbl/1-0/", | ||
|  |             "elements": [{ | ||
|  |                 "type": "node", | ||
|  |                 "id": 5273988959, | ||
|  |                 "lat": 51.1811406, | ||
|  |                 "lon": 3.2427712, | ||
|  |                 "timestamp": "2021-07-29T21:14:53Z", | ||
|  |                 "version": 6, | ||
|  |                 "changeset": 108847202, | ||
|  |                 "user": "kaart_fietser", | ||
|  |                 "uid": 11022240, | ||
|  |                 "tags": {"network:type": "node_network", "rwn_ref": "32"} | ||
|  |             }, { | ||
|  |                 "type": "node", | ||
|  |                 "id": 6448669326, | ||
|  |                 "lat": 51.1811346, | ||
|  |                 "lon": 3.242891, | ||
|  |                 "timestamp": "2019-05-04T22:44:12Z", | ||
|  |                 "version": 1, | ||
|  |                 "changeset": 69891295, | ||
|  |                 "user": "Pieter Vander Vennet", | ||
|  |                 "uid": 3818858, | ||
|  |                 "tags": {"barrier": "bollard"} | ||
|  |             }, { | ||
|  |                 "type": "way", | ||
|  |                 "id": 687866206, | ||
|  |                 "timestamp": "2019-05-06T20:52:20Z", | ||
|  |                 "version": 2, | ||
|  |                 "changeset": 69951497, | ||
|  |                 "user": "noelbov", | ||
|  |                 "uid": 8054928, | ||
|  |                 "nodes": [6448669326, 5273988959], | ||
|  |                 "tags": { | ||
|  |                     "highway": "cycleway", | ||
|  |                     "name": "Abdijenroute", | ||
|  |                     "railway": "abandoned", | ||
|  |                     "surface": "asphalt" | ||
|  |                 } | ||
|  |             }] | ||
|  |         } | ||
|  |     ) | ||
|  | 
 | ||
|  |     Utils.injectJsonDownloadForTests( | ||
|  |         "https://www.openstreetmap.org/api/0.6/way/690497698/full", | ||
|  |         { | ||
|  |             "version": "0.6", | ||
|  |             "generator": "CGImap 0.8.5 (3023311 spike-07.openstreetmap.org)", | ||
|  |             "copyright": "OpenStreetMap and contributors", | ||
|  |             "attribution": "http://www.openstreetmap.org/copyright", | ||
|  |             "license": "http://opendatacommons.org/licenses/odbl/1-0/", | ||
|  |             "elements": [{ | ||
|  |                 "type": "node", | ||
|  |                 "id": 170497152, | ||
|  |                 "lat": 51.1832353, | ||
|  |                 "lon": 3.2498759, | ||
|  |                 "timestamp": "2018-04-24T00:29:37Z", | ||
|  |                 "version": 7, | ||
|  |                 "changeset": 58357376, | ||
|  |                 "user": "Pieter Vander Vennet", | ||
|  |                 "uid": 3818858 | ||
|  |             }, { | ||
|  |                 "type": "node", | ||
|  |                 "id": 2988218625, | ||
|  |                 "lat": 51.1835053, | ||
|  |                 "lon": 3.2503067, | ||
|  |                 "timestamp": "2018-09-24T21:48:46Z", | ||
|  |                 "version": 2, | ||
|  |                 "changeset": 62895918, | ||
|  |                 "user": "A67-A67", | ||
|  |                 "uid": 553736 | ||
|  |             }, { | ||
|  |                 "type": "node", | ||
|  |                 "id": 5273988967, | ||
|  |                 "lat": 51.182659, | ||
|  |                 "lon": 3.249004, | ||
|  |                 "timestamp": "2017-12-09T18:40:21Z", | ||
|  |                 "version": 1, | ||
|  |                 "changeset": 54493533, | ||
|  |                 "user": "CacherB", | ||
|  |                 "uid": 1999108 | ||
|  |             }, { | ||
|  |                 "type": "way", | ||
|  |                 "id": 690497698, | ||
|  |                 "timestamp": "2021-07-29T21:14:53Z", | ||
|  |                 "version": 3, | ||
|  |                 "changeset": 108847202, | ||
|  |                 "user": "kaart_fietser", | ||
|  |                 "uid": 11022240, | ||
|  |                 "nodes": [2988218625, 170497152, 5273988967], | ||
|  |                 "tags": { | ||
|  |                     "highway": "cycleway", | ||
|  |                     "lit": "no", | ||
|  |                     "name": "Abdijenroute", | ||
|  |                     "oneway": "no", | ||
|  |                     "railway": "abandoned", | ||
|  |                     "surface": "compacted" | ||
|  |                 } | ||
|  |             }] | ||
|  |         } | ||
|  |     ) | ||
|  |     Utils.injectJsonDownloadForTests( | ||
|  |         "https://www.openstreetmap.org/api/0.6/relation/4374576", | ||
|  |         { | ||
|  |             "version": "0.6", | ||
|  |             "generator": "CGImap 0.8.5 (1266692 spike-06.openstreetmap.org)", | ||
|  |             "copyright": "OpenStreetMap and contributors", | ||
|  |             "attribution": "http://www.openstreetmap.org/copyright", | ||
|  |             "license": "http://opendatacommons.org/licenses/odbl/1-0/", | ||
|  |             "elements": [{ | ||
|  |                 "type": "relation", | ||
|  |                 "id": 4374576, | ||
|  |                 "timestamp": "2014-12-23T21:42:27Z", | ||
|  |                 "version": 2, | ||
|  |                 "changeset": 27660623, | ||
|  |                 "user": "escada", | ||
|  |                 "uid": 436365, | ||
|  |                 "members": [{"type": "way", "ref": 318616190, "role": "from"}, { | ||
|  |                     "type": "node", | ||
|  |                     "ref": 1407529979, | ||
|  |                     "role": "via" | ||
|  |                 }, {"type": "way", "ref": 143298912, "role": "to"}], | ||
|  |                 "tags": {"restriction": "no_right_turn", "type": "restriction"} | ||
|  |             }] | ||
|  |         } | ||
|  |     ) | ||
|  | 
 | ||
|  |     Utils.injectJsonDownloadForTests( | ||
|  |         "https://www.openstreetmap.org/api/0.6/way/143298912/full", | ||
|  |         { | ||
|  |             "version": "0.6", | ||
|  |             "generator": "CGImap 0.8.5 (4046166 spike-07.openstreetmap.org)", | ||
|  |             "copyright": "OpenStreetMap and contributors", | ||
|  |             "attribution": "http://www.openstreetmap.org/copyright", | ||
|  |             "license": "http://opendatacommons.org/licenses/odbl/1-0/", | ||
|  |             "elements": [{ | ||
|  |                 "type": "node", | ||
|  |                 "id": 26343912, | ||
|  |                 "lat": 51.2146847, | ||
|  |                 "lon": 3.2397007, | ||
|  |                 "timestamp": "2015-04-11T10:40:56Z", | ||
|  |                 "version": 5, | ||
|  |                 "changeset": 30139621, | ||
|  |                 "user": "M!dgard", | ||
|  |                 "uid": 763799 | ||
|  |             }, { | ||
|  |                 "type": "node", | ||
|  |                 "id": 26343913, | ||
|  |                 "lat": 51.2161912, | ||
|  |                 "lon": 3.2386907, | ||
|  |                 "timestamp": "2015-04-11T10:40:56Z", | ||
|  |                 "version": 6, | ||
|  |                 "changeset": 30139621, | ||
|  |                 "user": "M!dgard", | ||
|  |                 "uid": 763799 | ||
|  |             }, { | ||
|  |                 "type": "node", | ||
|  |                 "id": 26343914, | ||
|  |                 "lat": 51.2193456, | ||
|  |                 "lon": 3.2360696, | ||
|  |                 "timestamp": "2015-04-11T10:40:56Z", | ||
|  |                 "version": 5, | ||
|  |                 "changeset": 30139621, | ||
|  |                 "user": "M!dgard", | ||
|  |                 "uid": 763799 | ||
|  |             }, { | ||
|  |                 "type": "node", | ||
|  |                 "id": 26343915, | ||
|  |                 "lat": 51.2202816, | ||
|  |                 "lon": 3.2352429, | ||
|  |                 "timestamp": "2015-04-11T10:40:56Z", | ||
|  |                 "version": 5, | ||
|  |                 "changeset": 30139621, | ||
|  |                 "user": "M!dgard", | ||
|  |                 "uid": 763799 | ||
|  |             }, { | ||
|  |                 "type": "node", | ||
|  |                 "id": 875668688, | ||
|  |                 "lat": 51.2131868, | ||
|  |                 "lon": 3.2406009, | ||
|  |                 "timestamp": "2015-04-11T10:40:56Z", | ||
|  |                 "version": 4, | ||
|  |                 "changeset": 30139621, | ||
|  |                 "user": "M!dgard", | ||
|  |                 "uid": 763799 | ||
|  |             }, { | ||
|  |                 "type": "node", | ||
|  |                 "id": 1109632153, | ||
|  |                 "lat": 51.2207068, | ||
|  |                 "lon": 3.234882, | ||
|  |                 "timestamp": "2015-04-11T10:40:55Z", | ||
|  |                 "version": 3, | ||
|  |                 "changeset": 30139621, | ||
|  |                 "user": "M!dgard", | ||
|  |                 "uid": 763799 | ||
|  |             }, { | ||
|  |                 "type": "node", | ||
|  |                 "id": 1109632154, | ||
|  |                 "lat": 51.220784, | ||
|  |                 "lon": 3.2348394, | ||
|  |                 "timestamp": "2021-05-30T08:01:17Z", | ||
|  |                 "version": 4, | ||
|  |                 "changeset": 105557550, | ||
|  |                 "user": "albertino", | ||
|  |                 "uid": 499281 | ||
|  |             }, { | ||
|  |                 "type": "node", | ||
|  |                 "id": 1109632177, | ||
|  |                 "lat": 51.2205082, | ||
|  |                 "lon": 3.2350441, | ||
|  |                 "timestamp": "2015-04-11T10:40:55Z", | ||
|  |                 "version": 3, | ||
|  |                 "changeset": 30139621, | ||
|  |                 "user": "M!dgard", | ||
|  |                 "uid": 763799 | ||
|  |             }, { | ||
|  |                 "type": "node", | ||
|  |                 "id": 1407529961, | ||
|  |                 "lat": 51.2168476, | ||
|  |                 "lon": 3.2381772, | ||
|  |                 "timestamp": "2015-04-11T10:40:55Z", | ||
|  |                 "version": 2, | ||
|  |                 "changeset": 30139621, | ||
|  |                 "user": "M!dgard", | ||
|  |                 "uid": 763799 | ||
|  |             }, { | ||
|  |                 "type": "node", | ||
|  |                 "id": 1407529969, | ||
|  |                 "lat": 51.2155155, | ||
|  |                 "lon": 3.23917, | ||
|  |                 "timestamp": "2011-08-21T20:08:27Z", | ||
|  |                 "version": 1, | ||
|  |                 "changeset": 9088257, | ||
|  |                 "user": "toeklk", | ||
|  |                 "uid": 219908 | ||
|  |             }, { | ||
|  |                 "type": "node", | ||
|  |                 "id": 1407529979, | ||
|  |                 "lat": 51.212694, | ||
|  |                 "lon": 3.2409595, | ||
|  |                 "timestamp": "2015-04-11T10:40:55Z", | ||
|  |                 "version": 6, | ||
|  |                 "changeset": 30139621, | ||
|  |                 "user": "M!dgard", | ||
|  |                 "uid": 763799, | ||
|  |                 "tags": {"highway": "traffic_signals"} | ||
|  |             }, { | ||
|  |                 "type": "node", | ||
|  |                 "id": 1634435395, | ||
|  |                 "lat": 51.2129189, | ||
|  |                 "lon": 3.2408257, | ||
|  |                 "timestamp": "2012-02-15T19:37:51Z", | ||
|  |                 "version": 1, | ||
|  |                 "changeset": 10695640, | ||
|  |                 "user": "Eimai", | ||
|  |                 "uid": 6072 | ||
|  |             }, { | ||
|  |                 "type": "node", | ||
|  |                 "id": 1634435396, | ||
|  |                 "lat": 51.2132508, | ||
|  |                 "lon": 3.2405417, | ||
|  |                 "timestamp": "2012-02-15T19:37:51Z", | ||
|  |                 "version": 1, | ||
|  |                 "changeset": 10695640, | ||
|  |                 "user": "Eimai", | ||
|  |                 "uid": 6072 | ||
|  |             }, { | ||
|  |                 "type": "node", | ||
|  |                 "id": 1634435397, | ||
|  |                 "lat": 51.2133918, | ||
|  |                 "lon": 3.2404416, | ||
|  |                 "timestamp": "2015-04-11T10:40:55Z", | ||
|  |                 "version": 2, | ||
|  |                 "changeset": 30139621, | ||
|  |                 "user": "M!dgard", | ||
|  |                 "uid": 763799 | ||
|  |             }, { | ||
|  |                 "type": "node", | ||
|  |                 "id": 1974988033, | ||
|  |                 "lat": 51.2127459, | ||
|  |                 "lon": 3.240928, | ||
|  |                 "timestamp": "2012-10-20T12:24:13Z", | ||
|  |                 "version": 1, | ||
|  |                 "changeset": 13566903, | ||
|  |                 "user": "skyman81", | ||
|  |                 "uid": 955688 | ||
|  |             }, { | ||
|  |                 "type": "node", | ||
|  |                 "id": 3250129361, | ||
|  |                 "lat": 51.2127906, | ||
|  |                 "lon": 3.2409016, | ||
|  |                 "timestamp": "2018-12-19T00:00:33Z", | ||
|  |                 "version": 2, | ||
|  |                 "changeset": 65596519, | ||
|  |                 "user": "beardhatcode", | ||
|  |                 "uid": 5439560, | ||
|  |                 "tags": {"crossing": "traffic_signals", "highway": "crossing"} | ||
|  |             }, { | ||
|  |                 "type": "node", | ||
|  |                 "id": 3250129363, | ||
|  |                 "lat": 51.2149189, | ||
|  |                 "lon": 3.2395571, | ||
|  |                 "timestamp": "2015-04-11T10:40:56Z", | ||
|  |                 "version": 2, | ||
|  |                 "changeset": 30139621, | ||
|  |                 "user": "M!dgard", | ||
|  |                 "uid": 763799 | ||
|  |             }, { | ||
|  |                 "type": "node", | ||
|  |                 "id": 3450326133, | ||
|  |                 "lat": 51.2139571, | ||
|  |                 "lon": 3.2401205, | ||
|  |                 "timestamp": "2015-04-11T10:40:26Z", | ||
|  |                 "version": 1, | ||
|  |                 "changeset": 30139621, | ||
|  |                 "user": "M!dgard", | ||
|  |                 "uid": 763799 | ||
|  |             }, { | ||
|  |                 "type": "node", | ||
|  |                 "id": 3450326135, | ||
|  |                 "lat": 51.2181385, | ||
|  |                 "lon": 3.2370893, | ||
|  |                 "timestamp": "2015-04-11T10:40:26Z", | ||
|  |                 "version": 1, | ||
|  |                 "changeset": 30139621, | ||
|  |                 "user": "M!dgard", | ||
|  |                 "uid": 763799 | ||
|  |             }, { | ||
|  |                 "type": "node", | ||
|  |                 "id": 4794847239, | ||
|  |                 "lat": 51.2191224, | ||
|  |                 "lon": 3.2362584, | ||
|  |                 "timestamp": "2019-08-27T23:07:05Z", | ||
|  |                 "version": 2, | ||
|  |                 "changeset": 73816461, | ||
|  |                 "user": "Pieter Vander Vennet", | ||
|  |                 "uid": 3818858 | ||
|  |             }, { | ||
|  |                 "type": "node", | ||
|  |                 "id": 8493044168, | ||
|  |                 "lat": 51.2130348, | ||
|  |                 "lon": 3.2407284, | ||
|  |                 "timestamp": "2021-03-06T21:52:51Z", | ||
|  |                 "version": 1, | ||
|  |                 "changeset": 100555232, | ||
|  |                 "user": "kaart_fietser", | ||
|  |                 "uid": 11022240, | ||
|  |                 "tags": {"highway": "traffic_signals", "traffic_signals": "traffic_lights"} | ||
|  |             }, { | ||
|  |                 "type": "node", | ||
|  |                 "id": 8792687918, | ||
|  |                 "lat": 51.2207505, | ||
|  |                 "lon": 3.2348579, | ||
|  |                 "timestamp": "2021-06-02T18:27:15Z", | ||
|  |                 "version": 1, | ||
|  |                 "changeset": 105735092, | ||
|  |                 "user": "albertino", | ||
|  |                 "uid": 499281 | ||
|  |             }, { | ||
|  |                 "type": "way", | ||
|  |                 "id": 143298912, | ||
|  |                 "timestamp": "2021-06-02T18:27:15Z", | ||
|  |                 "version": 15, | ||
|  |                 "changeset": 105735092, | ||
|  |                 "user": "albertino", | ||
|  |                 "uid": 499281, | ||
|  |                 "nodes": [1407529979, 1974988033, 3250129361, 1634435395, 8493044168, 875668688, 1634435396, 1634435397, 3450326133, 26343912, 3250129363, 1407529969, 26343913, 1407529961, 3450326135, 4794847239, 26343914, 26343915, 1109632177, 1109632153, 8792687918, 1109632154], | ||
|  |                 "tags": { | ||
|  |                     "cycleway:right": "track", | ||
|  |                     "highway": "primary", | ||
|  |                     "lanes": "2", | ||
|  |                     "lit": "yes", | ||
|  |                     "maxspeed": "70", | ||
|  |                     "name": "Buiten Kruisvest", | ||
|  |                     "oneway": "yes", | ||
|  |                     "ref": "R30", | ||
|  |                     "surface": "asphalt", | ||
|  |                     "wikipedia": "nl:Buiten Kruisvest" | ||
|  |                 } | ||
|  |             }] | ||
|  |         } | ||
|  |     ) | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  |     it("should split all cycling relation (split 295132739)", | ||
|  |         async () => { | ||
|  |             // Lets mimick a split action of https://www.openstreetmap.org/way/295132739
 | ||
|  | 
 | ||
|  |             const relation: OsmRelation = <OsmRelation>await OsmObject.DownloadObjectAsync("relation/9572808") | ||
|  |             const originalNodeIds = [5273988967, | ||
|  |                 170497153, | ||
|  |                 1507524582, | ||
|  |                 4524321710, | ||
|  |                 170497155, | ||
|  |                 170497157, | ||
|  |                 170497158, | ||
|  |                 3208166179, | ||
|  |                 1507524610, | ||
|  |                 170497160, | ||
|  |                 3208166178, | ||
|  |                 1507524573, | ||
|  |                 1575932830, | ||
|  |                 6448669326] | ||
|  | 
 | ||
|  |             const withSplit = [[5273988967, | ||
|  |                 170497153, | ||
|  |                 1507524582, | ||
|  |                 4524321710, | ||
|  |                 170497155, | ||
|  |                 170497157, | ||
|  |                 170497158], | ||
|  |                 [ | ||
|  |                     3208166179, | ||
|  |                     1507524610, | ||
|  |                     170497160, | ||
|  |                     3208166178, | ||
|  |                     1507524573, | ||
|  |                     1575932830, | ||
|  |                     6448669326]] | ||
|  | 
 | ||
|  |             const splitter = new InPlaceReplacedmentRTSH( | ||
|  |                 { | ||
|  |                     relation: relation, | ||
|  |                     originalWayId: 295132739, | ||
|  |                     allWayIdsInOrder: [295132739, -1], | ||
|  |                     originalNodes: originalNodeIds, | ||
|  |                     allWaysNodesInOrder: withSplit | ||
|  |                 }, "no-theme") | ||
|  |             const changeDescription = await splitter.CreateChangeDescriptions(new Changes()) | ||
|  |             const allIds = changeDescription[0].changes["members"].map(m => m.ref).join(",") | ||
|  |             const expected = "687866206,295132739,-1,690497698" | ||
|  |             expect(allIds.indexOf(expected) >= 0, "didn't find the expected order of ids in the relation to test").true | ||
|  |         }) | ||
|  |      | ||
|  |     it( | ||
|  |         "should split turn restrictions (split of https://www.openstreetmap.org/way/143298912)", | ||
|  |         async () => { | ||
|  | 
 | ||
|  |             const relation: OsmRelation = <OsmRelation>await OsmObject.DownloadObjectAsync("relation/4374576") | ||
|  |             const originalNodeIds = | ||
|  |                 [ | ||
|  |                     1407529979, | ||
|  |                     1974988033, | ||
|  |                     3250129361, | ||
|  |                     1634435395, | ||
|  |                     8493044168, | ||
|  |                     875668688, | ||
|  |                     1634435396, | ||
|  |                     1634435397, | ||
|  |                     3450326133, | ||
|  |                     26343912, | ||
|  |                     3250129363, | ||
|  |                     1407529969, | ||
|  |                     26343913, | ||
|  |                     1407529961, | ||
|  |                     3450326135, | ||
|  |                     4794847239, | ||
|  |                     26343914, | ||
|  |                     26343915, | ||
|  |                     1109632177, | ||
|  |                     1109632153, | ||
|  |                     8792687918, | ||
|  |                     1109632154 | ||
|  | 
 | ||
|  |                 ] | ||
|  | 
 | ||
|  |             const withSplit = [[ | ||
|  |                 1407529979, // The via point
 | ||
|  |                 1974988033, | ||
|  |                 3250129361, | ||
|  |                 1634435395, | ||
|  |                 8493044168, | ||
|  |                 875668688, | ||
|  |                 1634435396, | ||
|  |                 1634435397, | ||
|  |                 3450326133, | ||
|  |                 26343912, | ||
|  |                 3250129363, | ||
|  |                 1407529969, | ||
|  |                 26343913], | ||
|  |                 [ | ||
|  |                     1407529961, | ||
|  |                     3450326135, | ||
|  |                     4794847239, | ||
|  |                     26343914, | ||
|  |                     26343915, | ||
|  |                     1109632177, | ||
|  |                     1109632153, | ||
|  |                     8792687918, | ||
|  |                     1109632154 | ||
|  | 
 | ||
|  |                 ]] | ||
|  | 
 | ||
|  |             const splitter = new TurnRestrictionRSH( | ||
|  |                 { | ||
|  |                     relation: relation, | ||
|  |                     originalWayId: 143298912, | ||
|  |                     allWayIdsInOrder: [-1, 143298912], | ||
|  |                     originalNodes: originalNodeIds, | ||
|  |                     allWaysNodesInOrder: withSplit | ||
|  |                 }, "no-theme") | ||
|  |             const changeDescription = await splitter.CreateChangeDescriptions(new Changes()) | ||
|  |             const allIds = changeDescription[0].changes["members"].map(m => m.type + "/" + m.ref + "-->" + m.role).join(",") | ||
|  |             const expected = "way/318616190-->from,node/1407529979-->via,way/-1-->to" | ||
|  |             expect(allIds).deep.equal(expected) | ||
|  | 
 | ||
|  | 
 | ||
|  |             // Reversing the ids has no effect
 | ||
|  |             const splitterReverse = new TurnRestrictionRSH( | ||
|  |                 { | ||
|  |                     relation: relation, | ||
|  |                     originalWayId: 143298912, | ||
|  |                     allWayIdsInOrder: [143298912, -1], | ||
|  |                     originalNodes: originalNodeIds, | ||
|  |                     allWaysNodesInOrder: withSplit | ||
|  |                 }, "no-theme") | ||
|  |             const changesReverse = await splitterReverse.CreateChangeDescriptions(new Changes()) | ||
|  |             expect(changesReverse.length).deep.equal(0) | ||
|  | 
 | ||
|  |         } | ||
|  |     ) | ||
|  | }) |