module RR::DoubleDefinitions::DoubleDefinitionCreate::StrategySetupMethods

Public Instance Methods

no_subject?() click to toggle source
# File lib/rr/double_definitions/double_definition_create.rb, line 50
def no_subject?
  subject.__id__ === NO_SUBJECT.__id__
end

Protected Instance Methods

add_double_injection_strategy(double_injection_strategy_class, subject=NO_SUBJECT, method_name=nil, &definition_eval_block) click to toggle source
# File lib/rr/double_definitions/double_definition_create.rb, line 67
def add_double_injection_strategy(double_injection_strategy_class, subject=NO_SUBJECT, method_name=nil, &definition_eval_block)
  add_strategy(subject, method_name, definition_eval_block) do
    self.double_injection_strategy = double_injection_strategy_class.new(self)
  end
end
add_implementation_strategy(implementation_strategy_class, subject=NO_SUBJECT, method_name=nil, &definition_eval_block) click to toggle source
# File lib/rr/double_definitions/double_definition_create.rb, line 61
def add_implementation_strategy(implementation_strategy_class, subject=NO_SUBJECT, method_name=nil, &definition_eval_block)
  add_strategy(subject, method_name, definition_eval_block) do
    self.implementation_strategy = implementation_strategy_class.new(self)
  end
end
add_strategy(subject, method_name, definition_eval_block) { || ... } click to toggle source
# File lib/rr/double_definitions/double_definition_create.rb, line 73
def add_strategy(subject, method_name, definition_eval_block)
  if method_name && definition_eval_block
    raise ArgumentError, "Cannot pass in a method name and a block"
  end
  @subject = subject
  yield
  # TODO: Allow hash argument to simulate a Struct.
  if no_subject?
    self
  elsif method_name
    # TODO: Pass in arguments.
    call(method_name)
  else
    DoubleDefinitionCreateBlankSlate.new(self, &definition_eval_block)
  end
end
add_verification_strategy(verification_strategy_class, subject=NO_SUBJECT, method_name=nil, &definition_eval_block) click to toggle source
# File lib/rr/double_definitions/double_definition_create.rb, line 55
def add_verification_strategy(verification_strategy_class, subject=NO_SUBJECT, method_name=nil, &definition_eval_block)
  add_strategy(subject, method_name, definition_eval_block) do
    self.verification_strategy = verification_strategy_class.new(self)
  end
end
double_injection_strategy=(double_injection_strategy) click to toggle source
# File lib/rr/double_definitions/double_definition_create.rb, line 99
def double_injection_strategy=(double_injection_strategy)
  @double_injection_strategy = double_injection_strategy
end
implementation_strategy=(implementation_strategy) click to toggle source
# File lib/rr/double_definitions/double_definition_create.rb, line 95
def implementation_strategy=(implementation_strategy)
  @implementation_strategy = implementation_strategy
end
verification_strategy=(verification_strategy) click to toggle source
# File lib/rr/double_definitions/double_definition_create.rb, line 90
def verification_strategy=(verification_strategy)
  @verification_strategy = verification_strategy
  verification_strategy
end