mirror of
https://github.com/michaeldv/pit.git
synced 2025-12-08 23:53:25 +00:00
75 lines
1.7 KiB
Ruby
75 lines
1.7 KiB
Ruby
# Copyright (c) 2010 Michael Dvorkin
|
|
#
|
|
# This program is free software; you can redistribute it and/or
|
|
# modify it under the terms of the Simplified BSD License (also
|
|
# known as the "2-Clause License" or "FreeBSD License".)
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but without any warranty; without even the implied warranty of
|
|
# merchantability or fitness for a particular purpose.
|
|
|
|
# I am well aware there is Test::Unit, minitest, rspec, shoulda,
|
|
# bacon and a dozen of other testing frameworks. I just had fun
|
|
# writing this one and frankly that's all I need for basic testing.
|
|
module TinyShould
|
|
def should
|
|
def self.equal(expected)
|
|
raise Hand unless self == expected
|
|
print '.'
|
|
rescue => e
|
|
e.oops "equal failed: #{self} != #{expected}"
|
|
end
|
|
|
|
def self.match(expected)
|
|
raise Hand unless self =~ expected
|
|
print '.'
|
|
rescue => e
|
|
e.oops "match failed: #{self} !~ /#{expected.source}/"
|
|
end
|
|
|
|
self
|
|
end
|
|
|
|
def should_not
|
|
def self.equal(expected)
|
|
raise Hand unless self != expected
|
|
print '.'
|
|
rescue => e
|
|
e.oops "not equal failed: #{self} == #{expected}"
|
|
end
|
|
|
|
def self.match(expected)
|
|
raise Hand unless self !~ expected
|
|
print '.'
|
|
rescue => e
|
|
e.oops "not match failed: #{self} =~ /#{expected.source}/"
|
|
end
|
|
|
|
self
|
|
end
|
|
end
|
|
|
|
class Hand < RuntimeError
|
|
def oops(msg)
|
|
puts "\n#{msg} in #{self.backtrace[1].sub(':', ' line ')}"
|
|
end
|
|
end
|
|
|
|
class String
|
|
include TinyShould
|
|
end
|
|
|
|
if $0 == __FILE__
|
|
"123".should.equal "123"
|
|
"123".should.equal "321"
|
|
|
|
"123".should_not.equal "321"
|
|
"123".should_not.equal "123"
|
|
|
|
"abc".should.match /B/i
|
|
"abc".should.match /xyz/
|
|
|
|
"abc".should_not.match /xyz/
|
|
"abc".should_not.match /abc/
|
|
end
|