Function: requestWithdraw(uint256 amount)
This allows a user to perform a withdraw request.
Inputs
amount
Control: Fully controlled by the user.
Constraints: User needs to afford the amount of shares to be withdrawn.
Impact: The amount of shares to be withdrawn.
Branches and code coverage
Intended branches
Ensure that it is not settling phase.
Ensure that the length of the user requests is less than the maximum withdraw count.
Transfer the shares from the user to the contract.
Add the shares to the requested withdraw shares mapping.
Increase the total requested shares.
Add the user to the request users set.
Negative behavior
Should not allow withdrawing if the amount is zero.
Should not allow withdrawing if the user cannot afford the shares.