class Test {
def setup { }
def teardown { }
# Fails unless `cond` is truthy.
#
# assert(1 == 1) # passes
# assert(1 == 2) # raises "assertion failed"
#
def assert(cond) {
if !cond {
raise("assertion failed")
}
}
# Fails unless `expected` equals `actual`.
#
# assert_equal(5, (-5).abs) # passes
# assert_equal(5, 3) # raises "expected 5, got 3"
#
def assert_equal(expected, actual) {
if expected != actual {
raise("expected #{expected}, got #{actual}")
}
}
# Fails unless `obj` is nil.
#
# assert_nil(nil) # passes
# assert_nil(0) # raises "expected nil, got 0"
#
def assert_nil(obj) {
if obj != nil {
raise("expected nil, got #{obj}")
}
}
# Fails unless `actual` is within `delta` of `expected`.
# Useful for floating-point comparisons where exact equality is unreliable.
#
# assert_in_delta(3.14, 3.1415, 0.01) # passes
# assert_in_delta(3.14, 3.15, 0.001) # raises
#
def assert_in_delta(expected, actual, delta) {
diff = (expected - actual).abs
if diff > delta {
raise("expected #{actual} to be within #{delta} of #{expected}")
}
}
# Fails unless the block raises an exception.
#
# assert_raises { raise("boom") } # passes
# assert_raises { 1 + 1 } # raises "expected an exception but none was raised"
#
def assert_raises {
raised = false
begin
yield
rescue e
raised = true
end
if !raised {
raise("expected an exception but none was raised")
}
}
}