class RoadForest::TraceFormatter::Grouper

Public Class Methods

new(trace) click to toggle source
# File lib/roadforest/test-support/trace-formatter.rb, line 73
def initialize(trace)
  @trace = trace
end

Public Instance Methods

each() { |format_request(item)| ... } click to toggle source
# File lib/roadforest/test-support/trace-formatter.rb, line 110
def each
  enum = @trace.each

  group = []
  loop do
    begin
      item = enum.next
      case item[:type]
      when :request
        yield format_request(item)
      when :response
        yield format_response(item)
      when :attempt
        group << item
      when :result
        group << item
        yield format_attempt(group)
        group = []
      when :decision
        yield format_decision(item)
      else
        raise "Don't know trace entry type: #{item.inspect}"
      end
    rescue StopIteration
      break
    end
  end
end
format_attempt(attempt) click to toggle source
# File lib/roadforest/test-support/trace-formatter.rb, line 77
def format_attempt(attempt)
  unless attempt.length == 2 and
    attempt[0][:type] == :attempt and
    attempt[1][:type] == :result
    raise "Can't format attempt: #{attempt.inspect}"
  end
  name= attempt[0][:name]
  source= attempt[0][:source]
  result= attempt[1][:value]

  if source.nil?
    "  #{name} => #{result.inspect}"
  else
    "\n  #{name}\n  #{source}\n    => #{result.inspect}"
  end
end
format_decision(item) click to toggle source
# File lib/roadforest/test-support/trace-formatter.rb, line 106
def format_decision(item)
  "\nDecision: #{DECISION_NAMES[item[:decision]]} (#{item[:decision]})"
end
format_request(request) click to toggle source
# File lib/roadforest/test-support/trace-formatter.rb, line 94
def format_request(request)
  "\nRequest:\n  #{request[:method]} #{request[:path]}\n#{request[:headers].map do |name, value|
    "  #{name}: #{value}"
  end.join("\n")}#{request[:body].empty? ? "" : "\n\n  #{request[:body]}"}\n.\n"
end
format_response(response) click to toggle source
# File lib/roadforest/test-support/trace-formatter.rb, line 100
def format_response(response)
  "\nResponse:\n  #{response[:code]}\n#{response[:headers].map do |name, value|
    "  #{name}: #{value}"
  end.join("\n")}#{response[:body].empty? ? "" : "\n\n  #{response[:body]}"}\n.\n"
end