diff options
author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-12-11 10:40:24 +0000 |
---|---|---|
committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-12-11 10:40:24 +0000 |
commit | f39f27008203ec21427b03aa82f03b1c9fafb332 (patch) | |
tree | ad53d57f0d672fbb38ef4e69123522c67ca10a02 /lib/test/unit | |
parent | 16abdb0bfe955963561a3699d51e363e711aa1e7 (diff) | |
download | ruby-f39f27008203ec21427b03aa82f03b1c9fafb332.tar.gz ruby-f39f27008203ec21427b03aa82f03b1c9fafb332.tar.xz ruby-f39f27008203ec21427b03aa82f03b1c9fafb332.zip |
* lib/test/unit/assertions.rb: extracted from lib/test/unit.rb.
lib/test/unit/testcase.rb: ditto.
at asakusa.rb. [ruby-core:20014]
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@20632 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/test/unit')
-rw-r--r-- | lib/test/unit/assertions.rb | 110 | ||||
-rw-r--r-- | lib/test/unit/testcase.rb | 12 |
2 files changed, 122 insertions, 0 deletions
diff --git a/lib/test/unit/assertions.rb b/lib/test/unit/assertions.rb new file mode 100644 index 000000000..2c1f76e69 --- /dev/null +++ b/lib/test/unit/assertions.rb @@ -0,0 +1,110 @@ +require 'minitest/unit' +require 'pp' + +module Test + module Unit + module Assertions + include MiniTest::Assertions + + def mu_pp(obj) + obj.pretty_inspect.chomp + end + + def assert_raise(*args, &b) + assert_raises(*args, &b) + end + + def assert_nothing_raised(*args) + if Module === args.last + msg = nil + else + msg = args.pop + end + begin + yield + rescue Exception => e + if ((args.empty? && !e.instance_of?(MiniTest::Assertion)) || + args.any? {|a| a.instance_of?(Module) ? e.is_a?(a) : e.class == a }) + msg = message(msg) { "Exception raised:\n<#{mu_pp(e)}>" } + raise MiniTest::Assertion, msg.call, e.backtrace + else + raise + end + end + nil + end + + def assert_nothing_thrown(msg=nil) + begin + yield + rescue ArgumentError => error + raise error if /\Auncaught throw (.+)\z/m !~ error.message + msg = message(msg) { "<#{$1}> was thrown when nothing was expected" } + flunk(msg) + end + assert(true, "Expected nothing to be thrown") + end + + def assert_equal(exp, act, msg = nil) + msg = message(msg) { + exp_str = mu_pp(exp) + act_str = mu_pp(act) + exp_comment = '' + act_comment = '' + if exp_str == act_str + if exp.is_a?(String) && act.is_a?(String) + exp_comment = " (#{exp.encoding})" + act_comment = " (#{act.encoding})" + elsif exp.is_a?(Time) && act.is_a?(Time) + exp_comment = " (nsec=#{exp.nsec})" + act_comment = " (nsec=#{act.nsec})" + end + elsif !Encoding.compatible?(exp_str, act_str) + if exp.is_a?(String) && act.is_a?(String) + exp_str = exp.dump + act_str = act.dump + exp_comment = " (#{exp.encoding})" + act_comment = " (#{act.encoding})" + else + exp_str = exp_str.dump + act_str = act_str.dump + end + end + "<#{exp_str}>#{exp_comment} expected but was\n<#{act_str}>#{act_comment}" + } + assert(exp == act, msg) + end + + def assert_not_nil(exp, msg=nil) + msg = message(msg) { "<#{mu_pp(exp)}> expected to not be nil" } + assert(!exp.nil?, msg) + end + + def assert_not_equal(exp, act, msg=nil) + msg = message(msg) { "<#{mu_pp(exp)}> expected to be != to\n<#{mu_pp(act)}>" } + assert(exp != act, msg) + end + + def assert_no_match(regexp, string, msg=nil) + assert_instance_of(Regexp, regexp, "The first argument to assert_no_match should be a Regexp.") + msg = message(msg) { "<#{mu_pp(regexp)}> expected to not match\n<#{mu_pp(string)}>" } + assert(regexp !~ string, msg) + end + + def assert_not_same(expected, actual, message="") + msg = message(msg) { build_message(message, <<EOT, expected, expected.__id__, actual, actual.__id__) } +<?> +with id <?> expected to not be equal\\? to +<?> +with id <?>. +EOT + assert(!actual.equal?(expected), msg) + end + + def build_message(head, template=nil, *arguments) + template &&= template.chomp + template.gsub(/\?/) { mu_pp(arguments.shift) } + end + end + end +end diff --git a/lib/test/unit/testcase.rb b/lib/test/unit/testcase.rb new file mode 100644 index 000000000..89aa0f34c --- /dev/null +++ b/lib/test/unit/testcase.rb @@ -0,0 +1,12 @@ +require 'test/unit/assertions' + +module Test + module Unit + class TestCase < MiniTest::Unit::TestCase + include Assertions + def self.test_order + :sorted + end + end + end +end |