summaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2013-02-17 20:20:03 -0800
committerYukihiro "Matz" Matsumoto <[email protected]>2013-02-17 20:20:03 -0800
commit7ba3275bf70fa62a34ea9015e2b03eefd180afe9 (patch)
tree9073bf7da979117a1e18803d2797e377f032349c /test
parent3a78093b45c176baae7b13d47ed08e135aad1123 (diff)
parentf2c77ff2126b6a0b04c7d870b702ee240619f4ce (diff)
downloadmruby-7ba3275bf70fa62a34ea9015e2b03eefd180afe9.tar.gz
mruby-7ba3275bf70fa62a34ea9015e2b03eefd180afe9.zip
Merge pull request #849 from iij/pr-mrbtest-assert-ext
add assert_{true,nil,equal} methods.
Diffstat (limited to 'test')
-rw-r--r--test/assert.rb42
1 files changed, 40 insertions, 2 deletions
diff --git a/test/assert.rb b/test/assert.rb
index 218a911d4..9f3231cd4 100644
--- a/test/assert.rb
+++ b/test/assert.rb
@@ -11,6 +11,11 @@ def assertion_string(err, str, iso=nil, e=nil)
msg += " [#{iso}]" if iso && iso != ''
msg += " => #{e.message}" if e
msg += " (mrbgems: #{GEMNAME})" if Object.const_defined?(:GEMNAME)
+ if $mrbtest_assert && $mrbtest_assert.size > 0
+ $mrbtest_assert.each do |idx, str, diff|
+ msg += "\n - Assertion[#{idx}] Failed: #{str}\n#{diff}"
+ end
+ end
msg
end
@@ -25,8 +30,10 @@ end
def assert(str = 'Assertion failed', iso = '')
print(str, (iso != '' ? " [#{iso}]" : ''), ' : ') if $mrbtest_verbose
begin
- if(!yield)
- $asserts.push(assertion_string('Fail: ', str, iso))
+ $mrbtest_assert = []
+ $mrbtest_assert_idx = 0
+ if(!yield || $mrbtest_assert.size > 0)
+ $asserts.push(assertion_string('Fail: ', str, iso, nil))
$ko_test += 1
print('F')
else
@@ -37,10 +44,41 @@ def assert(str = 'Assertion failed', iso = '')
$asserts.push(assertion_string('Error: ', str, iso, e))
$kill_test += 1
print('X')
+ ensure
+ $mrbtest_assert = nil
end
print("\n") if $mrbtest_verbose
end
+def assertion_diff(exp, act)
+ " Expected: #{exp.inspect}\n" +
+ " Actual: #{act.inspect}"
+end
+
+def assert_true(ret, msg = nil, diff = nil)
+ if $mrbtest_assert
+ $mrbtest_assert_idx += 1
+ if !ret
+ msg = "Expected #{ret.inspect} to be true" unless msg
+ diff = assertion_diff(true, ret) unless diff
+ $mrbtest_assert.push([$mrbtest_assert_idx, msg, diff])
+ end
+ end
+ ret
+end
+
+def assert_equal(exp, act, msg = nil)
+ msg = "Expected to be equal" unless msg
+ diff = assertion_diff(exp, act)
+ assert_true(exp == act, msg, diff)
+end
+
+def assert_nil(obj, msg = nil)
+ msg = "Expected #{obj.inspect} to be nil" unless msg
+ diff = assertion_diff(nil, obj)
+ assert_true(obj.nil?, msg, diff)
+end
+
##
# Report the test result and print all assertions
# which were reported broken.