diff options
Diffstat (limited to 'actionpack/test/journey/route/definition/parser_test.rb')
-rw-r--r-- | actionpack/test/journey/route/definition/parser_test.rb | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/actionpack/test/journey/route/definition/parser_test.rb b/actionpack/test/journey/route/definition/parser_test.rb new file mode 100644 index 0000000000..39693198b8 --- /dev/null +++ b/actionpack/test/journey/route/definition/parser_test.rb @@ -0,0 +1,112 @@ +# frozen_string_literal: true + +require "abstract_unit" + +module ActionDispatch + module Journey + module Definition + class TestParser < ActiveSupport::TestCase + def setup + @parser = Parser.new + end + + def test_slash + assert_equal :SLASH, @parser.parse("/").type + assert_round_trip "/" + end + + def test_segment + assert_round_trip "/foo" + end + + def test_segments + assert_round_trip "/foo/bar" + end + + def test_segment_symbol + assert_round_trip "/foo/:id" + end + + def test_symbol + assert_round_trip "/:foo" + end + + def test_group + assert_round_trip "(/:foo)" + end + + def test_groups + assert_round_trip "(/:foo)(/:bar)" + end + + def test_nested_groups + assert_round_trip "(/:foo(/:bar))" + end + + def test_dot_symbol + assert_round_trip(".:format") + end + + def test_dot_literal + assert_round_trip(".xml") + end + + def test_segment_dot + assert_round_trip("/foo.:bar") + end + + def test_segment_group_dot + assert_round_trip("/foo(.:bar)") + end + + def test_segment_group + assert_round_trip("/foo(/:action)") + end + + def test_segment_groups + assert_round_trip("/foo(/:action)(/:bar)") + end + + def test_segment_nested_groups + assert_round_trip("/foo(/:action(/:bar))") + end + + def test_group_followed_by_path + assert_round_trip("/foo(/:action)/:bar") + end + + def test_star + assert_round_trip("*foo") + assert_round_trip("/*foo") + assert_round_trip("/bar/*foo") + assert_round_trip("/bar/(*foo)") + end + + def test_or + assert_round_trip("a|b") + assert_round_trip("a|b|c") + assert_round_trip("(a|b)|c") + assert_round_trip("a|(b|c)") + assert_round_trip("*a|(b|c)") + assert_round_trip("*a|:b|c") + end + + def test_arbitrary + assert_round_trip("/bar/*foo#") + end + + def test_literal_dot_paren + assert_round_trip "/sprockets.js(.:format)" + end + + def test_groups_with_dot + assert_round_trip "/(:locale)(.:format)" + end + + def assert_round_trip(str) + assert_equal str, @parser.parse(str).to_s + end + end + end + end +end |