class TestRunner::Assert::Assertion

Attributes

fails[R]
passes[R]
source[RW]

Public Class Methods

new(subject_proc, checks) click to toggle source
# File lib/test_runner/assert/assertion.rb, line 8
def initialize subject_proc, checks
  @subject_proc = subject_proc
  @checks = checks
  @passes = []
  @fails  = []
  @trace = caller_locations
end

Public Instance Methods

build_checks() click to toggle source
# File lib/test_runner/assert/assertion.rb, line 23
def build_checks
  @checks.map do |check_name, argument|
    TestRunner::Config.internal_logger.debug "Resolving check #{check_name.inspect}, arg=#{argument.inspect}"
    resolve_check check_name, argument
  end
end
call() click to toggle source
# File lib/test_runner/assert/assertion.rb, line 16
def call
  perform_checks
  freeze
  raise to_error if failed?
  subject
end
failed?() click to toggle source
# File lib/test_runner/assert/assertion.rb, line 30
def failed?
  fails.any?
end
file() click to toggle source
# File lib/test_runner/assert/assertion.rb, line 34
def file
  @trace[0].path
end
freeze() click to toggle source
# File lib/test_runner/assert/assertion.rb, line 38
def freeze
  passes.freeze
  fails.freeze
end
line() click to toggle source
# File lib/test_runner/assert/assertion.rb, line 43
def line
  @trace[0].lineno
end
passed?() click to toggle source
# File lib/test_runner/assert/assertion.rb, line 47
def passed?
  not failed?
end
perform_checks() click to toggle source
# File lib/test_runner/assert/assertion.rb, line 51
def perform_checks
  build_checks.each do |check|
    check.evaluate
    ary = if check.passed? then passes else fails end
    ary.push check
  end
end
resolve_check(check_name, argument) click to toggle source
# File lib/test_runner/assert/assertion.rb, line 59
def resolve_check check_name, argument
  check = Checks.resolve check_name do
    check_name = :include if check_name == :includes
    argument = [check_name, *argument]
    Checks[:predicate]
  end
  check.new subject_thunk, argument
end
subject() click to toggle source
# File lib/test_runner/assert/assertion.rb, line 68
def subject
  subject_thunk.call
end
subject_thunk() click to toggle source
# File lib/test_runner/assert/assertion.rb, line 72
def subject_thunk
  @subject_thunk ||= SubjectThunk.new @subject_proc
end
to_error() click to toggle source
# File lib/test_runner/assert/assertion.rb, line 76
def to_error
  AssertionFailed.new self
end
trace() click to toggle source
# File lib/test_runner/assert/assertion.rb, line 80
def trace
  BacktraceFilter.(@trace)
end