Class: RubyDocTest::Result
Instance Method Summary collapse
- #expected_result ⇒ Object
-
#matches?(actual_result) ⇒ Boolean
Tests doctest: Strings should match >> r = RubyDocTest::Result.new(["=> 'hi'"]) >> r.matches? 'hi' => true.
- #normalize_result(s) ⇒ Object
Methods inherited from Lines
#initialize, #inspect, #line_number, #lines, #range
Constructor Details
This class inherits a constructor from RubyDocTest::Lines
Instance Method Details
#expected_result ⇒ Object
13 14 15 16 17 18 19 |
# File 'lib/result.rb', line 13 def expected_result @expected_result ||= begin lines.first =~ /^#{Regexp.escape(indentation)}=>\s(.*)$/ ([$1] + (lines[1..-1] || [])).join("\n") end end |
#matches?(actual_result) ⇒ Boolean
Tests
doctest: Strings should match
r = RubyDocTest::Result.new(["=> 'hi'"]) r.matches? 'hi' => true
r = RubyDocTest::Result.new(["=> "hi""]) r.matches? "hi" => true
doctest: Regexps should match
r = RubyDocTest::Result.new(["=> /^reg.../"]) r.matches? /^reg.../ => true
r = RubyDocTest::Result.new(["=> /^reg.../"]) r.matches? /^regexp/ => false
doctest: Arrays should match
r = RubyDocTest::Result.new(["=> [1, 2, 3]"]) r.matches? [1, 2, 3] => true
doctest: Arrays of arrays should match
r = RubyDocTest::Result.new(["=> [[1, 2], [3, 4]]"]) r.matches? [[1, 2], [3, 4]] => true
doctest: Hashes should match
r = RubyDocTest::Result.new(["=> => 1, :two => 2"]) r.matches?(=> 2, :one => 1) => true
54 55 56 57 58 59 60 61 |
# File 'lib/result.rb', line 54 def matches?(actual_result) normalize_result(actual_result.inspect) == normalize_result(expected_result) \ or actual_result == eval(expected_result, TOPLEVEL_BINDING) rescue Exception false end |
#normalize_result(s) ⇒ Object
9 10 11 |
# File 'lib/result.rb', line 9 def normalize_result(s) s.gsub(/:0x[a-f0-9]{8}>/, ':0xXXXXXXXX>').strip end |