public async Task Test(int param) { await Task.WhenAll(_handler1.ReturnToOriginAsync(), _handler2.ReturnToOriginAsync()); var positions = await Task.WhenAll(_handler1.GetPositionAsync(), _handler2.GetPositionAsync()); CollectionAssert.AreEquivalent(new[] { 0, 0 }, positions); var responses = await Task.WhenAll( _handler1.SendCommandAsync(Command.MoveToPosition, param, CommandParam.MoveType.Absolute), _handler2.SendCommandAsync(Command.MoveToPosition, param, CommandParam.MoveType.Absolute)); CollectionAssert.AreEquivalent(new[] { true, true }, responses.Select(x => x.Status == ReturnStatus.Success)); await Task.WhenAll(_handler1.WaitForPositionReachedAsync(), _handler2.WaitForPositionReachedAsync()); positions = await Task.WhenAll(_handler1.GetPositionAsync(), _handler2.GetPositionAsync()); CollectionAssert.AreEquivalent(new[] { param, param }, positions); await Task.WhenAll(_handler1.ReturnToOriginAsync(), _handler2.ReturnToOriginAsync()); positions = await Task.WhenAll(_handler1.GetPositionAsync(), _handler2.GetPositionAsync()); CollectionAssert.AreEquivalent(new[] { 0, 0 }, positions); }
public async Task Test_WaitForPositionReached(int pos) { // Rotates to zero await _motor.ReturnToOriginAsync(CancellationToken.None); Assert.IsTrue(await _motor.IsTargetPositionReachedAsync()); Assert.AreEqual(0, await _motor.GetPositionAsync()); // Rotates to target position var reply = await _motor.SendCommandAsync(Command.MoveToPosition, pos, CommandParam.MoveType.Absolute); Assume.That(reply.Status, Is.EqualTo(ReturnStatus.Success)); Assert.That(async() => await _motor.WaitForPositionReachedAsync(CancellationToken.None), Throws.Nothing); //await _motor.WaitForPositionReachedAsync(); Assert.IsTrue(await _motor.IsTargetPositionReachedAsync()); Assert.AreEqual(pos, await _motor.GetPositionAsync()); // Returns back to zero await _motor.ReturnToOriginAsync(CancellationToken.None); Assert.IsTrue(await _motor.IsTargetPositionReachedAsync()); Assert.AreEqual(0, await _motor.GetPositionAsync()); }