Sha256: 1d663951ab23dd7df57f1bb8b93aa84e74272547028480f3c1cbb489c6cf7829

Contents?: true

Size: 1.36 KB

Versions: 3

Compression:

Stored size: 1.36 KB

Contents

# encoding: utf-8

require 'spec_helper'

describe RuboCop::Cop::Util do
  describe '#line_range' do
    include ASTHelper

    let(:source) do
      <<-END
        foo = 1
        bar = 2
        class Test
          def some_method
            do_something
          end
        end
        baz = 8
      END
    end

    let(:ast) do
      processed_source = parse_source(source)
      processed_source.ast
    end

    let(:node) do
      target_node = scan_node(ast) do |node|
        break node if node.type == :class
      end
      fail 'No target node found!' unless target_node
      target_node
    end

    context 'when Source::Range object is passed' do
      it 'returns line range of that' do
        line_range = described_class.line_range(node.loc.expression)
        expect(line_range).to eq(3..7)
      end
    end

    context 'when AST::Node object is passed' do
      it 'returns line range of the expression' do
        line_range = described_class.line_range(node)
        expect(line_range).to eq(3..7)
      end
    end
  end

  # Test compatibility with Range#size in Ruby 2.0.
  describe '#numeric_range_size', ruby: 2 do
    [1..1, 1...1, 1..2, 1...2, 1..3, 1...3, 1..-1, 1...-1].each do |range|
      context "with range #{range}" do
        subject { described_class.numeric_range_size(range) }
        it { should eq(range.size) }
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rubocop-0.25.0 spec/rubocop/cop/util_spec.rb
rubocop-0.24.1 spec/rubocop/cop/util_spec.rb
rubocop-0.24.0 spec/rubocop/cop/util_spec.rb