class RSpec::Matchers::BuiltIn::Change
Public Class Methods
new(receiver=nil, message=nil, &block)
click to toggle source
# File lib/rspec/matchers/built_in/change.rb, line 5 def initialize(receiver=nil, message=nil, &block) @message = message @value_proc = block || lambda {receiver.__send__(message)} @expected_after = @expected_before = @minimum = @maximum = @expected_delta = nil @eval_before = @eval_after = false end
Public Instance Methods
actual_delta()
click to toggle source
# File lib/rspec/matchers/built_in/change.rb, line 54 def actual_delta @actual_after - @actual_before end
by(expected_delta)
click to toggle source
# File lib/rspec/matchers/built_in/change.rb, line 62 def by(expected_delta) @expected_delta = expected_delta self end
by_at_least(minimum)
click to toggle source
# File lib/rspec/matchers/built_in/change.rb, line 67 def by_at_least(minimum) @minimum = minimum self end
by_at_most(maximum)
click to toggle source
# File lib/rspec/matchers/built_in/change.rb, line 72 def by_at_most(maximum) @maximum = maximum self end
description()
click to toggle source
# File lib/rspec/matchers/built_in/change.rb, line 89 def description "change ##{message}" end
evaluate_value_proc()
click to toggle source
# File lib/rspec/matchers/built_in/change.rb, line 29 def evaluate_value_proc case val = @value_proc.call when Enumerable, String val.dup else val end end
failure_message_for_should()
click to toggle source
# File lib/rspec/matchers/built_in/change.rb, line 38 def failure_message_for_should if @eval_before && !expected_matches_actual?(@expected_before, @actual_before) "#{message} should have initially been #{@expected_before.inspect}, but was #{@actual_before.inspect}" elsif @eval_after && !expected_matches_actual?(@expected_after, @actual_after) "#{message} should have been changed to #{failure_message_for_expected_after}, but is now #{@actual_after.inspect}" elsif @expected_delta "#{message} should have been changed by #{@expected_delta.inspect}, but was changed by #{actual_delta.inspect}" elsif @minimum "#{message} should have been changed by at least #{@minimum.inspect}, but was changed by #{actual_delta.inspect}" elsif @maximum "#{message} should have been changed by at most #{@maximum.inspect}, but was changed by #{actual_delta.inspect}" else "#{message} should have changed, but is still #{@actual_before.inspect}" end end
failure_message_for_should_not()
click to toggle source
# File lib/rspec/matchers/built_in/change.rb, line 58 def failure_message_for_should_not "#{message} should not have changed, but did change from #{@actual_before.inspect} to #{@actual_after.inspect}" end
from(before)
click to toggle source
# File lib/rspec/matchers/built_in/change.rb, line 83 def from (before) @eval_before = true @expected_before = before self end
matches?(event_proc)
click to toggle source
# File lib/rspec/matchers/built_in/change.rb, line 12 def matches?(event_proc) raise_block_syntax_error if block_given? @actual_before = evaluate_value_proc event_proc.call @actual_after = evaluate_value_proc (!change_expected? || changed?) && matches_before? && matches_after? && matches_expected_delta? && matches_min? && matches_max? end
Also aliased as: ==
raise_block_syntax_error()
click to toggle source
# File lib/rspec/matchers/built_in/change.rb, line 23 def raise_block_syntax_error raise SyntaxError.new("block passed to should or should_not change must use {} instead of do/end ") end
to(to)
click to toggle source
# File lib/rspec/matchers/built_in/change.rb, line 77 def to(to) @eval_after = true @expected_after = to self end
Private Instance Methods
change_expected?()
click to toggle source
# File lib/rspec/matchers/built_in/change.rb, line 107 def change_expected? @expected_delta != 0 end
changed?()
click to toggle source
# File lib/rspec/matchers/built_in/change.rb, line 111 def changed? @actual_before != @actual_after end
expected_matches_actual?(expected, actual)
click to toggle source
# File lib/rspec/matchers/built_in/change.rb, line 135 def expected_matches_actual?(expected, actual) expected === actual || actual == expected end
failure_message_for_expected_after()
click to toggle source
# File lib/rspec/matchers/built_in/change.rb, line 95 def failure_message_for_expected_after if RSpec::Matchers.is_a_matcher?(@expected_after) @expected_after.description else @expected_after.inspect end end
matches_after?()
click to toggle source
# File lib/rspec/matchers/built_in/change.rb, line 119 def matches_after? @eval_after ? expected_matches_actual?(@expected_after, @actual_after) : true end
matches_before?()
click to toggle source
# File lib/rspec/matchers/built_in/change.rb, line 115 def matches_before? @eval_before ? expected_matches_actual?(@expected_before, @actual_before) : true end
matches_expected_delta?()
click to toggle source
# File lib/rspec/matchers/built_in/change.rb, line 123 def matches_expected_delta? @expected_delta ? (@actual_before + @expected_delta == @actual_after) : true end
matches_max?()
click to toggle source
# File lib/rspec/matchers/built_in/change.rb, line 131 def matches_max? @maximum ? (@actual_after - @actual_before <= @maximum) : true end
matches_min?()
click to toggle source
# File lib/rspec/matchers/built_in/change.rb, line 127 def matches_min? @minimum ? (@actual_after - @actual_before >= @minimum) : true end
message()
click to toggle source
# File lib/rspec/matchers/built_in/change.rb, line 103 def message @message || "result" end