suivant la fonction "withdraw" comment tester le winner ? "function withdraw(uint256 _gameId, uint256 _amount) public payable {
        require(state == State.finished, "game is not over");
        require(msg.sender == games[_gameId].player1 || msg.sender == games[_gameId].player2, "You re not a player");
        address winner = games[_gameId].winner;
        require(winner == msg.sender, "You are not the winner");
        require(!games[_gameId].player1HasWithdrawn || !games[_gameId].player2HasWithdrawn, "withdrawn balance");
        uint256 balance = playerBalances[_gameId][msg.sender].balance;
        require(balance >= _amount, "Insufficient balance");

        playerBalances[_gameId][msg.sender].balance -= _amount;
        (bool success, ) = payable(msg.sender).call{value: _amount}("");
        require(success, "The withdrawal failed");
        if (msg.sender == games[_gameId].player1) {
            games[_gameId].player1HasWithdrawn = true;
        } else {
            games[_gameId].player2HasWithdrawn = true;
        }
        emit Withdraw(_gameId);
    }" le test " context ("FONCTION RETRAIT - GAGNANT", () => {
        before(async function() {
            penduelInstance = await Penduel.new(subId);
            const value = web3.utils.toWei("1", "ether");
            await penduelInstance.createGame({ from: player2 });
            await penduelInstance.joinGame({ from: player1 });
            await penduelInstance.deposit({ from: player2, value: value });
            await penduelInstance.deposit({ from: player1, value: value });
            await penduelInstance.updateStateInProgress();
            const isPlayer2Turn = true;
            if (assert(isPlayer2Turn, true, "No more guesses allowed")) { 
                await penduelInstance.proposeWord(gameId, "immuable", "i", { from: player2 });
                await penduelInstance.getIsWordCorrect("immuable");
                const winner = await penduelInstance.games(gameId).winner;
                assert.equal(winner, player2, "Le joueur actuel devrait être déclaré comme gagnant.");
                const state = await penduelInstance.state();
                assert.equal(state, finished, "L'état devrait être finished");
            }
        });
           
        describe ("Vérifie la fonction withdraw avec le gagnant", () => {

            it("devrait permettre au gagnant de retirer avec succès", async () => {
                const gameId = 1;
                const amount = 2;
                await penduelInstance.updateStateFinished();
                const initialBalance = await penduelInstance.getBalance({ from: player2 });
                const { logs } = await penduelInstance.withdraw(gameId, amount);
                const game = await penduelInstance.games(gameId);
                const finalBalance = await penduelInstance.getBalance({ from: player2 });
                const difference = finalBalance - initialBalance;
                assert.isAbove(difference, 0, "Le retrait n'a pas réussi");
                expect(game.player2HasWithdrawn).to.be.true;
                expect(logs).to.have.lengthOf(1);
                expectEvent(logs[0], "Withdraw", { gameId: new BN(gameId) });
            });
        });
    });"