224 lines
		
	
	
		
			7.5 KiB
		
	
	
	
		
			Gherkin
		
	
	
	
	
	
			
		
		
	
	
			224 lines
		
	
	
		
			7.5 KiB
		
	
	
	
		
			Gherkin
		
	
	
	
	
	
@routing @testbot @ferry
 | 
						|
Feature: Testbot - Handle ferry routes
 | 
						|
 | 
						|
    Background:
 | 
						|
        Given the profile "testbot"
 | 
						|
 | 
						|
    Scenario: Testbot - Ferry duration, single node
 | 
						|
        Given the node map
 | 
						|
            """
 | 
						|
            a b c d
 | 
						|
            e f g h
 | 
						|
            i j k l
 | 
						|
            m n o p
 | 
						|
            q r s t
 | 
						|
            """
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes | highway | route | duration |
 | 
						|
            | ab    | primary |       |          |
 | 
						|
            | cd    | primary |       |          |
 | 
						|
            | ef    | primary |       |          |
 | 
						|
            | gh    | primary |       |          |
 | 
						|
            | ij    | primary |       |          |
 | 
						|
            | kl    | primary |       |          |
 | 
						|
            | mn    | primary |       |          |
 | 
						|
            | op    | primary |       |          |
 | 
						|
            | qr    | primary |       |          |
 | 
						|
            | st    | primary |       |          |
 | 
						|
            | bc    |         | ferry | 0:01     |
 | 
						|
            | fg    |         | ferry | 0:10     |
 | 
						|
            | jk    |         | ferry | 1:00     |
 | 
						|
            | no    |         | ferry | 24:00    |
 | 
						|
            | rs    |         | ferry | 96:00    |
 | 
						|
 | 
						|
        When I route I should get
 | 
						|
            | from | to | route | time        |
 | 
						|
            | b    | c  | bc,bc | 60s +-1     |
 | 
						|
            | f    | g  | fg,fg | 600s +-1    |
 | 
						|
            | j    | k  | jk,jk | 3600s +-1   |
 | 
						|
            | n    | o  | no,no | 86400s +-1  |
 | 
						|
            | r    | s  | rs,rs | 345600s +-1 |
 | 
						|
 | 
						|
    @todo
 | 
						|
    Scenario: Testbot - Week long ferry routes
 | 
						|
        Given the node map
 | 
						|
            """
 | 
						|
            a b c d
 | 
						|
            e f g h
 | 
						|
            i j k l
 | 
						|
            """
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes | highway | route | duration |
 | 
						|
            | ab    | primary |       |          |
 | 
						|
            | cd    | primary |       |          |
 | 
						|
            | ef    | primary |       |          |
 | 
						|
            | gh    | primary |       |          |
 | 
						|
            | ij    | primary |       |          |
 | 
						|
            | kl    | primary |       |          |
 | 
						|
            | bc    |         | ferry | 24:00    |
 | 
						|
            | fg    |         | ferry | 168:00   |
 | 
						|
            | jk    |         | ferry | 720:00   |
 | 
						|
 | 
						|
        When I route I should get
 | 
						|
            | from | to | route | time        |
 | 
						|
            | b    | c  | bc,bc | 86400s +-1  |
 | 
						|
            | f    | g  | fg,fg | 604800s +-1 |
 | 
						|
            | j    | k  | jk,jk | 259200s +-1 |
 | 
						|
 | 
						|
    Scenario: Testbot - Ferry duration, multiple nodes
 | 
						|
        Given the node map
 | 
						|
            """
 | 
						|
            x         y
 | 
						|
              a b c d
 | 
						|
            """
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes | highway | route | duration |
 | 
						|
            | xa    | primary |       |          |
 | 
						|
            | yd    | primary |       |          |
 | 
						|
            | ad    |         | ferry | 1:00     |
 | 
						|
 | 
						|
        When I route I should get
 | 
						|
            | from | to | route | time      |
 | 
						|
            | a    | d  | ad,ad | 3600s +-1 |
 | 
						|
            | d    | a  | ad,ad | 3600s +-1 |
 | 
						|
 | 
						|
    @todo
 | 
						|
    Scenario: Testbot - Ferry duration, individual parts, fast
 | 
						|
    Given a grid size of 10000 meters
 | 
						|
        Given the node map
 | 
						|
            """
 | 
						|
            x y   z     v
 | 
						|
            a b   c     d
 | 
						|
            """
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes | highway | route | duration |
 | 
						|
            | xa    | primary |       |          |
 | 
						|
            | yb    | primary |       |          |
 | 
						|
            | zc    | primary |       |          |
 | 
						|
            | vd    | primary |       |          |
 | 
						|
            | abcd  |         | ferry | 0:06     |
 | 
						|
 | 
						|
        When I route I should get
 | 
						|
            | from | to | route     | time     |
 | 
						|
            | a    | d  | abcd,abcd | 360s +-1 |
 | 
						|
            | a    | b  | abcd,abcd | 60s +-1  |
 | 
						|
            | b    | c  | abcd,abcd | 120s +-1 |
 | 
						|
            | c    | d  | abcd,abcd | 180s +-1 |
 | 
						|
 | 
						|
    @todo
 | 
						|
    Scenario: Testbot - Ferry duration, individual parts, slow
 | 
						|
        Given the node map
 | 
						|
            """
 | 
						|
            x y   z     v
 | 
						|
            a b   c     d
 | 
						|
            """
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes | highway | route | duration |
 | 
						|
            | xa    | primary |       |          |
 | 
						|
            | yb    | primary |       |          |
 | 
						|
            | zc    | primary |       |          |
 | 
						|
            | vd    | primary |       |          |
 | 
						|
            | abcd  |         | ferry | 1:00     |
 | 
						|
 | 
						|
        When I route I should get
 | 
						|
            | from | to | route     | time      |
 | 
						|
            | a    | d  | abcd,abcd | 3600s ~1% |
 | 
						|
            | a    | b  | abcd,abcd | 600s ~1%  |
 | 
						|
            | b    | c  | abcd,abcd | 1200s ~1% |
 | 
						|
            | c    | d  | abcd,abcd | 1800s ~1% |
 | 
						|
 | 
						|
    Scenario: Testbot - Ferry duration, connected routes
 | 
						|
        Given the node map
 | 
						|
            """
 | 
						|
            x       d       y
 | 
						|
              a b c   e f g t
 | 
						|
            """
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes | highway | route | duration |
 | 
						|
            | xa    | primary |       |          |
 | 
						|
            | yg    | primary |       |          |
 | 
						|
            | abcd  |         | ferry | 0:30     |
 | 
						|
            | defg  |         | ferry | 0:30     |
 | 
						|
 | 
						|
        When I route I should get
 | 
						|
            | from | to | route          | time      |
 | 
						|
            | a    | g  | abcd,defg,defg | 3600s +-1 |
 | 
						|
            | g    | a  | defg,abcd,abcd | 3600s +-1 |
 | 
						|
 | 
						|
    Scenario: Testbot - Prefer road when faster than ferry
 | 
						|
        Given the node map
 | 
						|
            """
 | 
						|
            x a b c
 | 
						|
                    d
 | 
						|
            y g f e
 | 
						|
            """
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes | highway | route | duration |
 | 
						|
            | xa    | primary |       |          |
 | 
						|
            | yg    | primary |       |          |
 | 
						|
            | xy    | primary |       |          |
 | 
						|
            | abcd  |         | ferry | 0:02     |
 | 
						|
            | defg  |         | ferry | 0:02     |
 | 
						|
 | 
						|
        When I route I should get
 | 
						|
            | from | to | route       | time      |
 | 
						|
            | a    | g  | xa,xy,yg,yg | 60s +-25% |
 | 
						|
            | g    | a  | yg,xy,xa,xa | 60s +-25% |
 | 
						|
 | 
						|
    Scenario: Testbot - Long winding ferry route
 | 
						|
        Given the node map
 | 
						|
            """
 | 
						|
            x   b   d   f   y
 | 
						|
              a   c   e   g
 | 
						|
            """
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes   | highway | route | duration |
 | 
						|
            | xa      | primary |       |          |
 | 
						|
            | yg      | primary |       |          |
 | 
						|
            | abcdefg |         | ferry | 6:30     |
 | 
						|
 | 
						|
        When I route I should get
 | 
						|
            | from | to | route           | time       |
 | 
						|
            | a    | g  | abcdefg,abcdefg | 23400s +-3 |
 | 
						|
            | g    | a  | abcdefg,abcdefg | 23400s +-3 |
 | 
						|
 | 
						|
    @todo
 | 
						|
    Scenario: Testbot - Ferry duration formats
 | 
						|
        Given the node map
 | 
						|
            """
 | 
						|
            a c e g i k m o q s
 | 
						|
            b d f h j l n p r t
 | 
						|
            """
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes | route | duration |
 | 
						|
            | ab    | ferry | 0:01     |
 | 
						|
            | cd    | ferry | 00:01    |
 | 
						|
            | ef    | ferry | 1:00     |
 | 
						|
            | gh    | ferry | 01:00    |
 | 
						|
            | ij    | ferry | 02:20    |
 | 
						|
            | kl    | ferry | 10:00    |
 | 
						|
            | mn    | ferry | 100:00   |
 | 
						|
            | op    | ferry | 1000:00  |
 | 
						|
            | qr    | ferry | 10000:00 |
 | 
						|
 | 
						|
        When I route I should get
 | 
						|
            | from | to | route | time          |
 | 
						|
            | a    | b  | ab,ab | 60s +-1       |
 | 
						|
            | c    | d  | cd,cd | 60s +-1       |
 | 
						|
            | e    | f  | ef,ef | 3600s +-1     |
 | 
						|
            | g    | h  | gh,gh | 3600s +-1     |
 | 
						|
            | i    | j  | ij,ij | 8400s +-1     |
 | 
						|
            | k    | l  | kl,kl | 36000s +-1    |
 | 
						|
            | m    | n  | mn,mn | 360000s +-1   |
 | 
						|
            | o    | p  | mn,mn | 3600000s +-1  |
 | 
						|
            | q    | r  | mn,mn | 36000000s +-1 |
 |