316 lines
		
	
	
		
			8.8 KiB
		
	
	
	
		
			Gherkin
		
	
	
	
	
	
			
		
		
	
	
			316 lines
		
	
	
		
			8.8 KiB
		
	
	
	
		
			Gherkin
		
	
	
	
	
	
@routing @approach @testbot
 | 
						|
Feature: Approach parameter
 | 
						|
 | 
						|
    Background:
 | 
						|
        Given a grid size of 10 meters
 | 
						|
 | 
						|
    Scenario: Start End same approach, option unrestricted for Start and End
 | 
						|
        Given the profile "testbot"
 | 
						|
        And the node map
 | 
						|
            """
 | 
						|
               s        e
 | 
						|
            a------b------c
 | 
						|
            """
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes |
 | 
						|
            | ab    |
 | 
						|
            | bc    |
 | 
						|
 | 
						|
        When I route I should get
 | 
						|
            | from | to | approaches                | route |
 | 
						|
            | s    | e  | unrestricted unrestricted | ab,bc |
 | 
						|
 | 
						|
    Scenario: Start End same approach, option unrestricted for Start and curb for End
 | 
						|
        Given the profile "testbot"
 | 
						|
        And the node map
 | 
						|
            """
 | 
						|
               s        e
 | 
						|
            a------b------c
 | 
						|
            """
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes |
 | 
						|
            | ab    |
 | 
						|
            | bc    |
 | 
						|
 | 
						|
        When I route I should get
 | 
						|
            | from | to | approaches        | route    |
 | 
						|
            | s    | e  | unrestricted curb | ab,bc,bc |
 | 
						|
 | 
						|
    Scenario: Start End opposite approach, option unrestricted for Start and End
 | 
						|
        Given the profile "testbot"
 | 
						|
        And the node map
 | 
						|
            """
 | 
						|
               s
 | 
						|
            a------b------c
 | 
						|
                        e
 | 
						|
            """
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes |
 | 
						|
            | ab    |
 | 
						|
            | bc    |
 | 
						|
 | 
						|
        When I route I should get
 | 
						|
            | from | to | approaches                | route |
 | 
						|
            | s    | e  | unrestricted unrestricted | ab,bc |
 | 
						|
 | 
						|
    Scenario: Start End opposite approach, option unrestricted for Start and curb for End
 | 
						|
        Given the profile "testbot"
 | 
						|
        And the node map
 | 
						|
            """
 | 
						|
               s
 | 
						|
            a------b------c
 | 
						|
                        e
 | 
						|
            """
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes |
 | 
						|
            | ab    |
 | 
						|
            | bc    |
 | 
						|
 | 
						|
        When I route I should get
 | 
						|
            | from | to | approaches        | route |
 | 
						|
            | s    | e  | unrestricted curb | ab,bc |
 | 
						|
 | 
						|
 | 
						|
    ###############
 | 
						|
    # Oneway Test #
 | 
						|
    ###############
 | 
						|
 | 
						|
 | 
						|
    Scenario: Test on oneway segment, Start End same approach, option unrestricted for Start and End
 | 
						|
        Given the profile "testbot"
 | 
						|
        And the node map
 | 
						|
            """
 | 
						|
               s        e
 | 
						|
            a------b------c
 | 
						|
            """
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes | oneway |
 | 
						|
            | ab    | yes    |
 | 
						|
            | bc    | yes    |
 | 
						|
 | 
						|
        When I route I should get
 | 
						|
            | from | to | approaches                | route |
 | 
						|
            | s    | e  | unrestricted unrestricted | ab,bc |
 | 
						|
 | 
						|
    Scenario: Test on oneway segment, Start End same approach, option unrestricted for Start and curb for End
 | 
						|
        Given the profile "testbot"
 | 
						|
        And the node map
 | 
						|
            """
 | 
						|
               s        e
 | 
						|
            a------b------c
 | 
						|
            """
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes | oneway |
 | 
						|
            | ab    | yes    |
 | 
						|
            | bc    | yes    |
 | 
						|
 | 
						|
        When I route I should get
 | 
						|
            | from | to | approaches        | route    |
 | 
						|
            | s    | e  | unrestricted curb | ab,bc |
 | 
						|
 | 
						|
    Scenario: Test on oneway segment, Start End opposite approach, option unrestricted for Start and End
 | 
						|
        Given the profile "testbot"
 | 
						|
        And the node map
 | 
						|
            """
 | 
						|
               s
 | 
						|
            a------b------c
 | 
						|
                        e
 | 
						|
            """
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes | oneway |
 | 
						|
            | ab    | yes    |
 | 
						|
            | bc    | yes    |
 | 
						|
 | 
						|
        When I route I should get
 | 
						|
            | from | to | approaches                | route |
 | 
						|
            | s    | e  | unrestricted unrestricted | ab,bc |
 | 
						|
 | 
						|
    Scenario: Test on oneway segment, Start End opposite approach, option unrestricted for Start and curb for End
 | 
						|
        Given the profile "testbot"
 | 
						|
        And the node map
 | 
						|
            """
 | 
						|
               s
 | 
						|
            a------b------c
 | 
						|
                        e
 | 
						|
            """
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes | oneway |
 | 
						|
            | ab    | yes    |
 | 
						|
            | bc    | yes    |
 | 
						|
 | 
						|
        When I route I should get
 | 
						|
            | from | to | approaches        | route |
 | 
						|
            | s    | e  | unrestricted curb | ab,bc |
 | 
						|
 | 
						|
    ##############
 | 
						|
    # UTurn Test #
 | 
						|
    ##############
 | 
						|
 | 
						|
    Scenario: UTurn test, router can't found a route because uturn unauthorized on the segment selected
 | 
						|
        Given the profile "testbot"
 | 
						|
        And the node map
 | 
						|
            """
 | 
						|
               s        e
 | 
						|
            a------b------c
 | 
						|
            """
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes |
 | 
						|
            | ab    |
 | 
						|
            | bc    |
 | 
						|
 | 
						|
        And the relations
 | 
						|
            | type        | way:from | way:to | node:via | restriction |
 | 
						|
            | restriction | bc       | bc     | c        | no_u_turn   |
 | 
						|
 | 
						|
        When I route I should get
 | 
						|
            | from | to | approaches        | route |
 | 
						|
            | s    | e  | unrestricted curb |       |
 | 
						|
 | 
						|
 | 
						|
    Scenario: UTurn test, router can find a route because he can use the roundabout
 | 
						|
        Given the profile "testbot"
 | 
						|
        And the node map
 | 
						|
            """
 | 
						|
                             h
 | 
						|
               s        e  /   \
 | 
						|
            a------b------c     g
 | 
						|
                           \   /
 | 
						|
                             f
 | 
						|
            """
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes | junction   |
 | 
						|
            | ab    |            |
 | 
						|
            | bc    |            |
 | 
						|
            | cfghc | roundabout |
 | 
						|
 | 
						|
        And the relations
 | 
						|
            | type        | way:from | way:to | node:via | restriction |
 | 
						|
            | restriction | bc       | bc     | c        | no_u_turn   |
 | 
						|
 | 
						|
        When I route I should get
 | 
						|
            | from | to | approaches        | route    |
 | 
						|
            | s    | e  | unrestricted curb | ab,bc,bc |
 | 
						|
 | 
						|
 | 
						|
    Scenario: Start End same approach, option unrestricted for Start and curb for End, left-hand driving
 | 
						|
        Given the profile file
 | 
						|
        """
 | 
						|
        local functions = require('testbot')
 | 
						|
        local testbot_process_way = functions.process_way
 | 
						|
        functions.process_way = function(profile, way, result)
 | 
						|
          testbot_process_way(profile, way, result)
 | 
						|
          result.is_left_hand_driving = true
 | 
						|
        end
 | 
						|
        return functions
 | 
						|
        """
 | 
						|
        And the node map
 | 
						|
            """
 | 
						|
               s        e
 | 
						|
            a------b------c
 | 
						|
            """
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes |
 | 
						|
            | ab    |
 | 
						|
            | bc    |
 | 
						|
 | 
						|
        When I route I should get
 | 
						|
            | from | to | approaches        | route |
 | 
						|
            | s    | e  | unrestricted curb | ab,bc |
 | 
						|
 | 
						|
 | 
						|
    #######################
 | 
						|
    # Left-side countries #
 | 
						|
    #######################
 | 
						|
 | 
						|
    Scenario: [Left-hand-side] Start End same approach, option unrestricted for Start and End
 | 
						|
        Given the profile file "car" initialized with
 | 
						|
        """
 | 
						|
        profile.properties.left_hand_driving = true
 | 
						|
        """
 | 
						|
        And the node map
 | 
						|
            """
 | 
						|
               s        e
 | 
						|
            a------b------c
 | 
						|
            """
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes |
 | 
						|
            | ab    |
 | 
						|
            | bc    |
 | 
						|
 | 
						|
        When I route I should get
 | 
						|
            | from | to | approaches                | route |
 | 
						|
            | s    | e  | unrestricted unrestricted | ab,bc |
 | 
						|
 | 
						|
    Scenario: [Left-hand-side] Start End same approach, option unrestricted for Start and curb for End
 | 
						|
        Given the profile file "car" initialized with
 | 
						|
        """
 | 
						|
        profile.properties.left_hand_driving = true
 | 
						|
        """
 | 
						|
        And the node map
 | 
						|
            """
 | 
						|
               s
 | 
						|
            a------b------c
 | 
						|
                       e
 | 
						|
            """
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes |
 | 
						|
            | ab    |
 | 
						|
            | bc    |
 | 
						|
 | 
						|
        When I route I should get
 | 
						|
            | from | to | approaches        | route    |
 | 
						|
            | s    | e  | unrestricted curb | ab,bc,bc |
 | 
						|
 | 
						|
    Scenario: [Left-hand-side] Start End opposite approach, option unrestricted for Start and End
 | 
						|
        Given the profile file "car" initialized with
 | 
						|
        """
 | 
						|
        profile.properties.left_hand_driving = true
 | 
						|
        """
 | 
						|
        And the node map
 | 
						|
            """
 | 
						|
               s
 | 
						|
            a------b------c
 | 
						|
                        e
 | 
						|
            """
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes |
 | 
						|
            | ab    |
 | 
						|
            | bc    |
 | 
						|
 | 
						|
        When I route I should get
 | 
						|
            | from | to | approaches                | route |
 | 
						|
            | s    | e  | unrestricted unrestricted | ab,bc |
 | 
						|
 | 
						|
    Scenario: [Left-hand-side] Start End opposite approach, option unrestricted for Start and curb for End
 | 
						|
        Given the profile file "car" initialized with
 | 
						|
        """
 | 
						|
        profile.properties.left_hand_driving = true
 | 
						|
        """
 | 
						|
        And the node map
 | 
						|
            """
 | 
						|
               s      e
 | 
						|
            a------b------c
 | 
						|
            """
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes |
 | 
						|
            | ab    |
 | 
						|
            | bc    |
 | 
						|
 | 
						|
        When I route I should get
 | 
						|
            | from | to | approaches        | route |
 | 
						|
            | s    | e  | unrestricted curb | ab,bc | |