Class RR::MethodDispatches::BaseMethodDispatch
In: lib/rr/method_dispatches/base_method_dispatch.rb
Parent: Object

Methods

Included Modules

Space::Reader

Attributes

args  [R] 
block  [R] 
double  [R] 

Public Instance methods

[Source]

    # File lib/rr/method_dispatches/base_method_dispatch.rb, line 9
 9:       def call
10:         raise NotImplementedError
11:       end

Protected Instance methods

[Source]

    # File lib/rr/method_dispatches/base_method_dispatch.rb, line 50
50:       def call_original_method_missing
51:         subject.__send__(MethodMissingDispatch.original_method_missing_alias_name, method_name, *args, &block)
52:       end

[Source]

    # File lib/rr/method_dispatches/base_method_dispatch.rb, line 40
40:       def call_yields
41:         if definition.yields_value
42:           if block
43:             block.call(*definition.yields_value)
44:           else
45:             raise ArgumentError, "A Block must be passed into the method call when using yields"
46:           end
47:         end
48:       end

[Source]

    # File lib/rr/method_dispatches/base_method_dispatch.rb, line 69
69:       def double_not_found_error
70:         message =
71:           "On subject #{subject},\n" <<
72:           "unexpected method invocation:\n" <<
73:           "  #{Double.formatted_name(method_name, args)}\n" <<
74:           "expected invocations:\n" <<
75:           Double.list_message_part(doubles)
76:         raise Errors::DoubleNotFoundError, message
77:       end

[Source]

    # File lib/rr/method_dispatches/base_method_dispatch.rb, line 58
58:       def extract_subject_from_return_value(return_value)
59:         case return_value
60:           when DoubleDefinitions::DoubleDefinition
61:             return_value.root_subject
62:           when DoubleDefinitions::DoubleDefinitionCreateBlankSlate
63:             return_value.__double_definition_create__.root_subject
64:           else
65:             return_value
66:         end
67:       end

[Source]

    # File lib/rr/method_dispatches/base_method_dispatch.rb, line 14
14:       def find_double_to_attempt
15:         matches = DoubleMatches.new(doubles).find_all_matches(args)
16: 
17:         unless matches.exact_terminal_doubles_to_attempt.empty?
18:           return matches.exact_terminal_doubles_to_attempt.first
19:         end
20: 
21:         unless matches.exact_non_terminal_doubles_to_attempt.empty?
22:           return matches.exact_non_terminal_doubles_to_attempt.last
23:         end
24: 
25:         unless matches.wildcard_terminal_doubles_to_attempt.empty?
26:           return matches.wildcard_terminal_doubles_to_attempt.first
27:         end
28: 
29:         unless matches.wildcard_non_terminal_doubles_to_attempt.empty?
30:           return matches.wildcard_non_terminal_doubles_to_attempt.last
31:         end
32: 
33:         unless matches.matching_doubles.empty?
34:           return matches.matching_doubles.first # This will raise a TimesCalledError
35:         end
36: 
37:         return nil
38:       end

[Source]

    # File lib/rr/method_dispatches/base_method_dispatch.rb, line 54
54:       def implementation_is_original_method?
55:         double.implementation_is_original_method?
56:       end

[Validate]