Sha256: ef585aa58ae8a2be53e494c905e95299f38e6c1efbaee370611cd1b047ab1a5f

Contents?: true

Size: 1.34 KB

Versions: 4

Compression:

Stored size: 1.34 KB

Contents

require 'helper'
require 'parser/ruby18'

class TestSourceCommentAssociator < Minitest::Test
  def test_associate
    parser = Parser::Ruby18.new

    buffer = Parser::Source::Buffer.new('(comments)')
    buffer.source = <<-END
# Class comment
# another class comment
class Foo
  # attr_accessor comment
  attr_accessor :foo

  # method comment
  def bar
    # expr comment
    1 + # intermediate comment
      2
    # stray comment
  end
end
    END

    ast, comments = parser.parse_with_comments(buffer)
    associations  = Parser::Source::Comment.associate(ast, comments)

    klass_node         = ast
    attr_accessor_node = ast.children[2].children[0]
    method_node        = ast.children[2].children[1]
    expr_node          = method_node.children[2]
    intermediate_node  = expr_node.children[2]

    assert_equal 5, associations.size
    assert_equal ['# Class comment', '# another class comment'],
                 associations[klass_node].map(&:text)
    assert_equal ['# attr_accessor comment'],
                 associations[attr_accessor_node].map(&:text)
    assert_equal ['# method comment'],
                 associations[method_node].map(&:text)
    assert_equal ['# expr comment'],
                 associations[expr_node].map(&:text)
    assert_equal ['# intermediate comment'],
                 associations[intermediate_node].map(&:text)
  end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
parser-2.0.0.beta5 test/test_source_comment_associator.rb
parser-2.0.0.beta4 test/test_source_comment_associator.rb
parser-2.0.0.beta3 test/test_source_comment_associator.rb
parser-2.0.0.beta2 test/test_source_comment_associator.rb