spec/flog_spec.rb in p8-metric_fu-0.9.0.1 vs spec/flog_spec.rb in p8-metric_fu-0.9.0.2
- old
+ new
@@ -1,207 +1,208 @@
require File.dirname(__FILE__) + '/spec_helper.rb'
+include MetricFu::Flog
-describe Flog do
-# before do
-# @alpha_only_method = <<-AOM
-# Total flog = 13.6283678106927
-#
-# ErrorMailer#errormail: (12.5)
-# 12.0: assignment
-# 1.2: []
-# 1.2: now
-# 1.2: content_type
-# AOM
-#
-# @method_that_has_digits = <<-MTHD
-# Total flog = 7.08378429936994
-#
-# NoImmunizationReason#to_c32: (7.1)
-# 3.0: code
-# 2.3: branch
-# 1.4: templateId
-# 1.2: act
-# 1.1: entryRelationship
-# MTHD
-#
-# @bang_method = <<-BM
-# Total flog = 7.08378429936994
-#
-# NoImmunizationReason#to_c32!: (7.1)
-# 3.0: code
-# 2.3: branch
-# 1.4: templateId
-# 1.2: act
-# 1.1: entryRelationship
-# BM
-#
-# @invalid_method = <<-IM
-# Total flog = 7.08378429936994
-#
-# 3.0: code
-# 2.3: branch
-# 1.4: templateId
-# 1.2: act
-# 1.1: entryRelationship
-# IM
-#
-# @assignment_method = <<-MTHD
-# Total Flog = 21.6 (5.4 +/- 3.3 flog / method)
-#
-# ActivityReport#existing_measure_attributes=: (8.5)
-# 4.1: assignment
-# 1.8: id
-# 1.6: to_s
-# 1.4: []
-# 1.4: activity_report_measures
-# 1.2: each
-# 1.2: branch
-# MTHD
-#
-# @class_methods_grouped_together = <<-MTHD
-# Total Flog = 61.8 (7.7 +/- 95.3 flog / method)
-#
-# User#none: (32.8)
-# 7.2: include
-# 3.6: validates_length_of
-# 3.6: validates_format_of
-# 2.4: validates_presence_of
-# 2.4: validates_uniqueness_of
-# 1.4: bad_login_message
-# 1.4: name_regex
-# 1.4: bad_email_message
-# 1.4: bad_name_message
-# 1.4: login_regex
-# 1.4: email_regex
-# 1.2: private
-# 1.2: has_and_belongs_to_many
-# 1.2: before_create
-# 1.2: attr_accessible
-# 0.4: lit_fixnum
-# MTHD
-# end
-#
-# it "should be able to parse class_methods_grouped_together" do
-# page = Base.parse(@class_methods_grouped_together)
-# page.should_not be_nil
-# page.score.should == 61.8
-# page.scanned_methods.size.should == 1
-# sm = page.scanned_methods.first
-# sm.name.should == 'User#none'
-# sm.score.should == 32.8
-#
-# sm.operators.size.should == 16
-# sm.operators.first.score.should == 7.2
-# sm.operators.first.operator.should == "include"
-#
-# sm.operators.last.score.should == 0.4
-# sm.operators.last.operator.should == "lit_fixnum"
-# end
-#
-# it "should be able to parse an assignment method" do
-# page = Base.parse(@assignment_method)
-# page.should_not be_nil
-# page.score.should == 21.6
-# page.scanned_methods.size.should == 1
-# sm = page.scanned_methods.first
-# sm.name.should == 'ActivityReport#existing_measure_attributes='
-# sm.score.should == 8.5
-# end
-#
-# it "should be able to parse an alpha only method" do
-# page = Base.parse(@alpha_only_method)
-# page.should_not be_nil
-# page.score.should == 13.6283678106927
-# page.scanned_methods.size.should == 1
-# sm = page.scanned_methods.first
-# sm.name.should == 'ErrorMailer#errormail'
-# sm.score.should == 12.5
-# end
-#
-# it "should be able to parse method that has digits" do
-# page = Base.parse(@method_that_has_digits)
-# page.should_not be_nil
-# page.score.should == 7.08378429936994
-# page.scanned_methods.size.should == 1
-# sm = page.scanned_methods.first
-# sm.name.should == 'NoImmunizationReason#to_c32'
-# sm.score.should == 7.1
-# end
-#
-# it "should be able to parse bang method" do
-# page = Base.parse(@bang_method)
-# page.should_not be_nil
-# page.score.should == 7.08378429936994
-# page.scanned_methods.size.should == 1
-# sm = page.scanned_methods.first
-# sm.name.should == 'NoImmunizationReason#to_c32!'
-# sm.score.should == 7.1
-# end
-#
-# it "should return nil when parsing invalid method" do
-# page = Base.parse(@invalid_method)
-# page.should be_nil
-# end
-# end
-#
-# IM = <<-IM
-# Total flog = 7.08378429936994
-#
-# 3.0: code
-# 2.3: branch
-# 1.4: templateId
-# 1.2: act
-# 1.1: entryRelationship
-# IM
-# describe MetricFu::Flog do
-#
-# describe "generate_report" do
-# it "should generate reports" do
-# generator = Flog::Generator.new('other_dir')
-# generator.should_receive(:flog_results).and_return(['A', 'B'])
-# generator.should_receive(:save_output).at_least(3).times.and_return('')
-# generator.should_receive(:open).any_number_of_times.and_return(['Total Flog = 1273.9 (9.3 +/- 259.2 flog / method)', 'TokenCounter#list_tokens_per_line: (15.2)', '9.0: assignment'].join("\n"))
-# generator.generate_report
-# end
-#
-# it "should be able to handle InvalidFlogs" do
-# generator = Flog::Generator.new('other_dir')
-# generator.should_receive(:flog_results).and_return(['A', 'B'])
-# generator.should_receive(:inline_css).any_number_of_times.and_return('')
-# generator.should_receive(:save_output).once
-# generator.should_receive(:open).any_number_of_times.and_return(IM)
-# generator.generate_report
-# end
-# end
-#
-# describe "template_name" do
-# it "should return the class name in lowercase" do
-# flog = Flog::Generator.new('base_dir')
-# Flog::Generator.template_name.should == 'flog'
-# end
-# end
-# end
-#
-# describe MetricFu::Flog::Page do
-#
-# describe "average_score" do
-# it "should calculate the average score" do
-# page = Page.new(10)
-# page.should_receive(:scanned_methods).any_number_of_times.and_return([ScannedMethod.new(:test, 10), ScannedMethod.new(:test, 20)])
-# page.average_score.should == 15
-# end
-#
-# it "should be able to handle divide by zero" do
-# page = Page.new(10)
-# page.should_receive(:scanned_methods).any_number_of_times.and_return([])
-# page.average_score.should == 0
-# end
-# end
-#
-# describe "highest_score" do
-# it "should calculate the average score" do
-# page = Page.new(10)
-# page.should_receive(:scanned_methods).any_number_of_times.and_return([ScannedMethod.new(:test, 10), ScannedMethod.new(:test, 20)])
-# page.highest_score.should == 20
-# end
-# end
+describe "Flog::Base" do
+ before do
+ @alpha_only_method = <<-AOM
+ Total flog = 13.6283678106927
+
+ ErrorMailer#errormail: (12.5)
+ 12.0: assignment
+ 1.2: []
+ 1.2: now
+ 1.2: content_type
+AOM
+
+ @method_that_has_digits = <<-MTHD
+ Total flog = 7.08378429936994
+
+ NoImmunizationReason#to_c32: (7.1)
+ 3.0: code
+ 2.3: branch
+ 1.4: templateId
+ 1.2: act
+ 1.1: entryRelationship
+MTHD
+
+ @bang_method = <<-BM
+ Total flog = 7.08378429936994
+
+ NoImmunizationReason#to_c32!: (7.1)
+ 3.0: code
+ 2.3: branch
+ 1.4: templateId
+ 1.2: act
+ 1.1: entryRelationship
+BM
+
+ @invalid_method = <<-IM
+ Total flog = 7.08378429936994
+
+ 3.0: code
+ 2.3: branch
+ 1.4: templateId
+ 1.2: act
+ 1.1: entryRelationship
+IM
+
+ @assignment_method = <<-MTHD
+ Total Flog = 21.6 (5.4 +/- 3.3 flog / method)
+
+ ActivityReport#existing_measure_attributes=: (8.5)
+ 4.1: assignment
+ 1.8: id
+ 1.6: to_s
+ 1.4: []
+ 1.4: activity_report_measures
+ 1.2: each
+ 1.2: branch
+ MTHD
+
+ @class_methods_grouped_together = <<-MTHD
+ Total Flog = 61.8 (7.7 +/- 95.3 flog / method)
+
+ User#none: (32.8)
+ 7.2: include
+ 3.6: validates_length_of
+ 3.6: validates_format_of
+ 2.4: validates_presence_of
+ 2.4: validates_uniqueness_of
+ 1.4: bad_login_message
+ 1.4: name_regex
+ 1.4: bad_email_message
+ 1.4: bad_name_message
+ 1.4: login_regex
+ 1.4: email_regex
+ 1.2: private
+ 1.2: has_and_belongs_to_many
+ 1.2: before_create
+ 1.2: attr_accessible
+ 0.4: lit_fixnum
+ MTHD
+ end
+
+ it "should be able to parse class_methods_grouped_together" do
+ page = Base.parse(@class_methods_grouped_together)
+ page.should_not be_nil
+ page.score.should == 61.8
+ page.scanned_methods.size.should == 1
+ sm = page.scanned_methods.first
+ sm.name.should == 'User#none'
+ sm.score.should == 32.8
+
+ sm.operators.size.should == 16
+ sm.operators.first.score.should == 7.2
+ sm.operators.first.operator.should == "include"
+
+ sm.operators.last.score.should == 0.4
+ sm.operators.last.operator.should == "lit_fixnum"
+ end
+
+ it "should be able to parse an assignment method" do
+ page = Base.parse(@assignment_method)
+ page.should_not be_nil
+ page.score.should == 21.6
+ page.scanned_methods.size.should == 1
+ sm = page.scanned_methods.first
+ sm.name.should == 'ActivityReport#existing_measure_attributes='
+ sm.score.should == 8.5
+ end
+
+ it "should be able to parse an alpha only method" do
+ page = Base.parse(@alpha_only_method)
+ page.should_not be_nil
+ page.score.should == 13.6283678106927
+ page.scanned_methods.size.should == 1
+ sm = page.scanned_methods.first
+ sm.name.should == 'ErrorMailer#errormail'
+ sm.score.should == 12.5
+ end
+
+ it "should be able to parse method that has digits" do
+ page = Base.parse(@method_that_has_digits)
+ page.should_not be_nil
+ page.score.should == 7.08378429936994
+ page.scanned_methods.size.should == 1
+ sm = page.scanned_methods.first
+ sm.name.should == 'NoImmunizationReason#to_c32'
+ sm.score.should == 7.1
+ end
+
+ it "should be able to parse bang method" do
+ page = Base.parse(@bang_method)
+ page.should_not be_nil
+ page.score.should == 7.08378429936994
+ page.scanned_methods.size.should == 1
+ sm = page.scanned_methods.first
+ sm.name.should == 'NoImmunizationReason#to_c32!'
+ sm.score.should == 7.1
+ end
+
+ it "should return nil when parsing invalid method" do
+ page = Base.parse(@invalid_method)
+ page.should be_nil
+ end
end
+
+IM = <<-IM
+ Total flog = 7.08378429936994
+
+ 3.0: code
+ 2.3: branch
+ 1.4: templateId
+ 1.2: act
+ 1.1: entryRelationship
+IM
+describe MetricFu::Flog do
+
+ describe "generate_report" do
+ it "should generate reports" do
+ generator = Flog::Generator.new('other_dir')
+ generator.should_receive(:flog_results).and_return(['A', 'B'])
+ generator.should_receive(:save_html).at_least(3).times.and_return('')
+ generator.should_receive(:open).any_number_of_times.and_return(['Total Flog = 1273.9 (9.3 +/- 259.2 flog / method)', 'TokenCounter#list_tokens_per_line: (15.2)', '9.0: assignment'].join("\n"))
+ generator.generate_report
+ end
+
+ it "should be able to handle InvalidFlogs" do
+ generator = Flog::Generator.new('other_dir')
+ generator.should_receive(:flog_results).and_return(['A', 'B'])
+ generator.should_receive(:inline_css).any_number_of_times.and_return('')
+ generator.should_receive(:save_html).once
+ generator.should_receive(:open).any_number_of_times.and_return(IM)
+ generator.generate_report
+ end
+ end
+
+ describe "template_name" do
+ it "should return the class name in lowercase" do
+ flog = Flog::Generator.new('base_dir')
+ Flog::Generator.template_name.should == 'flog'
+ end
+ end
+end
+
+describe MetricFu::Flog::Page do
+
+ describe "average_score" do
+ it "should calculate the average score" do
+ page = Page.new(10)
+ page.should_receive(:scanned_methods).any_number_of_times.and_return([ScannedMethod.new(:test, 10), ScannedMethod.new(:test, 20)])
+ page.average_score.should == 15
+ end
+
+ it "should be able to handle divide by zero" do
+ page = Page.new(10)
+ page.should_receive(:scanned_methods).any_number_of_times.and_return([])
+ page.average_score.should == 0
+ end
+ end
+
+ describe "highest_score" do
+ it "should calculate the average score" do
+ page = Page.new(10)
+ page.should_receive(:scanned_methods).any_number_of_times.and_return([ScannedMethod.new(:test, 10), ScannedMethod.new(:test, 20)])
+ page.highest_score.should == 20
+ end
+ end
+end
\ No newline at end of file