class StonesSpec::Example

Public Class Methods

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

Public Instance Methods

execute!(files) click to toggle source
# File lib/stones_spec/example.rb, line 19
def execute!(files)
  result, status = run_command "#{Gobstones.run(files[:source], files[:initial_board], files[:final_board])} 2>&1"
  { result: result, status: status }
end
execution_data(source) click to toggle source
# File lib/stones_spec/example.rb, line 14
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/stones_spec/example.rb, line 24
def result(files, execution, postcondition)
  if execution[:status] == :aborted
    raise Gobstones::AbortedError, execution[:result]
  end

  if execution[:status] == :failed
    error_message = Gobstones.parse_error_message execution[:result]
    Gobstones.ensure_no_syntax_error! error_message
  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/stones_spec/example.rb, line 37
def title
  @title || default_title
end

Private Instance Methods

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