class MinitestBender::Sections::Activity

Constants

TIME_UNITS

Attributes

io[R]
results[R]
started_at[R]

Public Class Methods

new(io, started_at, results) click to toggle source
# File lib/minitest-bender/sections/activity.rb, line 6
def initialize(io, started_at, results)
  @io = io
  @started_at = started_at
  @results = results
end

Public Instance Methods

print() click to toggle source

Private Instance Methods

assertion_count() click to toggle source
# File lib/minitest-bender/sections/activity.rb, line 65
def assertion_count
  @assertion_count ||= results.reduce(0) { |acum, result| acum + result.assertions }
end
assertions_rate() click to toggle source
# File lib/minitest-bender/sections/activity.rb, line 49
def assertions_rate
  (assertion_count / total_time).round(4)
end
auxiliary_verb() click to toggle source
# File lib/minitest-bender/sections/activity.rb, line 29
def auxiliary_verb
  test_count == 1 ? 'was' : 'were'
end
formatted_assertions_rate() click to toggle source
# File lib/minitest-bender/sections/activity.rb, line 41
def formatted_assertions_rate
  Colorizer.colorize("#{assertions_rate} assertions/s", :time)
end
formatted_tests_rate() click to toggle source
# File lib/minitest-bender/sections/activity.rb, line 37
def formatted_tests_rate
  Colorizer.colorize("#{tests_rate} tests/s", :time)
end
formatted_total_assertions() click to toggle source
# File lib/minitest-bender/sections/activity.rb, line 25
def formatted_total_assertions
  Colorizer.colorize(total_assertions, :assertions)
end
formatted_total_tests() click to toggle source
# File lib/minitest-bender/sections/activity.rb, line 21
def formatted_total_tests
  Colorizer.colorize(total_tests, :tests)
end
formatted_total_time() click to toggle source
# File lib/minitest-bender/sections/activity.rb, line 33
def formatted_total_time
  Colorizer.colorize(total_time_string, :time)
end
test_count() click to toggle source
# File lib/minitest-bender/sections/activity.rb, line 61
def test_count
  results.size
end
tests_rate() click to toggle source
# File lib/minitest-bender/sections/activity.rb, line 45
def tests_rate
  (test_count / total_time).round(4)
end
time_units() click to toggle source
# File lib/minitest-bender/sections/activity.rb, line 90
def time_units
  TIME_UNITS
end
total_assertions() click to toggle source
# File lib/minitest-bender/sections/activity.rb, line 57
def total_assertions
  "#{assertion_count} assertion#{assertion_count == 1 ? '' : 's'}"
end
total_tests() click to toggle source
# File lib/minitest-bender/sections/activity.rb, line 53
def total_tests
  "#{test_count} test#{test_count == 1 ? '' : 's'}"
end
total_time() click to toggle source
# File lib/minitest-bender/sections/activity.rb, line 86
def total_time
  @total_time ||= Time.now - started_at
end
total_time_string() click to toggle source
# File lib/minitest-bender/sections/activity.rb, line 69
def total_time_string
  minutes, seconds = total_time.divmod(60)
  hours, minutes = minutes.divmod(60)
  days, hours = hours.divmod(24)

  values = [days, hours, minutes]
  seconds_decimals = values.all?(&:zero?) ? 3 : 0
  values.push(seconds.round(seconds_decimals))

  values_with_units = values.map.with_index do |value, index|
    unit = time_units[index]
    value > 0 ? "#{value} #{unit}#{value.to_s == '1' ? '' : 's'}" : ''
  end

  Utils.english_join(values_with_units)
end