def test_vul_pos_top(gamestate):
    print("Testing vulnerable pos top")
    piece1 = Piece(60, 300, "v", 50)
    piece2 = Piece(60, 180, "v", 50)
    piece25 = Piece(60, 180, "h", 50)
    piece3 = Piece(60, 420, "v", 50)

    # gamestate.players[1].pieces[piece3.get_position()] = piece3
    # Test 1st Return
    print("Test 1st Return")
    gamestate.players[0].pieces = defaultdict(Piece)
    gamestate.players[1].pieces = defaultdict(Piece)

    gamestate.players[0].pieces[
        piece1.get_position()] = piece1  # Not Vulnerable
    gamestate.players[0].pieces[piece2.get_position()] = piece2

    print("P1: ", gamestate.players[0].pieces)
    print("P2: ", gamestate.players[1].pieces)
    print(heuristics.vuln_pos_top(gamestate, 60, 300, 0, 1))

    # Test 2nd Return
    print("Test 2nd Return")
    gamestate.players[0].pieces = defaultdict(Piece)
    gamestate.players[1].pieces = defaultdict(Piece)

    gamestate.players[0].pieces[piece2.get_position()] = piece2
    piece2.evolve()
    gamestate.players[1].pieces[piece3.get_position()] = piece3  # vulnerable

    print("P1: ", gamestate.players[0].pieces)
    print("P2: ", gamestate.players[1].pieces)
    print(heuristics.vuln_pos_top(gamestate, 60, 420, 1, 0))

    # Test 3rd Return
    print("Test 3rd Return")
    gamestate.players[0].pieces = defaultdict(Piece)
    gamestate.players[1].pieces = defaultdict(Piece)
    piece2.evolved = False
    gamestate.players[0].pieces[piece1.get_position()] = piece1  # vulnerable
    gamestate.players[1].pieces[piece2.get_position()] = piece2

    print("P1: ", gamestate.players[0].pieces)
    print("P2: ", gamestate.players[1].pieces)
    print(heuristics.vuln_pos_top(gamestate, 60, 300, 0, 1))

    # Test 4th Return
    print("Test 4th Return")
    gamestate.players[0].pieces = defaultdict(Piece)
    gamestate.players[1].pieces = defaultdict(Piece)

    gamestate.players[0].pieces[piece2.get_position()] = piece25
    piece25.evolve()
    gamestate.players[1].pieces[
        piece3.get_position()] = piece3  # Not Vulnerable

    print("P1: ", gamestate.players[0].pieces)
    print("P2: ", gamestate.players[1].pieces)
    print(heuristics.vuln_pos_top(gamestate, 60, 420, 1, 0))

    # Test Last Return
    print("Test 5th Return")
    gamestate.players[0].pieces = defaultdict(Piece)
    gamestate.players[1].pieces = defaultdict(Piece)

    gamestate.players[0].pieces[
        piece1.get_position()] = piece1  # Not vulnerable
    # gamestate.players[1].pieces[piece2.get_position()] = piece2

    print("P1: ", gamestate.players[0].pieces)
    print("P2: ", gamestate.players[1].pieces)
    print(heuristics.vuln_pos_top(gamestate, 300, 60, 0, 1))