lib/rr/double_matches.rb
module RR class DoubleMatches attr_reader :matching_doubles, :exact_terminal_doubles_to_attempt, :exact_non_terminal_doubles_to_attempt, :wildcard_terminal_doubles_to_attempt, :wildcard_non_terminal_doubles_to_attempt def initialize(doubles) #:nodoc: @doubles = doubles @matching_doubles = [] @exact_terminal_doubles_to_attempt = [] @exact_non_terminal_doubles_to_attempt = [] @wildcard_terminal_doubles_to_attempt = [] @wildcard_non_terminal_doubles_to_attempt = [] end def find_all_matches(args, kwargs) kwargs ||= {} @doubles.each do |double| if double.exact_match?(args, kwargs) matching_doubles << double if double.attempt? if double.terminal? exact_terminal_doubles_to_attempt << double else exact_non_terminal_doubles_to_attempt << double end end elsif double.wildcard_match?(args, kwargs) matching_doubles << double if double.attempt? if double.terminal? wildcard_terminal_doubles_to_attempt << double else wildcard_non_terminal_doubles_to_attempt << double end end end end self end end end