module Passert
Constants
- VERSION
Public Class Methods
assert(*args) { || ... }
click to toggle source
# File lib/passert.rb, line 14 def assert(*args) pass, expected, actual = _check_assertion(*args) return actual if pass message = if block_given? yield elsif expected "Expected #{expected.inspect}, got #{actual.inspect}!" else "Assertion failed!" end # Remove this method from the backtrace, to make errors clearer. backtrace = caller case message when Exception raise message.class, message.message, backtrace else raise AssertionFailed, message.to_s, backtrace end end
assert?(*args)
click to toggle source
# File lib/passert.rb, line 9 def assert?(*args) pass, _, _ = _check_assertion(*args) pass end
Private Class Methods
_check_assertion(first, second = (second_omitted = true; nil))
click to toggle source
# File lib/passert.rb, line 40 def _check_assertion(first, second = (second_omitted = true; nil)) # Want to support: # assert(x) # Truthiness. # assert(thing, other) # Trip-equals. # assert([thing1, thing2], other) # Multiple Trip-equals. if second_omitted expected = nil actual = first else expected = first actual = second end pass = if second_omitted actual elsif expected.is_a?(Array) expected.any? { |k| k === actual } else expected === actual end [!!pass, expected, actual] end