spec/reek/smells/data_clump_spec.rb in reek-1.3.4 vs spec/reek/smells/data_clump_spec.rb in reek-1.3.5

- old
+ new

@@ -40,11 +40,11 @@ @smells[0].smell[DataClump::PARAMETERS_KEY].should == ['pa', 'pb'] end it 'reports the number of occurrences' do @smells[0].smell[DataClump::OCCURRENCES_KEY].should == 3 end - it 'reports all parameters' do + it 'reports all methods' do @smells[0].smell[DataClump::METHODS_KEY].should == ['first', 'second', 'third'] end it 'reports the declaration line numbers' do @smells[0].lines.should == [2,3,4] end @@ -54,11 +54,11 @@ it 'reports the context fq name' do @smells[0].context.should == @module_name end end - it 'reports 3 swapped pairs in a class' do + it 'reports 3 swapped pairs' do src = <<EOS #{@context} Scrunch def one(pa, pb) @field == :sym ? 0 : 3; end def two(pb, pa) @field == :sym; end def tri(pa, pb) pa - pb + @fred; end @@ -66,11 +66,11 @@ EOS src.should smell_of(DataClump, {DataClump::OCCURRENCES_KEY => 3, DataClump::PARAMETERS_KEY => ['pa', 'pb']}) end - it 'reports 3 identical parameter sets in a class' do + it 'reports 3 identical parameter sets' do src = <<EOS #{@context} Scrunch def first(pa, pb, pc) @field == :sym ? 0 : 3; end def second(pa, pb, pc) @field == :sym; end def third(pa, pb, pc) pa - pb + @fred; end @@ -112,9 +112,34 @@ def c_raw (src, options) end def c_raw_singleton (src, options) end end EOS src.should smell_of(DataClump, DataClump::OCCURRENCES_KEY => 5) + end + + it 'correctly checks number of occurences' do + src = <<-EOS + #{@context} Smelly + def fa(p1, p2, p3) end + def fb(p2, p3, p4) end + def fc(p3, p4, p5) end + def fd(p4, p5, p1) end + def fe(p5, p1, p2) end + end + EOS + src.should_not smell_of(DataClump) + end + + it 'detects clumps smaller than the total number of arguments' do + src = <<-EOS + #{@context} Smelly + def fa(p1, p2, p3) end + def fb(p1, p3, p2) end + def fc(p4, p1, p2) end + end + EOS + src.should smell_of(DataClump, + { DataClump::PARAMETERS_KEY => %w(p1 p2) }) end end describe DataClump do before(:each) do