Added WaitForEdgeForever and WaitForStateForever transactions, which return a Pending future to the callee. #125
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I have some code I'd like to mock for a quadrature encoder, which uses
select(pin_clk,pin_data)
.In order to properly test it, I need to be able to mock different paths in the select statement.
As it stands currently, the current async transactions always return
Ok()
when called - this means myselect()
paths are always taking the first branch.The solution I propose here is to add a modified
WaitForEdge/WaitForState
enum calledWaitFor{State,Edge}Forever
, which returns aPending
future. This simulates a pin that never changes, while still allowing a mock transaction for the actualwait_for_edge
call.I have added tests for this, which poll the returned future for 10 milliseconds before timing-out (successful result).