@routing @testbot @turn_function Feature: Turn Function Information Background: Given the profile file """ functions = require('car') function test_setup() profile = functions.setup() profile.highway_turn_classification = { ['motorway'] = 4, ['motorway_link'] = 4, ['trunk'] = 4, ['trunk_link'] = 4, ['primary'] = 4, ['primary_link'] = 4, ['secondary'] = 3, ['secondary_link'] = 3, ['tertiary'] = 2, ['tertiary_link'] = 2, ['residential'] = 1, ['living_street'] = 1, } profile.access_turn_classification = { ['discouraged'] = 1; ['permissive'] = 1; ['private'] = 1; ['customers'] = 1; ['dismount'] = 1; } return profile end function turn_leg_string (leg) return 'speed: ' .. tostring(leg.speed) .. ', is_incoming: ' .. tostring(leg.is_incoming) .. ', is_outgoing: ' .. tostring(leg.is_outgoing) .. ', highway_turn_classification: ' .. tostring(leg.highway_turn_classification) .. ', access_turn_classification: ' .. tostring(leg.access_turn_classification) .. ', priority_class: ' .. tostring(leg.priority_class) end function print_turn (profile, turn) print ('source_restricted ' .. string.format("%s", tostring(turn.source_restricted))) print ('source_is_motorway ' .. string.format("%s", tostring(turn.source_is_motorway))) print ('source_is_link ' .. string.format("%s", tostring(turn.source_is_link))) print ('source_number_of_lanes ' .. string.format("%s", tostring(turn.source_number_of_lanes))) print ('source_highway_turn_classification ' .. string.format("%s", tostring(turn.source_highway_turn_classification))) print ('source_access_turn_classification ' .. string.format("%s", tostring(turn.source_access_turn_classification))) print ('source_speed ' .. string.format("%s", tostring(turn.source_speed))) print ('source_priority_class ' .. string.format("%s", tostring(turn.source_priority_class))) print ('source_mode ' .. string.format("%s", tostring(turn.source_mode))) print ('target_restricted ' .. string.format("%s", tostring(turn.target_restricted))) print ('target_is_motorway ' .. string.format("%s", tostring(turn.target_is_motorway))) print ('target_is_link ' .. string.format("%s", tostring(turn.target_is_link))) print ('target_number_of_lanes ' .. string.format("%s", tostring(turn.target_number_of_lanes))) print ('target_highway_turn_classification ' .. string.format("%s", tostring(turn.target_highway_turn_classification))) print ('target_access_turn_classification ' .. string.format("%s", tostring(turn.target_access_turn_classification))) print ('target_speed ' .. string.format("%s", tostring(turn.target_speed))) print ('target_priority_class ' .. string.format("%s", tostring(turn.target_priority_class))) print ('target_mode ' .. string.format("%s", tostring(turn.target_mode))) print ('number_of_roads ' .. string.format("%s", tostring(turn.number_of_roads))) if not turn.is_u_turn then for roadCount, road in ipairs(turn.roads_on_the_right) do print('roads_on_the_right [' .. tostring(roadCount) .. '] ' .. turn_leg_string(road)) end for roadCount, road in ipairs(turn.roads_on_the_left) do print('roads_on_the_left [' .. tostring(roadCount) .. '] ' .. turn_leg_string(road)) end end end return { setup = test_setup, process_way = functions.process_way, process_node = functions.process_node, process_turn = print_turn } """ Scenario: Turns should have correct information of source and target Given the node map """ a b c """ And the ways | nodes | highway | | ab | motorway | | bc | motorway | 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 "source_is_motorway true" And stdout should contain "target_is_motorway true" And stdout should contain "source_is_link false" And stdout should contain "source_priority_class 0" And stdout should contain "target_is_motorway true" And stdout should contain "target_is_link false" And stdout should contain "target_priority_class 0" Scenario: Turns should detect when turn is leaving highway Given the node map """ a b c """ And the ways | nodes | highway | lanes | | ab | motorway | 3 | | bc | motorway_link | | 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 "source_is_motorway true" And stdout should contain "source_is_link false" And stdout should contain "source_number_of_lanes 3" And stdout should contain "target_is_motorway false" And stdout should contain "target_is_link true" And stdout should contain "target_number_of_lanes 0" And stdout should contain "number_of_roads 2" Scenario: Turns should have correct information of other roads at intersection I Given the node map """ d ^ | a->b->c """ And the ways | nodes | highway | oneway | | ab | primary | yes | | bc | motorway | yes | | bd | residential | yes | 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 "number_of_roads 3" And stdout should contain "source_priority_class 4" And stdout should contain "target_priority_class 0" And stdout should contain "target_priority_class 10" # turning abd, give information about bc And stdout should contain /roads_on_the_right \[1\] speed: [0-9]+, is_incoming: false, is_outgoing: true, highway_turn_classification: 4, access_turn_classification: 0/ # turning abc, give information about bd And stdout should contain /roads_on_the_left \[1\] speed: [0-9]+, is_incoming: false, is_outgoing: true, highway_turn_classification: 1, access_turn_classification: 0/ Scenario: Turns should have correct information of other roads at intersection II Given the node map """ d | v a->b->c """ And the ways | nodes | highway | oneway | access | | ab | secondary | yes | | | bc | motorway | yes | | | db | unclassified | yes | discouraged | 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 "number_of_roads 3" # turning dbc, give information about about ab And stdout should contain /roads_on_the_right \[1\] speed: [0-9]+, is_incoming: true, is_outgoing: false, highway_turn_classification: 3, access_turn_classification: 0/ # turning abc, give information about about db And stdout should contain /roads_on_the_left \[1\] speed: [0-9]+, is_incoming: true, is_outgoing: false, highway_turn_classification: 0, access_turn_classification: 1/