class ActionDispatch::Journey::GTG::TestBuilder

Public Instance Methods

test_following_states_multi() click to toggle source
# File actionpack/test/journey/gtg/builder_test.rb, line 9
def test_following_states_multi
  table = tt ["a|a"]
  assert_equal 1, table.move([0], "a").length
end
test_following_states_multi_regexp() click to toggle source
# File actionpack/test/journey/gtg/builder_test.rb, line 14
def test_following_states_multi_regexp
  table = tt [":a|b"]
  assert_equal 1, table.move([0], "fooo").length
  assert_equal 2, table.move([0], "b").length
end
test_match_data_ambiguous() click to toggle source
# File actionpack/test/journey/gtg/builder_test.rb, line 35
def test_match_data_ambiguous
  table = tt %w{
    /articles(.:format)
    /articles/new(.:format)
    /articles/:id/edit(.:format)
    /articles/:id(.:format)
  }

  sim = NFA::Simulator.new table

  match = sim.match "/articles/new"
  assert_equal 2, match.memos.length
end
test_match_same_paths() click to toggle source

Identical Routes may have different restrictions.

# File actionpack/test/journey/gtg/builder_test.rb, line 51
def test_match_same_paths
  table = tt %w{
    /articles/new(.:format)
    /articles/new(.:format)
  }

  sim = NFA::Simulator.new table

  match = sim.match "/articles/new"
  assert_equal 2, match.memos.length
end
test_multi_path() click to toggle source
# File actionpack/test/journey/gtg/builder_test.rb, line 20
def test_multi_path
  table = tt ["/:a/d", "/b/c"]

  [
    [1, "/"],
    [2, "b"],
    [2, "/"],
    [1, "c"],
  ].inject([0]) { |state, (exp, sym)|
    new = table.move(state, sym)
    assert_equal exp, new.length
    new
  }
end

Private Instance Methods

ast(strings) click to toggle source
# File actionpack/test/journey/gtg/builder_test.rb, line 64
def ast(strings)
  parser = Journey::Parser.new
  asts   = strings.map { |string|
    memo = Object.new
    ast  = parser.parse string
    ast.each { |n| n.memo = memo }
    ast
  }
  Nodes::Or.new asts
end
tt(strings) click to toggle source
# File actionpack/test/journey/gtg/builder_test.rb, line 75
def tt(strings)
  Builder.new(ast(strings)).transition_table
end