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);
        }
Ejemplo n.º 2
0
        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());
        }