require 'test/unit/util/observable'
module Test
module Unit
class TestResult
include Util::Observable
CHANGED = "CHANGED"
FAULT = "FAULT"
attr_reader(:run_count, :assertion_count)
def initialize
@run_count, @assertion_count = 0, 0
@failures, @errors = Array.new, Array.new
end
def add_run
@run_count += 1
notify_listeners(CHANGED, self)
end
def add_failure(failure)
@failures << failure
notify_listeners(FAULT, failure)
notify_listeners(CHANGED, self)
end
def add_error(error)
@errors << error
notify_listeners(FAULT, error)
notify_listeners(CHANGED, self)
end
def add_assertion
@assertion_count += 1
notify_listeners(CHANGED, self)
end
def to_s
"#{run_count} tests, #{assertion_count} assertions, #{failure_count} failures, #{error_count} errors"
end
def passed?
return @failures.empty? && @errors.empty?
end
def failure_count
return @failures.size
end
def error_count
return @errors.size
end
end
end
end