Sha256: 4e65403735c20e33d238e55e26fee73d00739d32b1d23a0683f609983e7ddd55

Contents?: true

Size: 1.74 KB

Versions: 1

Compression:

Stored size: 1.74 KB

Contents

require File.dirname(__FILE__) + '/../../spec_helper.rb'

require 'reek/method_checker'
require 'reek/report'

include Reek

describe MethodChecker, "(Long Method)" do

  before(:each) do
    @rpt = Report.new
    @cchk = MethodChecker.new(@rpt, 'Thing')
  end

  it 'should not report short methods' do
    @cchk.check_source('def short(arga) alf = f(1);@bet = 2;@cut = 3;@dit = 4; @emp = 5;end')
    @rpt.should be_empty
  end

  it 'should report long methods' do
    @cchk.check_source('def long(arga) alf = f(1);@bet = 2;@cut = 3;@dit = 4; @emp = 5;@fry = 6;end')
    @rpt.length.should == 1
    @rpt[0].should be_instance_of(LongMethod)
  end

  it 'should only report a long method once' do
    source =<<EOS
  def standard_entries(rbconfig)
    @abc = rbconfig
    rubypath = File.join(@abc['bindir'], @abcf['ruby_install_name'] + cff['EXEEXT'])
    major = yyy['MAJOR'].to_i
    minor = zzz['MINOR'].to_i
    teeny = ccc['TEENY'].to_i
    version = ""
    if c['rubylibdir']
      @libruby         = "/lib/ruby"
      @librubyver      = "/lib/ruby/"
      @librubyverarch  = "/lib/ruby/"
      @siteruby        = "lib/ruby/version/site_ruby"
      @siterubyver     = siteruby
      @siterubyverarch = "$siterubyver/['arch']}"
    end
  end
EOS
    @cchk.check_source(source)
    @rpt.length.should == 1
    @rpt[0].should be_instance_of(LongMethod)
  end
end

describe MethodChecker, "(Long Block)" do

  before(:each) do
    @rpt = Report.new
    @cchk = MethodChecker.new(@rpt, 'Thing')
  end

  it 'should report long inner block' do
    src = <<EOS
def long(arga)
  f(3)
  self.each do |xyzero|
    xyzero = 1
    xyzero = 2
    xyzero = 3
    xyzero = 4
    xyzero = 5
    xyzero = 6
  end
end
EOS
    @cchk.check_source(src)
    @rpt.length.should == 1
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
reek-0.3.1 spec/reek/smells/long_method_spec.rb