Class RR::Space
In: lib/rr/space.rb
Parent: Object

RR::Space.instance is the global state subject for the RR framework.

Methods

Classes and Modules

Module RR::Space::Reader

Attributes

instance  [W] 
ordered_doubles  [R] 
recorded_calls  [R] 
trim_backtrace  [RW] 

Public Class methods

[Source]

    # File lib/rr/space.rb, line 11
11:       def instance
12:         @instance ||= new
13:       end

[Source]

    # File lib/rr/space.rb, line 24
24:     def initialize
25:       @ordered_doubles = []
26:       @trim_backtrace = false
27:       @recorded_calls = RR::RecordedCalls.new
28:     end

Protected Class methods

[Source]

    # File lib/rr/space.rb, line 17
17:       def method_missing(method_name, *args, &block)
18:         instance.__send__(method_name, *args, &block)
19:       end

Public Instance methods

[Source]

    # File lib/rr/space.rb, line 83
83:     def blank_slate_whitelist
84:       @blank_slate_whitelist ||= [
85:         "object_id", "respond_to?", "respond_to_missing?", "method_missing", "instance_eval", "instance_exec", "class_eval"
86:       ]
87:     end

[Source]

    # File lib/rr/space.rb, line 79
79:     def record_call(subject, method_name, arguments, block)
80:       @recorded_calls << [subject, method_name, arguments, block]
81:     end

Registers the ordered Double to be verified.

[Source]

    # File lib/rr/space.rb, line 31
31:     def register_ordered_double(double)
32:       @ordered_doubles << double unless ordered_doubles.include?(double)
33:     end

Resets the registered Doubles and ordered Doubles

[Source]

    # File lib/rr/space.rb, line 60
60:     def reset
61:       reset_ordered_doubles
62:       Injections::DoubleInjection.reset
63:       reset_method_missing_injections
64:       reset_singleton_method_added_injections
65:       reset_recorded_calls
66:       reset_bound_objects
67:     end

Resets the DoubleInjection for the passed in subject and method_name.

[Source]

    # File lib/rr/space.rb, line 75
75:     def reset_double(subject, method_name)
76:       Injections::DoubleInjection.reset_double(class << subject; self; end, method_name)
77:     end
verify(*subjects)

Alias for verify_doubles

Verifies the DoubleInjection for the passed in subject and method_name.

[Source]

    # File lib/rr/space.rb, line 70
70:     def verify_double(subject, method_name)
71:       Injections::DoubleInjection.verify_double(class << subject; self; end, method_name)
72:     end

Verifies all the DoubleInjection objects have met their TimesCalledExpectations.

[Source]

    # File lib/rr/space.rb, line 54
54:     def verify_doubles(*subjects)
55:       Injections::DoubleInjection.verify(*subjects)
56:     end

Verifies that the passed in ordered Double is being called in the correct position.

[Source]

    # File lib/rr/space.rb, line 37
37:     def verify_ordered_double(double)
38:       unless double.terminal?
39:         raise Errors::DoubleOrderError,
40:               "Ordered Doubles cannot have a NonTerminal TimesCalledExpectation"
41:       end
42:       unless @ordered_doubles.first == double
43:         message = Double.formatted_name(double.method_name, double.expected_arguments)
44:         message << " called out of order in list\n"
45:         message << Double.list_message_part(@ordered_doubles)
46:         raise Errors::DoubleOrderError, message
47:       end
48:       @ordered_doubles.shift unless double.attempt?
49:       double
50:     end

Protected Instance methods

[Source]

     # File lib/rr/space.rb, line 113
113:     def reset_bound_objects
114:       # TODO: Figure out how to clear and reset these bindings
115:       #RR::Injections::DoubleInjection::BoundObjects.clear
116:       #RR::Injections::DoubleInjection::MethodMissingInjection.clear
117:     end

[Source]

     # File lib/rr/space.rb, line 95
 95:     def reset_method_missing_injections
 96:       Injections::MethodMissingInjection.instances.each do |subject_class, injection|
 97:         injection.reset
 98:       end
 99:       Injections::MethodMissingInjection.instances.clear
100:     end

Removes the ordered Doubles from the list

[Source]

    # File lib/rr/space.rb, line 91
91:     def reset_ordered_doubles
92:       @ordered_doubles.clear
93:     end

[Source]

     # File lib/rr/space.rb, line 109
109:     def reset_recorded_calls
110:       @recorded_calls.clear
111:     end

[Source]

     # File lib/rr/space.rb, line 102
102:     def reset_singleton_method_added_injections
103:       Injections::SingletonMethodAddedInjection.instances.each do |subject, injection|
104:         injection.reset
105:       end
106:       Injections::SingletonMethodAddedInjection.instances.clear
107:     end

[Validate]