152 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Gherkin
		
	
	
	
	
	
			
		
		
	
	
			152 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Gherkin
		
	
	
	
	
	
| @extract
 | |
| Feature: osrm-extract lua ways:get_nodes()
 | |
| 
 | |
|     Scenario: osrm-extract - Passing base file
 | |
|         Given the profile file
 | |
|         """
 | |
|         functions = require('testbot')
 | |
| 
 | |
|         functions.process_way = function(profile, way, result)
 | |
|           for _, node in ipairs(way:get_nodes()) do
 | |
|             print('node id ' .. node:id())
 | |
|           end
 | |
|           result.forward_mode = mode.driving
 | |
|           result.forward_speed = 1
 | |
|         end
 | |
| 
 | |
|         return functions
 | |
|         """
 | |
|         And the node map
 | |
|             """
 | |
|             a b
 | |
|             """
 | |
|         And the ways
 | |
|             | nodes |
 | |
|             | ab    |
 | |
|         And the data has been saved to disk
 | |
| 
 | |
|         When I run "osrm-extract --profile {profile_file} {osm_file}"
 | |
|         Then it should exit successfully
 | |
|         And stdout should contain "node id 1"
 | |
|         And stdout should contain "node id 2"
 | |
| 
 | |
| 
 | |
|     Scenario: osrm-extract location-dependent data without add-locations-to-ways preprocessing and node locations cache
 | |
|         Given the profile file
 | |
|         """
 | |
|         functions = require('testbot')
 | |
| 
 | |
|         functions.process_way = function(profile, way, result, relations)
 | |
|            print(way:get_location_tag('driving_side'))
 | |
|         end
 | |
| 
 | |
|         return functions
 | |
|         """
 | |
|         And the node map
 | |
|             """
 | |
|             a b
 | |
|             """
 | |
|         And the ways
 | |
|             | nodes |
 | |
|             | ab    |
 | |
|         And the data has been saved to disk
 | |
| 
 | |
|         When I try to run "osrm-extract --profile {profile_file} {osm_file} --location-dependent-data test/data/regions/null-island.geojson --use-locations-cache=false"
 | |
|         Then it should exit with an error
 | |
|         And stderr should contain "invalid location"
 | |
| 
 | |
|     Scenario: osrm-extract location-dependent data
 | |
|         Given the profile file
 | |
|         """
 | |
|         functions = require('testbot')
 | |
| 
 | |
|         functions.process_way = function(profile, way, result, relations)
 | |
|            for _, key in ipairs({'answer', 'boolean', 'object', 'array'}) do
 | |
|              print (key .. ' ' .. tostring(way:get_location_tag(key)))
 | |
|            end
 | |
|            result.forward_mode = mode.driving
 | |
|            result.forward_speed = 1
 | |
|         end
 | |
| 
 | |
|         return functions
 | |
|         """
 | |
|         And the node map
 | |
|             """
 | |
|             a b
 | |
|             """
 | |
|         And the ways with locations
 | |
|             | nodes |
 | |
|             | ab    |
 | |
|         And the data has been saved to disk
 | |
| 
 | |
|         When I run "osrm-extract --profile {profile_file} {osm_file} --location-dependent-data test/data/regions/null-island.geojson  --use-locations-cache=false"
 | |
|         Then it should exit successfully
 | |
|         And stdout should contain "answer 42"
 | |
|         And stdout should contain "boolean true"
 | |
|         And stdout should contain "array nil"
 | |
|         And stdout should contain "object nil"
 | |
| 
 | |
| 
 | |
|     Scenario: osrm-extract location-dependent data with multi-polygons
 | |
|         Given the profile file
 | |
|         """
 | |
|         functions = require('testbot')
 | |
| 
 | |
|         functions.process_way = function(profile, way, result, relations)
 | |
|            print('ISO3166-1 ' .. (way:get_location_tag('ISO3166-1') or 'none'))
 | |
|            print('answer ' .. (way:get_location_tag('answer') or 'none'))
 | |
|            result.forward_mode = mode.driving
 | |
|            result.forward_speed = 1
 | |
|         end
 | |
| 
 | |
|         return functions
 | |
|         """
 | |
|         And the node locations
 | |
|             | node |        lat |         lon | id |
 | |
|             | a    | 22.4903670 | 113.9455227 |  1 |
 | |
|             | b    | 22.4901701 | 113.9455899 |  2 |
 | |
|             | c    | 22.4901852 | 113.9458608 |  3 |
 | |
|             | d    | 22.4904033 | 113.9456999 |  4 |
 | |
|             | e    |        1.1 |           1 |  5 |
 | |
|             | f    |        1.2 |           1 |  6 |
 | |
|         And the ways with locations
 | |
|             | nodes | #              |
 | |
|             | ab    | Hong Kong      |
 | |
|             | cd    | China Mainland |
 | |
|             | ef    | Null Island    |
 | |
|         And the data has been saved to disk
 | |
| 
 | |
|         When I run "osrm-extract --profile {profile_file} {osm_file} --location-dependent-data test/data/regions/null-island.geojson --location-dependent-data test/data/regions/hong-kong.geojson --use-locations-cache=false"
 | |
|         Then it should exit successfully
 | |
|         And stdout should not contain "1 GeoJSON polygon"
 | |
|         And stdout should contain "2 GeoJSON polygons"
 | |
|         And stdout should contain "ISO3166-1 HK"
 | |
|         And stdout should contain "ISO3166-1 none"
 | |
|         And stdout should contain "answer 42"
 | |
| 
 | |
|     Scenario: osrm-extract location-dependent data via locations cache
 | |
|         Given the profile file
 | |
|         """
 | |
|         functions = require('testbot')
 | |
| 
 | |
|         functions.process_way = function(profile, way, result, relations)
 | |
|            print ('answer ' .. tostring(way:get_location_tag('answer')))
 | |
|            result.forward_mode = mode.driving
 | |
|            result.forward_speed = 1
 | |
|         end
 | |
| 
 | |
|         return functions
 | |
|         """
 | |
|         And the node map
 | |
|             """
 | |
|             a b
 | |
|             """
 | |
|         And the ways
 | |
|             | nodes |
 | |
|             | ab    |
 | |
|         And the data has been saved to disk
 | |
| 
 | |
|         When I run "osrm-extract --profile {profile_file} {osm_file} --location-dependent-data test/data/regions/null-island.geojson"
 | |
|         Then it should exit successfully
 | |
|         And stdout should contain "answer 42"
 |