dsl/test_framework.rb
tests/_examples/dsl/test_framework.rb in the metorex repository.
# Simple test framework DSL
# Demonstrates using blocks to build a minimal testing framework
class TestSuite
def initialize(name)
@name = name
@tests = []
@passed = 0
@failed = 0
end
def test(description, &block)
@tests.push([description, block])
end
def run
puts "Suite: #{@name}"
@tests.each do |pair|
desc = pair[0]
blk = pair[1]
result = blk.call
if result
@passed = @passed + 1
puts " PASS: #{desc}"
else
@failed = @failed + 1
puts " FAIL: #{desc}"
end
end
puts "Results: #{@passed} passed, #{@failed} failed"
end
end
suite = TestSuite.new("Math Tests")
suite.test("1 + 1 equals 2") { 1 + 1 == 2 }
suite.test("10 / 2 equals 5") { 10 / 2 == 5 }
suite.test("3 * 4 equals 12") { 3 * 4 == 12 }
suite.test("5 - 3 equals 2") { 5 - 3 == 2 }
suite.test("impossible math") { 1 + 1 == 3 }
suite.run
Output:
Suite: Math Tests
PASS: 1 + 1 equals 2
PASS: 10 / 2 equals 5
PASS: 3 * 4 equals 12
PASS: 5 - 3 equals 2
FAIL: impossible math
Results: 4 passed, 1 failed