Sha256: b9f52300e6b3003f4a575b1b40b72fcb66d2a29ee66cb74285c977fd711bec33

Contents?: true

Size: 1.66 KB

Versions: 8

Compression:

Stored size: 1.66 KB

Contents

module StonesSpec
  module Postcondition
    class ExpectedFinalBoard < ExpectedResult
      attr_reader :check_head_position, :show_initial_board

      def initialize(example, check_head_position, show_initial_board)
        super example
        @check_head_position = check_head_position
        @show_initial_board = show_initial_board
      end

      def validate_expected_result(initial_board_gbb, actual_final_board_gbb, _result)
        if matches_with_expected_board? Stones::Gbb.read actual_final_board_gbb
          passed_result initial_board_gbb, actual_final_board_gbb
        else
          failed_result initial_board_gbb, example.final_board, actual_final_board_gbb
        end
      end

      private

      def failed_result(initial_board_gbb, expected_board_gbb, actual_board_gbb)
        boards = [
            ['Tablero final esperado', expected_board_gbb],
            ['Tablero final obtenido', actual_board_gbb]
        ]

        boards.unshift ['Tablero inicial', initial_board_gbb] if show_initial_board

        make_boards_output example.title, boards, :failed
      end

      def passed_result(initial_board_gbb, actual_board_gbb)
        boards = [
            ['Tablero final', actual_board_gbb]
        ]

        boards.unshift ['Tablero inicial', initial_board_gbb] if show_initial_board

        make_boards_output example.title, boards, :passed
      end

      def matches_with_expected_board?(actual_board)
        if check_head_position
          actual_board == final_board
        else
          actual_board.cells_equal? final_board
        end
      end

      def final_board
        Stones::Gbb.read example.final_board
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 3 rubygems

Version Path
mumuki-xgobstones-runner-2.1.0 lib/stones_spec/postcondition/expected_final_board.rb
mumuki-xgobstones-runner-2.0.0 lib/stones_spec/postcondition/expected_final_board.rb
stones-spec-1.0.4 lib/postcondition/expected_final_board.rb
stones-spec-1.0.3 lib/postcondition/expected_final_board.rb
stones-spec-1.0.2 lib/postcondition/expected_final_board.rb
stones-spec-1.0.1 lib/postcondition/expected_final_board.rb
mumuki-gobstones-runner-1.0.1 lib/stones_spec/postcondition/expected_final_board.rb
mumuki-gobstones-runner-1.0.0 lib/stones_spec/postcondition/expected_final_board.rb