diff --git a/features/step_definitions/distance_matrix.rb b/features/step_definitions/distance_matrix.rb index 69ca4cc55..3d34c38dd 100644 --- a/features/step_definitions/distance_matrix.rb +++ b/features/step_definitions/distance_matrix.rb @@ -30,8 +30,22 @@ When /^I request a travel time matrix I should get$/ do |table| # compare actual and expected result, one row at a time table.rows.each_with_index do |row,ri| + + # fuzzy match + ok = true + 0.upto(nodes.size-1) do |i| + if FuzzyMatch.match result[ri][i], row[i+1] + result[ri][i] = row[i+1] + else + result[ri][i] = result[ri][i].to_s + ok = false + end + end + + # add row header r = [row[0],result[ri]].flatten - r.map! { |v| v.to_s } + + # store row for comparison actual << r end end diff --git a/features/testbot/distance_matrix.feature b/features/testbot/distance_matrix.feature index baa3b4e1e..dee9f92bf 100644 --- a/features/testbot/distance_matrix.feature +++ b/features/testbot/distance_matrix.feature @@ -1,10 +1,13 @@ @matrix @testbot Feature: Basic Distance Matrix +# note that results are travel time, specified in 1/10th of seconds +# since testbot uses a default speed of 100m/10s, the result matches +# the number of meters as long as the way type is the default 'primary' Background: Given the profile "testbot" - Scenario: A single way with two nodes + Scenario: Testbot - Travel time matrix of minimal network Given the node map | a | b | @@ -16,3 +19,85 @@ Feature: Basic Distance Matrix | | a | b | | a | 0 | 100 | | b | 100 | 0 | + + Scenario: Testbot - Travel time matrix with different way speeds + Given the node map + | a | b | c | d | + + And the ways + | nodes | highway | + | ab | primary | + | bc | secondary | + | cd | tertiary | + + When I request a travel time matrix I should get + | | a | b | c | d | + | a | 0 | 100 | 300 | 600 | + | b | 100 | 0 | 200 | 500 | + | c | 300 | 200 | 0 | 300 | + | d | 600 | 500 | 300 | 0 | + + Scenario: Testbot - Travel time matrix with fuzzy match + Given the node map + | a | b | + + And the ways + | nodes | + | ab | + + When I request a travel time matrix I should get + | | a | b | + | a | 0 | 95 +- 10 | + | b | 95 ~10% | 0 | + + Scenario: Testbot - Travel time matrix of small grid + Given the node map + | a | b | c | + | d | e | f | + + And the ways + | nodes | + | abc | + | def | + | ad | + | be | + | cf | + + When I request a travel time matrix I should get + | | a | b | e | f | + | a | 0 | 100 | 200 | 300 | + | b | 100 | 0 | 100 | 200 | + | e | 200 | 100 | 0 | 100 | + | f | 300 | 200 | 100 | 0 | + + @todo + Scenario: Testbot - Travel time matrix of network with unroutable parts + Given the node map + | a | b | + + And the ways + | nodes | oneway | + | ab | yes | + + When I request a travel time matrix I should get + | | a | b | + | a | 0 | 100 | + | b | -1 | 0 | + + Scenario: Testbot - Travel time matrix of network with oneways + Given the node map + | x | a | b | y | + | | d | e | | + + And the ways + | nodes | oneway | + | abeda | yes | + | xa | | + | by | | + + When I request a travel time matrix I should get + | | x | y | d | e | + | x | 0 | 300 | 400 | 300 | + | y | 500 | 0 | 300 | 200 | + | d | 200 | 300 | 0 | 300 | + | e | 300 | 400 | 100 | 0 |