# File test/libttc_test.rb, line 547
  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']  # A1 now captured by C1
    move_set2 = ['E1 EC5', 'E2 EC5', 'E1 AC6'] # C1+A1 now caputred by E1
    move_set3 = ['A2 AC6'] # E1+C1+A1 captured by A2
    move_set4 = ['C2 AC6'] # A2+E1+C1+A1 captured by C2.  Player A now eliminated
    move_set5 = ['E2 BC5'] 
    move_set6 = ['C2 BC5'] # C2 (plus stack) captures E2.  Player E now eliminated
    
    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