class RSpec::Mocks::OrderGroup

@private

Public Class Methods

# File rspec-mocks/lib/rspec/mocks/order_group.rb, line 7
def initialize
  @expectations = []
  @invocation_order = []
  @invocation_order_mutex = Support::Mutex.new
  @index = 0
end

Public Instance Methods

# File rspec-mocks/lib/rspec/mocks/order_group.rb, line 53
def clear
  @index = 0
  @invocation_order_mutex.synchronize do
    @invocation_order.clear
  end
  @expectations.clear
end

@private

# File rspec-mocks/lib/rspec/mocks/order_group.rb, line 31
def consume
  remaining_expectations.each_with_index do |expectation, index|
    next unless expectation.ordered?

    @index += index + 1
    return expectation
  end
  nil
end
# File rspec-mocks/lib/rspec/mocks/order_group.rb, line 61
def empty?
  @expectations.empty?
end

@private

# File rspec-mocks/lib/rspec/mocks/order_group.rb, line 42
def handle_order_constraint(expectation)
  return unless expectation.ordered? && remaining_expectations.include?(expectation)
  return consume if ready_for?(expectation)
  expectation.raise_out_of_order_error
end
# File rspec-mocks/lib/rspec/mocks/order_group.rb, line 19
def invoked(message)
  @invocation_order_mutex.synchronize do
    @invocation_order << message
  end
end

@private

# File rspec-mocks/lib/rspec/mocks/order_group.rb, line 26
def ready_for?(expectation)
  remaining_expectations.find(&:ordered?) == expectation
end

@private

# File rspec-mocks/lib/rspec/mocks/order_group.rb, line 15
def register(expectation)
  @expectations << expectation
end
# File rspec-mocks/lib/rspec/mocks/order_group.rb, line 48
def verify_invocation_order(expectation)
  expectation.raise_out_of_order_error unless expectations_invoked_in_order?
  true
end