Sha256: 8ba75ad9151c3090885eb05da34503e9db871b1cbe0fc346ae6df27d15ea5ab4
Contents?: true
Size: 1.04 KB
Versions: 48
Compression:
Stored size: 1.04 KB
Contents
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
48 entries across 48 versions & 1 rubygems