| 
									
										
										
										
											2021-09-22 05:02:09 +02:00
										 |  |  | import T from "./TestHelper"; | 
					
						
							| 
									
										
										
										
											2021-10-19 01:22:24 +02:00
										 |  |  | import {InPlaceReplacedmentRTSH, TurnRestrictionRSH} from "../Logic/Osm/Actions/RelationSplitHandler"; | 
					
						
							| 
									
										
										
										
											2021-09-22 05:02:09 +02:00
										 |  |  | import {OsmObject, OsmRelation} from "../Logic/Osm/OsmObject"; | 
					
						
							|  |  |  | import {Changes} from "../Logic/Osm/Changes"; | 
					
						
							| 
									
										
										
										
											2021-09-22 16:07:56 +02:00
										 |  |  | import {Utils} from "../Utils"; | 
					
						
							| 
									
										
										
										
											2021-09-22 05:02:09 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | export default class RelationSplitHandlerSpec extends T { | 
					
						
							|  |  |  |     constructor() { | 
					
						
							| 
									
										
										
										
											2021-10-19 01:22:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-22 16:07:56 +02:00
										 |  |  |         Utils.injectJsonDownloadForTests( | 
					
						
							|  |  |  |             "https://www.openstreetmap.org/api/0.6/node/1124134958/ways", | 
					
						
							| 
									
										
										
										
											2021-10-19 01:22:24 +02:00
										 |  |  |             { | 
					
						
							|  |  |  |                 "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"} | 
					
						
							|  |  |  |                 }] | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2021-09-22 16:07:56 +02:00
										 |  |  |         ) | 
					
						
							| 
									
										
										
										
											2021-10-19 01:22:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-22 16:07:56 +02:00
										 |  |  |         Utils.injectJsonDownloadForTests( | 
					
						
							|  |  |  |             "https://www.openstreetmap.org/api/0.6/relation/9572808", | 
					
						
							| 
									
										
										
										
											2021-10-19 01:22:24 +02:00
										 |  |  |             { | 
					
						
							|  |  |  |                 "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" | 
					
						
							|  |  |  |                     } | 
					
						
							|  |  |  |                 }] | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2021-09-22 16:07:56 +02:00
										 |  |  |         ) | 
					
						
							| 
									
										
										
										
											2021-10-19 01:22:24 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         Utils.injectJsonDownloadForTests( | 
					
						
							| 
									
										
										
										
											2021-09-22 16:07:56 +02:00
										 |  |  |             "https://www.openstreetmap.org/api/0.6/way/687866206/full", | 
					
						
							| 
									
										
										
										
											2021-10-19 01:22:24 +02:00
										 |  |  |             { | 
					
						
							|  |  |  |                 "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" | 
					
						
							|  |  |  |                     } | 
					
						
							|  |  |  |                 }] | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         ) | 
					
						
							| 
									
										
										
										
											2021-09-22 16:07:56 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         Utils.injectJsonDownloadForTests( | 
					
						
							| 
									
										
										
										
											2021-10-19 01:22:24 +02:00
										 |  |  |             "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","ve | 
					
						
							| 
									
										
										
										
											2021-09-22 16:07:56 +02:00
										 |  |  |         ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-22 05:02:09 +02:00
										 |  |  |         super("relationsplithandler", [ | 
					
						
							|  |  |  |             ["split 295132739", | 
					
						
							| 
									
										
										
										
											2021-10-19 01:22:24 +02:00
										 |  |  |                 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" | 
					
						
							|  |  |  |                     T.isTrue(allIds.indexOf(expected) >= 0, "didn't find the expected order of ids in the relation to test") | 
					
						
							|  |  |  |                 }], | 
					
						
							|  |  |  |             ["split https://www.openstreetmap.org/way/143298912 (turn restriction relation)", | 
					
						
							|  |  |  |                 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" | 
					
						
							|  |  |  |                     T.equals(expected, allIds) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                     // 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()) | 
					
						
							|  |  |  |                     T.equals(0, changesReverse.length, "Reverse turn restriction split did generate a changedescription, should not be needed") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             ] | 
					
						
							| 
									
										
										
										
											2021-09-22 05:02:09 +02:00
										 |  |  |         ]); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } |