78 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Gherkin
		
	
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Gherkin
		
	
	
	
	
	
@routing @projection @testbot
 | 
						|
Feature: Projection to nearest point on road
 | 
						|
# Waypoints are projected perpendiculary onto the closest road
 | 
						|
 | 
						|
    Background:
 | 
						|
    # The coordinas below was calculated using http://www.movable-type.co.uk/scripts/latlong.html
 | 
						|
    # The nodes are placed as follows, with ab, bc and bd all being 1 km in length each:
 | 
						|
    #   |   |   | c |
 | 
						|
    #   |   | b |   |   (this is sketch only, real data is in the table below)
 | 
						|
    #   | a |   | d |
 | 
						|
 | 
						|
        Given the profile "testbot"
 | 
						|
        Given the node locations
 | 
						|
            | node | lat       | lon       |
 | 
						|
            | a    | 80.000000 | 0.0000000 |
 | 
						|
            | b    | 80.006350 | 0.0366666 |
 | 
						|
            | c    | 80.012730 | 0.0733333 |
 | 
						|
            | d    | 80.000000 | 0.0733333 |
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes |
 | 
						|
            | abc   |
 | 
						|
 | 
						|
    Scenario: Projection onto way at high latitudes, 1km distance
 | 
						|
        When I route I should get
 | 
						|
            | from | to | route   | bearing       | distance   |
 | 
						|
            | b    | a  | abc,abc | 0->225,225->0 | 1000m      |
 | 
						|
            | b    | c  | abc,abc | 0->45,45->0   | 1000m +- 3 |
 | 
						|
            | a    | d  | abc,abc | 0->45,45->0   | 1000m      |
 | 
						|
            | d    | a  | abc,abc | 0->225,225->0 | 1000m      |
 | 
						|
            | c    | d  | abc,abc | 0->225,225->0 | 1000m +- 3 |
 | 
						|
            | d    | c  | abc,abc | 0->45,45->0   | 1000m +- 3 |
 | 
						|
 | 
						|
    Scenario: Projection onto way at high latitudes, no distance
 | 
						|
        When I route I should get
 | 
						|
            | from | to | route     | distance |
 | 
						|
            | d    | b  | abc,abc   | 0m       |
 | 
						|
            | b    | d  | abc,abc   | 0m       |
 | 
						|
 | 
						|
 | 
						|
    Scenario: Projection results negative duration
 | 
						|
        Given the profile file
 | 
						|
        """
 | 
						|
        functions = require('testbot')
 | 
						|
 | 
						|
        function segment_function(profile, segment)
 | 
						|
          segment.weight = 5.5
 | 
						|
          segment.duration = 2.8
 | 
						|
        end
 | 
						|
 | 
						|
        functions.process_segment = segment_function
 | 
						|
        return functions
 | 
						|
        """
 | 
						|
 | 
						|
        Given the node locations
 | 
						|
            | node |        lon |        lat |
 | 
						|
            |    e | -51.218994 | -30.023866 |
 | 
						|
            |    f | -51.218918 | -30.023741 |
 | 
						|
            |    1 | -51.219109 | -30.023766 |
 | 
						|
            |    2 | -51.219109 | -30.023764 |
 | 
						|
            |    3 | -51.219109 | -30.023763 |
 | 
						|
            |    4 | -51.219109 | -30.023762 |
 | 
						|
            |    5 | -51.219109 | -30.023761 |
 | 
						|
            |    6 | -51.219109 | -30.023756 |
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes |
 | 
						|
            | ef    |
 | 
						|
 | 
						|
        When I route I should get
 | 
						|
            | waypoints | route | distance | time | weight |
 | 
						|
            | 1,4       | ef,ef | 0.4m     | 0.1s |    0.1 |
 | 
						|
            | 2,4       | ef,ef | 0.1m     | 0s   |      0 |
 | 
						|
            | 3,4       | ef,ef | 0.1m     | 0s   |      0 |
 | 
						|
            | 4,4       | ef,ef | 0m       | 0s   |      0 |
 | 
						|
            | 5,4       | ef,ef | 0.1m     | 0s   |    0.1 |
 | 
						|
            | 6,4       | ef,ef | 0.6m     | 0.1s |    0.2 |
 |