Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
In the very first CCR tips and tricks I gave you a utility to essentially make CCR code synchronous to make unit testing simpler. Well, with the release of RDS4 beta there is a nice addition in the IO.Adapters assembly. The synchronous arbiter essentially does the job of the PortUtility you've previously seen. All you need is this namespace:
1: using Microsoft.Ccr.Adapters.IO;
And then this code using the PortUtility (assuming PortUtility is created in test constructor):
1: portUtility.Choice(
2: resultPort,
3: s => streamContent = s,
4: e => Assert.Fail("Unexpected failure: " + e.ToString()));
Will look like this:
1: using (var syncArbiter = new SynchronousArbiter())
2: {
3: Assert.IsTrue(syncArbiter.Choice(
4: resultPort,
5: s => streamContent = s,
6: e => Assert.Fail("Unexpected failure: " + e.ToString()),
7: TimeSpan.FromSeconds(5)));
8: }
What I've seen is that in unit tests and also in a few other occasions where you use CCR outside of the Robotics space, a synchronous arbiter makes sense. And now it's part of CCR for you to use. Enjoy!