2012-12-19 20:54:47 +00:00
|
|
|
require 'abstract_unit'
|
|
|
|
|
|
|
|
module ActionDispatch
|
|
|
|
module Journey
|
|
|
|
module Definition
|
2012-12-31 17:36:30 +00:00
|
|
|
class TestScanner < ActiveSupport::TestCase
|
2012-12-19 20:54:47 +00:00
|
|
|
def setup
|
|
|
|
@scanner = Scanner.new
|
|
|
|
end
|
|
|
|
|
|
|
|
# /page/:id(/:action)(.:format)
|
|
|
|
def test_tokens
|
|
|
|
[
|
|
|
|
['/', [[:SLASH, '/']]],
|
|
|
|
['*omg', [[:STAR, '*omg']]],
|
|
|
|
['/page', [[:SLASH, '/'], [:LITERAL, 'page']]],
|
|
|
|
['/~page', [[:SLASH, '/'], [:LITERAL, '~page']]],
|
|
|
|
['/pa-ge', [[:SLASH, '/'], [:LITERAL, 'pa-ge']]],
|
|
|
|
['/:page', [[:SLASH, '/'], [:SYMBOL, ':page']]],
|
|
|
|
['/(:page)', [
|
|
|
|
[:SLASH, '/'],
|
|
|
|
[:LPAREN, '('],
|
|
|
|
[:SYMBOL, ':page'],
|
|
|
|
[:RPAREN, ')'],
|
|
|
|
]],
|
|
|
|
['(/:action)', [
|
|
|
|
[:LPAREN, '('],
|
|
|
|
[:SLASH, '/'],
|
|
|
|
[:SYMBOL, ':action'],
|
|
|
|
[:RPAREN, ')'],
|
|
|
|
]],
|
|
|
|
['(())', [[:LPAREN, '('],
|
|
|
|
[:LPAREN, '('], [:RPAREN, ')'], [:RPAREN, ')']]],
|
|
|
|
['(.:format)', [
|
|
|
|
[:LPAREN, '('],
|
|
|
|
[:DOT, '.'],
|
|
|
|
[:SYMBOL, ':format'],
|
|
|
|
[:RPAREN, ')'],
|
|
|
|
]],
|
|
|
|
].each do |str, expected|
|
|
|
|
@scanner.scan_setup str
|
|
|
|
assert_tokens expected, @scanner
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def assert_tokens tokens, scanner
|
|
|
|
toks = []
|
|
|
|
while tok = scanner.next_token
|
|
|
|
toks << tok
|
|
|
|
end
|
|
|
|
assert_equal tokens, toks
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|