class RR::Space
RR::Space.instance
is the global state subject for the RR
framework.
Attributes
instance[W]
ordered_doubles[R]
recorded_calls[R]
trim_backtrace[RW]
Public Class Methods
instance()
click to toggle source
# File lib/rr/space.rb, line 11 def instance @instance ||= new end
new()
click to toggle source
# File lib/rr/space.rb, line 25 def initialize @ordered_doubles = [] @trim_backtrace = false @recorded_calls = RR::RecordedCalls.new end
Protected Class Methods
method_missing(method_name, *args, &block)
click to toggle source
# File lib/rr/space.rb, line 17 def method_missing(method_name, *args, &block) instance.__send__(method_name, *args, &block) end
Public Instance Methods
blank_slate_whitelist()
click to toggle source
# File lib/rr/space.rb, line 86 def blank_slate_whitelist @blank_slate_whitelist ||= [ "object_id", "respond_to?", "respond_to_missing?", "method_missing", "instance_eval", "instance_exec", "class_eval" ] end
record_call(subject, method_name, arguments, block)
click to toggle source
# File lib/rr/space.rb, line 82 def record_call(subject, method_name, arguments, block) @recorded_calls.add(subject, method_name, arguments, block) end
register_ordered_double(double)
click to toggle source
Registers the ordered Double
to be verified.
# File lib/rr/space.rb, line 32 def register_ordered_double(double) @ordered_doubles << double unless ordered_doubles.include?(double) end
reset()
click to toggle source
Resets the registered Doubles and ordered Doubles
# File lib/rr/space.rb, line 61 def reset RR.trim_backtrace = false RR.overridden_error_class = nil reset_ordered_doubles Injections::DoubleInjection.reset reset_method_missing_injections reset_singleton_method_added_injections reset_recorded_calls reset_bound_objects end
reset_double(subject, method_name)
click to toggle source
Resets the DoubleInjection for the passed in subject and method_name.
# File lib/rr/space.rb, line 78 def reset_double(subject, method_name) Injections::DoubleInjection.reset_double(class << subject; self; end, method_name) end
verify_double(subject, method_name)
click to toggle source
Verifies the DoubleInjection for the passed in subject and method_name.
# File lib/rr/space.rb, line 73 def verify_double(subject, method_name) Injections::DoubleInjection.verify_double(class << subject; self; end, method_name) end
verify_doubles(*subjects)
click to toggle source
Verifies all the DoubleInjection objects have met their TimesCalledExpectations.
# File lib/rr/space.rb, line 55 def verify_doubles(*subjects) Injections::DoubleInjection.verify(*subjects) end
Also aliased as: verify
verify_ordered_double(double)
click to toggle source
Verifies that the passed in ordered Double
is being called in the correct position.
# File lib/rr/space.rb, line 38 def verify_ordered_double(double) unless double.terminal? raise RR::Errors.build_error(:DoubleOrderError, "Ordered Doubles cannot have a NonTerminal TimesCalledExpectation") end unless @ordered_doubles.first == double message = Double.formatted_name(double.method_name, double.expected_arguments) message << " called out of order in list\n" message << Double.list_message_part(@ordered_doubles) raise RR::Errors.build_error(:DoubleOrderError, message) end @ordered_doubles.shift unless double.attempt? double end
Protected Instance Methods
reset_bound_objects()
click to toggle source
# File lib/rr/space.rb, line 116 def reset_bound_objects # TODO: Figure out how to clear and reset these bindings #RR::Injections::DoubleInjection::BoundObjects.clear #RR::Injections::DoubleInjection::MethodMissingInjection.clear end
reset_method_missing_injections()
click to toggle source
# File lib/rr/space.rb, line 98 def reset_method_missing_injections Injections::MethodMissingInjection.instances.each do |subject_class, injection| injection.reset end Injections::MethodMissingInjection.instances.clear end
reset_ordered_doubles()
click to toggle source
Removes the ordered Doubles from the list
# File lib/rr/space.rb, line 94 def reset_ordered_doubles @ordered_doubles.clear end
reset_recorded_calls()
click to toggle source
# File lib/rr/space.rb, line 112 def reset_recorded_calls @recorded_calls.clear end
reset_singleton_method_added_injections()
click to toggle source
# File lib/rr/space.rb, line 105 def reset_singleton_method_added_injections Injections::SingletonMethodAddedInjection.instances.each do |subject, injection| injection.reset end Injections::SingletonMethodAddedInjection.instances.clear end