class TestBench::Assert

Attributes

block[R]
mod[R]
subject[R]

Public Class Methods

call(subject, mod=nil, &block) click to toggle source
# File lib/test_bench/assert.rb, line 13
def self.call subject, mod=nil, &block
  block ||= identity_block

  instance = new subject, mod, block
  instance.call
end
identity_block() click to toggle source
# File lib/test_bench/assert.rb, line 54
def self.identity_block
  @identity_block ||= -> subject do subject end
end
new(subject, mod, block) click to toggle source
# File lib/test_bench/assert.rb, line 7
def initialize subject, mod, block
  @subject = subject
  @mod = mod
  @block = block
end

Public Instance Methods

assertions_module() click to toggle source
# File lib/test_bench/assert.rb, line 20
def assertions_module
  return mod if mod

  if subject_namespace.const_defined? :Assertions
    subject_namespace.const_get :Assertions
  end
end
call() click to toggle source
# File lib/test_bench/assert.rb, line 28
def call
  extend_subject assertions_module if assertions_module

  result = subject.instance_exec subject, &block

  interpret_result result
end
extend_subject(mod) click to toggle source
# File lib/test_bench/assert.rb, line 36
def extend_subject mod
  raise TypeError if subject.frozen?
  subject.extend mod
rescue TypeError
end
interpret_result(result) click to toggle source
# File lib/test_bench/assert.rb, line 42
def interpret_result result
  if result then true else false end
end
subject_namespace() click to toggle source
# File lib/test_bench/assert.rb, line 46
def subject_namespace
  if subject.is_a? Module
    subject
  else
    subject.class
  end
end