def test_eliminations
game = Game.new(3, 6, 6, 6, 2)
pieceA1 = game.pieces['a1']
pieceA2 = game.pieces['a2']
pieceC1 = game.pieces['c1']
pieceC2 = game.pieces['c2']
pieceE1 = game.pieces['e1']
pieceE2 = game.pieces['e2']
posAC5 = game.board.positions['ac5']
posBC5 = game.board.positions['bc5']
posCC5 = game.board.positions['cc5']
posEC5 = game.board.positions['ec5']
posAC6 = game.board.positions['ac6']
move_set1 = ['A1 AC5', 'A2 AC5', 'A1 AC6',
'C1 CC5', 'C2 CC5', 'C1 AC6']
move_set2 = ['E1 EC5', 'E2 EC5', 'E1 AC6']
move_set3 = ['A2 AC6']
move_set4 = ['C2 AC6']
move_set5 = ['E2 BC5']
move_set6 = ['C2 BC5']
assert_equal [], game.history
assert_equal game.pieces['a1'].position, game.board.positions['a']
assert_equal game.pieces['a1'].captured, false
assert_equal game.pieces['a1'].contains, []
assert_equal game.pieces['a2'].position, game.board.positions['a']
assert_equal game.pieces['a2'].captured, false
assert_equal game.pieces['a2'].contains, []
assert_equal game.pieces['c1'].position, game.board.positions['c']
assert_equal game.pieces['c1'].captured, false
assert_equal game.pieces['c1'].contains, []
assert_equal game.pieces['c2'].position, game.board.positions['c']
assert_equal game.pieces['c2'].captured, false
assert_equal game.pieces['c2'].contains, []
assert_equal game.pieces['e1'].position, game.board.positions['e']
assert_equal game.pieces['e1'].captured, false
assert_equal game.pieces['e1'].contains, []
assert_equal game.pieces['e2'].position, game.board.positions['e']
assert_equal game.pieces['e2'].captured, false
assert_equal game.pieces['e2'].contains, []
assert_equal game.current_player, 'a'
game.apply_moves! move_set1.collect {|m| m.to_move(game)}
assert_equal game.history.length, 6
assert_equal game.pieces['a1'].position, game.board.positions['ac6']
assert_equal game.pieces['a1'].captured, true
assert_equal game.pieces['a1'].contains, []
assert_equal game.pieces['a2'].position, game.board.positions['ac5']
assert_equal game.pieces['a2'].captured, false
assert_equal game.pieces['a2'].contains, []
assert_equal game.pieces['c1'].position, game.board.positions['ac6']
assert_equal game.pieces['c1'].captured, false
assert game.pieces['c1'].contains.include?(pieceA1)
assert_equal game.pieces['c2'].position, game.board.positions['cc5']
assert_equal game.pieces['c2'].captured, false
assert_equal game.pieces['c2'].contains, []
assert_equal game.pieces['e1'].position, game.board.positions['e']
assert_equal game.pieces['e1'].captured, false
assert_equal game.pieces['e1'].contains, []
assert_equal game.pieces['e2'].position, game.board.positions['e']
assert_equal game.pieces['e2'].captured, false
assert_equal game.pieces['e2'].contains, []
assert_equal game.current_player, 'e'
game.apply_moves! move_set2.collect {|m| m.to_move(game)}
assert_equal game.pieces['a1'].position, game.board.positions['ac6']
assert_equal game.pieces['a1'].captured, true
assert_equal game.pieces['a1'].contains, []
assert_equal game.pieces['a2'].position, game.board.positions['ac5']
assert_equal game.pieces['a2'].captured, false
assert_equal game.pieces['a2'].contains, []
assert_equal game.pieces['c1'].position, game.board.positions['ac6']
assert_equal game.pieces['c1'].captured, true
assert_equal game.pieces['c1'].contains, []
assert_equal game.pieces['c2'].position, game.board.positions['cc5']
assert_equal game.pieces['c2'].captured, false
assert_equal game.pieces['c2'].contains, []
assert_equal game.pieces['e1'].position, game.board.positions['ac6']
assert_equal game.pieces['e1'].captured, false
assert game.pieces['e1'].contains.include?(pieceA1)
assert game.pieces['e1'].contains.include?(pieceC1)
assert_equal game.pieces['e2'].position, game.board.positions['ec5']
assert_equal game.pieces['e2'].captured, false
assert_equal game.pieces['e2'].contains, []
assert_equal game.current_player, 'a'
game.apply_moves! move_set3.collect {|m| m.to_move(game)}
assert_equal game.pieces['a1'].position, game.board.positions['ac6']
assert_equal game.pieces['a1'].captured, true
assert_equal game.pieces['a1'].contains, []
assert_equal game.pieces['a2'].position, game.board.positions['ac6']
assert_equal game.pieces['a2'].captured, false
assert game.pieces['a2'].contains.include?(pieceA1)
assert game.pieces['a2'].contains.include?(pieceC1)
assert game.pieces['a2'].contains.include?(pieceE1)
assert_equal game.pieces['c1'].position, game.board.positions['ac6']
assert_equal game.pieces['c1'].captured, true
assert_equal game.pieces['c1'].contains, []
assert_equal game.pieces['c2'].position, game.board.positions['cc5']
assert_equal game.pieces['c2'].captured, false
assert_equal game.pieces['c2'].contains, []
assert_equal game.pieces['e1'].position, game.board.positions['ac6']
assert_equal game.pieces['e1'].captured, true
assert_equal game.pieces['e1'].contains, []
assert_equal game.pieces['e2'].position, game.board.positions['ec5']
assert_equal game.pieces['e2'].captured, false
assert_equal game.pieces['e2'].contains, []
assert_equal game.current_player, 'c'
game.apply_moves! move_set4.collect {|m| m.to_move(game)}
assert_equal game.pieces['a1'].position, game.board.positions['ac6']
assert_equal game.pieces['a1'].captured, true
assert_equal game.pieces['a1'].contains, []
assert_equal game.pieces['a2'].position, game.board.positions['ac6']
assert_equal game.pieces['a2'].captured, true
assert_equal game.pieces['a2'].contains, []
assert_equal game.pieces['c1'].position, game.board.positions['ac6']
assert_equal game.pieces['c1'].captured, true
assert_equal game.pieces['c1'].contains, []
assert_equal game.pieces['c2'].position, game.board.positions['ac6']
assert_equal game.pieces['c2'].captured, false
assert game.pieces['c2'].contains.include?(pieceA1)
assert game.pieces['c2'].contains.include?(pieceA2)
assert game.pieces['c2'].contains.include?(pieceC1)
assert game.pieces['c2'].contains.include?(pieceE1)
assert_equal game.pieces['e1'].position, game.board.positions['ac6']
assert_equal game.pieces['e1'].captured, true
assert_equal game.pieces['e1'].contains, []
assert_equal game.pieces['e2'].position, game.board.positions['ec5']
assert_equal game.pieces['e2'].captured, false
assert_equal game.pieces['e2'].contains, []
assert_equal game.current_player, 'e'
game.apply_moves! move_set5.collect {|m| m.to_move(game)}
assert_equal game.pieces['a1'].position, game.board.positions['ac6']
assert_equal game.pieces['a1'].captured, true
assert_equal game.pieces['a1'].contains, []
assert_equal game.pieces['a2'].position, game.board.positions['ac6']
assert_equal game.pieces['a2'].captured, true
assert_equal game.pieces['a2'].contains, []
assert_equal game.pieces['c1'].position, game.board.positions['ac6']
assert_equal game.pieces['c1'].captured, true
assert_equal game.pieces['c1'].contains, []
assert_equal game.pieces['c2'].position, game.board.positions['ac6']
assert_equal game.pieces['c2'].captured, false
assert game.pieces['c2'].contains.include?(pieceA1)
assert game.pieces['c2'].contains.include?(pieceA2)
assert game.pieces['c2'].contains.include?(pieceC1)
assert game.pieces['c2'].contains.include?(pieceE1)
assert_equal game.pieces['e1'].position, game.board.positions['ac6']
assert_equal game.pieces['e1'].captured, true
assert_equal game.pieces['e1'].contains, []
assert_equal game.pieces['e2'].position, game.board.positions['bc5']
assert_equal game.pieces['e2'].captured, false
assert_equal game.pieces['e2'].contains, []
assert_equal game.current_player, 'c'
assert_raise (GameWonNotice) { game.apply_moves! move_set6.collect {|m| m.to_move(game)} }
end