Sha256: 0a1faec6fa0f34d7bbee20caaf3472a34ea477da920440f5792ffdb38a1b6292

Contents?: true

Size: 1.07 KB

Versions: 90

Compression:

Stored size: 1.07 KB

Contents

require 'exercise_cases'

class QueenCase < OpenStruct
  def test_name
    "test_#{description.gsub(/[ ]/, '_')}"
  end

  def skipped
    index.zero? ? '# skip' : 'skip'
  end

  def parse_position queen
    queen['position'].delete('() ').split(',').map{|i| i.to_i}
  end
end

class QueenAttackCase < QueenCase
  def workload
    """queens = Queens.new white: #{parse_position white_queen}, black: #{parse_position black_queen}
    #{assertion} queens.attack?"""
  end

  def assertion
    expected ? 'assert' : 'refute'
  end
end

class QueenCreateCase < QueenCase
  def workload
    expected == -1 ? exception : input
  end

  def input
    "Queens.new white: #{parse_position queen}"
  end

  def exception
    """assert_raises ArgumentError do
      #{input}
    end"""
  end
end

TYPES = [
  ['create', QueenCreateCase],
  ['can_attack', QueenAttackCase]
]

QueenAttackCases = proc do |data|
  json = JSON.parse data
  TYPES.flat_map.with_index do |(type, caseClass), i|
    json[type]['cases'].map.with_index do |row, j|
      caseClass.new row.merge('index' => i+j)
    end
  end
end

Version data entries

90 entries across 90 versions & 1 rubygems

Version Path
trackler-2.1.0.1 tracks/ruby/lib/queen_attack_cases.rb
trackler-2.1.0.0 tracks/ruby/lib/queen_attack_cases.rb
trackler-2.0.8.55 tracks/ruby/lib/queen_attack_cases.rb
trackler-2.0.8.54 tracks/ruby/lib/queen_attack_cases.rb
trackler-2.0.8.53 tracks/ruby/lib/queen_attack_cases.rb
trackler-2.0.8.52 tracks/ruby/lib/queen_attack_cases.rb
trackler-2.0.8.51 tracks/ruby/lib/queen_attack_cases.rb
trackler-2.0.8.50 tracks/ruby/lib/queen_attack_cases.rb
trackler-2.0.8.49 tracks/ruby/lib/queen_attack_cases.rb
trackler-2.0.8.48 tracks/ruby/lib/queen_attack_cases.rb
trackler-2.0.8.47 tracks/ruby/lib/queen_attack_cases.rb
trackler-2.0.8.46 tracks/ruby/lib/queen_attack_cases.rb
trackler-2.0.8.45 tracks/ruby/lib/queen_attack_cases.rb
trackler-2.0.8.44 tracks/ruby/lib/queen_attack_cases.rb
trackler-2.0.8.43 tracks/ruby/lib/queen_attack_cases.rb
trackler-2.0.8.42 tracks/ruby/lib/queen_attack_cases.rb
trackler-2.0.8.41 tracks/ruby/lib/queen_attack_cases.rb
trackler-2.0.8.40 tracks/ruby/lib/queen_attack_cases.rb
trackler-2.0.8.39 tracks/ruby/lib/queen_attack_cases.rb
trackler-2.0.8.38 tracks/ruby/lib/queen_attack_cases.rb