65 lines
1,010 B
Ruby
65 lines
1,010 B
Ruby
|
module Mutant
|
||
|
class Reporter
|
||
|
|
||
|
# Stats gathered while reporter is running
|
||
|
class Stats
|
||
|
|
||
|
# Return subject count
|
||
|
#
|
||
|
# @return [Fixnum]
|
||
|
#
|
||
|
# @api private
|
||
|
#
|
||
|
attr_reader :subject
|
||
|
|
||
|
# Return mutation count
|
||
|
#
|
||
|
# @return [Fixnum]
|
||
|
#
|
||
|
# @api private
|
||
|
#
|
||
|
attr_reader :mutation
|
||
|
|
||
|
# Return kill count
|
||
|
#
|
||
|
# @return [Fixnum]
|
||
|
#
|
||
|
# @api private
|
||
|
#
|
||
|
attr_reader :kill
|
||
|
|
||
|
# Return mutation runtime
|
||
|
#
|
||
|
# @return [Float]
|
||
|
#
|
||
|
# @api private
|
||
|
#
|
||
|
attr_reader :time
|
||
|
|
||
|
def initialize
|
||
|
@start = Time.now
|
||
|
@subject = @mutation = @kill = @time = 0
|
||
|
end
|
||
|
|
||
|
def runtime
|
||
|
Time.now - @start
|
||
|
end
|
||
|
|
||
|
def subject
|
||
|
@subject +=1
|
||
|
end
|
||
|
|
||
|
def alive
|
||
|
@mutation - @kill
|
||
|
end
|
||
|
|
||
|
def killer(killer)
|
||
|
@mutation +=1
|
||
|
@kill +=1 unless killer.fail?
|
||
|
@time += killer.runtime
|
||
|
end
|
||
|
end
|
||
|
|
||
|
end
|
||
|
end
|