Methods
T
Constants
SEPARATORS = ["/", ".", "?"].join
 
Instance Public methods
test_ast_sets_regular_expressions()
# File actionpack/test/journey/path/pattern_test.rb, line 131
def test_ast_sets_regular_expressions
  requirements = { :name => /(tender|love)/, :value => /./ }
  path = Pattern.build(
    '/page/:name/:value',
    requirements,
    SEPARATORS,
    true
  )

  nodes = path.ast.grep(Nodes::Symbol)
  assert_equal 2, nodes.length
  nodes.each do |node|
    assert_equal requirements[node.to_sym], node.regexp
  end
end
test_failed_match()
# File actionpack/test/journey/path/pattern_test.rb, line 209
def test_failed_match
  path = Pattern.from_string '/:controller(/:action(/:id(.:format)))'
  uri = 'content'

  assert_not path =~ uri
end
test_insensitive_regexp_with_group()
# File actionpack/test/journey/path/pattern_test.rb, line 184
def test_insensitive_regexp_with_group
  path = Pattern.build(
    '/page/:name/aaron',
    { :name => /(tender|love)/i },
    SEPARATORS,
    true
  )
  assert_match(path, '/page/TENDER/aaron')
  assert_match(path, '/page/loVE/aaron')
  assert_no_match(path, '/page/loVE/AAron')
end
test_match_controller()
# File actionpack/test/journey/path/pattern_test.rb, line 216
def test_match_controller
  path = Pattern.from_string '/:controller(/:action(/:id(.:format)))'
  uri = '/content'

  match = path =~ uri
  assert_equal %w{ controller action id format }, match.names
  assert_equal 'content', match[1]
  assert_nil match[2]
  assert_nil match[3]
  assert_nil match[4]
end
test_match_controller_action()
# File actionpack/test/journey/path/pattern_test.rb, line 228
def test_match_controller_action
  path = Pattern.from_string '/:controller(/:action(/:id(.:format)))'
  uri = '/content/list'

  match = path =~ uri
  assert_equal %w{ controller action id format }, match.names
  assert_equal 'content', match[1]
  assert_equal 'list', match[2]
  assert_nil match[3]
  assert_nil match[4]
end
test_match_controller_action_id()
# File actionpack/test/journey/path/pattern_test.rb, line 240
def test_match_controller_action_id
  path = Pattern.from_string '/:controller(/:action(/:id(.:format)))'
  uri = '/content/list/10'

  match = path =~ uri
  assert_equal %w{ controller action id format }, match.names
  assert_equal 'content', match[1]
  assert_equal 'list', match[2]
  assert_equal '10', match[3]
  assert_nil match[4]
end
test_match_data_with_group()
# File actionpack/test/journey/path/pattern_test.rb, line 147
def test_match_data_with_group
  path = Pattern.build(
    '/page/:name',
    { :name => /(tender|love)/ },
    SEPARATORS,
    true
  )
  match = path.match '/page/tender'
  assert_equal 'tender', match[1]
  assert_equal 2, match.length
end
test_match_data_with_multi_group()
# File actionpack/test/journey/path/pattern_test.rb, line 159
def test_match_data_with_multi_group
  path = Pattern.build(
    '/page/:name/:id',
    { :name => /t(((ender|love)))()/ },
    SEPARATORS,
    true
  )
  match = path.match '/page/tender/10'
  assert_equal 'tender', match[1]
  assert_equal '10', match[2]
  assert_equal 3, match.length
  assert_equal %w{ tender 10 }, match.captures
end
test_match_literal()
# File actionpack/test/journey/path/pattern_test.rb, line 252
def test_match_literal
  path = Path::Pattern.from_string "/books(/:action(.:format))"

  uri = '/books'
  match = path =~ uri
  assert_equal %w{ action format }, match.names
  assert_nil match[1]
  assert_nil match[2]
end
test_match_literal_with_action()
# File actionpack/test/journey/path/pattern_test.rb, line 262
def test_match_literal_with_action
  path = Path::Pattern.from_string "/books(/:action(.:format))"

  uri = '/books/list'
  match = path =~ uri
  assert_equal %w{ action format }, match.names
  assert_equal 'list', match[1]
  assert_nil match[2]
end
test_match_literal_with_action_and_format()
# File actionpack/test/journey/path/pattern_test.rb, line 272
def test_match_literal_with_action_and_format
  path = Path::Pattern.from_string "/books(/:action(.:format))"

  uri = '/books/list.rss'
  match = path =~ uri
  assert_equal %w{ action format }, match.names
  assert_equal 'list', match[1]
  assert_equal 'rss', match[2]
end
test_optional_names()
# File actionpack/test/journey/path/pattern_test.rb, line 97
def test_optional_names
  [
    ['/:foo(/:bar(/:baz))', %w{ bar baz }],
    ['/:foo(/:bar)', %w{ bar }],
    ['/:foo(/:bar)/:lol(/:baz)', %w{ bar baz }],
  ].each do |pattern, list|
    path = Pattern.from_string pattern
    assert_equal list.sort, path.optional_names.sort
  end
end
test_star_with_custom_re()
# File actionpack/test/journey/path/pattern_test.rb, line 173
def test_star_with_custom_re
  z = /\d+/
  path = Pattern.build(
    '/page/*foo',
    { :foo => z },
    SEPARATORS,
    true
  )
  assert_equal(%r{\A/page/(#{z})\Z}, path.to_regexp)
end
test_to_regexp_defaults()
# File actionpack/test/journey/path/pattern_test.rb, line 203
def test_to_regexp_defaults
  path = Pattern.from_string '/:controller(/:action(/:id))'
  expected = %r{\A/([^/.?]+)(?:/([^/.?]+)(?:/([^/.?]+))?)?\Z}
  assert_equal expected, path.to_regexp
end
test_to_regexp_match_non_optional()
# File actionpack/test/journey/path/pattern_test.rb, line 108
def test_to_regexp_match_non_optional
  path = Pattern.build(
    '/:name',
    { :name => /\d+/ },
    SEPARATORS,
    true
  )
  assert_match(path, '/123')
  assert_no_match(path, '/')
end
test_to_regexp_with_extended_group()
# File actionpack/test/journey/path/pattern_test.rb, line 81
def test_to_regexp_with_extended_group
  path = Pattern.build(
    '/page/:name',
    { :name => /
      #ROFL
      (tender|love
      #MAO
      )/x },
    SEPARATORS,
    true
  )
  assert_match(path, '/page/tender')
  assert_match(path, '/page/love')
  assert_no_match(path, '/page/loving')
end
test_to_regexp_with_group()
# File actionpack/test/journey/path/pattern_test.rb, line 119
def test_to_regexp_with_group
  path = Pattern.build(
    '/page/:name',
    { :name => /(tender|love)/ },
    SEPARATORS,
    true
  )
  assert_match(path, '/page/tender')
  assert_match(path, '/page/love')
  assert_no_match(path, '/page/loving')
end
test_to_regexp_with_strexp()
# File actionpack/test/journey/path/pattern_test.rb, line 196
def test_to_regexp_with_strexp
  path = Pattern.build('/:controller', { }, SEPARATORS, true)
  x = %r{\A/([^/.?]+)\Z}

  assert_equal(x.source, path.source)
end