class StonesSpec::Example

Public Class Methods

new(subject, attributes) click to toggle source
Calls superclass method
# File lib/example.rb, line 5
def initialize(subject, attributes)
  super attributes
  @title = attributes[:title]
  @subject = subject
  @precondition = Precondition.from_example(self)
end

Public Instance Methods

execute!(files, parser) click to toggle source
# File lib/example.rb, line 17
def execute!(files, parser)
  parser.run(files[:source], files[:initial_board], files[:final_board])
end
execution_data(source) click to toggle source
# File lib/example.rb, line 12
def execution_data(source)
  { source: @subject.test_program(source, @precondition.arguments),
    initial_board: @precondition.initial_board_gbb }
end
result(files, execution, postcondition) click to toggle source
# File lib/example.rb, line 21
def result(files, execution, postcondition)
  if execution[:status] == :aborted
    raise Gobstones::AbortedError, execution[:result]
  end

  if execution[:status] == :syntax_error
    raise Gobstones::SyntaxError, execution[:result]
  end

  postcondition.validate(files[:initial_board].open.read, files[:final_board].open.read, execution[:result], execution[:status])
end
title() click to toggle source
# File lib/example.rb, line 33
def title
  @title || default_title
end

Private Instance Methods

default_title() click to toggle source
# File lib/example.rb, line 39
def default_title
  @subject.default_title @precondition.arguments
end