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 |