mirror of
https://github.com/ruby/ruby.git
synced 2025-08-23 13:04:13 +02:00
91 lines
2.2 KiB
Ruby
91 lines
2.2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require_relative "../test_helper"
|
|
|
|
module Prism
|
|
class ConstantPathNodeTest < TestCase
|
|
def test_full_name_for_constant_path
|
|
source = <<~RUBY
|
|
Foo:: # comment
|
|
Bar::Baz::
|
|
Qux
|
|
RUBY
|
|
|
|
constant_path = Prism.parse_statement(source)
|
|
assert_equal("Foo::Bar::Baz::Qux", constant_path.full_name)
|
|
end
|
|
|
|
def test_full_name_for_constant_path_with_self
|
|
source = <<~RUBY
|
|
self:: # comment
|
|
Bar::Baz::
|
|
Qux
|
|
RUBY
|
|
|
|
constant_path = Prism.parse_statement(source)
|
|
assert_raise(ConstantPathNode::DynamicPartsInConstantPathError) do
|
|
constant_path.full_name
|
|
end
|
|
end
|
|
|
|
def test_full_name_for_constant_path_with_variable
|
|
source = <<~RUBY
|
|
foo:: # comment
|
|
Bar::Baz::
|
|
Qux
|
|
RUBY
|
|
|
|
constant_path = Prism.parse_statement(source)
|
|
|
|
assert_raise(ConstantPathNode::DynamicPartsInConstantPathError) do
|
|
constant_path.full_name
|
|
end
|
|
end
|
|
|
|
def test_full_name_for_constant_path_target
|
|
source = <<~RUBY
|
|
Foo:: # comment
|
|
Bar::Baz::
|
|
Qux, Something = [1, 2]
|
|
RUBY
|
|
|
|
node = Prism.parse_statement(source)
|
|
assert_equal("Foo::Bar::Baz::Qux", node.lefts.first.full_name)
|
|
end
|
|
|
|
def test_full_name_for_constant_path_with_stovetop_start
|
|
source = <<~RUBY
|
|
::Foo:: # comment
|
|
Bar::Baz::
|
|
Qux, Something = [1, 2]
|
|
RUBY
|
|
|
|
node = Prism.parse_statement(source)
|
|
assert_equal("::Foo::Bar::Baz::Qux", node.lefts.first.full_name)
|
|
end
|
|
|
|
def test_full_name_for_constant_path_target_with_non_constant_parent
|
|
source = <<~RUBY
|
|
self::Foo, Bar = [1, 2]
|
|
RUBY
|
|
|
|
constant_target = Prism.parse_statement(source)
|
|
dynamic, static = constant_target.lefts
|
|
|
|
assert_raise(ConstantPathNode::DynamicPartsInConstantPathError) do
|
|
dynamic.full_name
|
|
end
|
|
|
|
assert_equal("Bar", static.full_name)
|
|
end
|
|
|
|
def test_full_name_for_constant_read_node
|
|
source = <<~RUBY
|
|
Bar
|
|
RUBY
|
|
|
|
constant = Prism.parse_statement(source)
|
|
assert_equal("Bar", constant.full_name)
|
|
end
|
|
end
|
|
end
|