Class: StonesSpec::Example

Inherits:
OpenStruct
  • Object
show all
Includes:
Mumukit::WithCommandLine
Defined in:
lib/stones_spec/example.rb

Instance Method Summary collapse

Constructor Details

#initialize(subject, attributes) ⇒ Example

Returns a new instance of Example.



7
8
9
10
11
12
# 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

Instance Method Details

#execute!(files) ⇒ Object



19
20
21
22
# 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) ⇒ Object



14
15
16
17
# 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) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
# 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

#titleObject



37
38
39
# File 'lib/stones_spec/example.rb', line 37

def title
  @title || default_title
end