Class: StonesSpec::Example

Inherits:
OpenStruct
  • Object
show all
Defined in:
lib/example.rb

Instance Method Summary collapse

Constructor Details

#initialize(subject, attributes) ⇒ Example

Returns a new instance of Example.



5
6
7
8
9
10
# File 'lib/example.rb', line 5

def initialize(subject, attributes)
  super attributes
  @title = attributes[:title]
  @subject = subject
  @precondition = Precondition.from_example(self)
end

Instance Method Details

#execute!(files, parser) ⇒ Object



17
18
19
# File 'lib/example.rb', line 17

def execute!(files, parser)
  parser.run(files[:source], files[:initial_board], files[:final_board])
end

#execution_data(source) ⇒ Object



12
13
14
15
# 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) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
# File 'lib/example.rb', line 21

def result(files, execution, postcondition)
  if execution[:status] == :compilation_error
    raise Gobstones::SyntaxError, execution[:result]
  end

  if execution[:status] == :runtime_error
    raise Gobstones::AbortedError, execution[:result]
  end

  postcondition.validate(files[:initial_board].open.read, files[:final_board].open.read, execution[:result], execution[:status])
end

#titleObject



33
34
35
# File 'lib/example.rb', line 33

def title
  @title || default_title
end