示例#1
0
        public void TestLatestExecution_TracksActionTask()
        {
            var tcs             = new TaskCompletionSource <object>();
            var objectUnderTest = new ProtectedAsyncCommand(() => tcs.Task);

            objectUnderTest.Execute(null);

            Assert.AreEqual(tcs.Task, objectUnderTest.LatestExecution.ActualTask);
        }
示例#2
0
        public void TestExecute_UpdatesLatestExecution()
        {
            var           objectUnderTest   = new ProtectedAsyncCommand(() => Task.CompletedTask);
            AsyncProperty originalExecution = objectUnderTest.LatestExecution;

            objectUnderTest.Execute(null);

            Assert.AreNotEqual(originalExecution, objectUnderTest.LatestExecution);
        }
示例#3
0
        public void TestLatestExecution_NotifiesOnChange()
        {
            var objectUnderTest   = new ProtectedAsyncCommand(() => Task.CompletedTask);
            var changedProperties = new List <string>();

            objectUnderTest.PropertyChanged += (sender, args) => changedProperties.Add(args.PropertyName);

            objectUnderTest.Execute(null);

            CollectionAssert.AreEqual(new[] { nameof(objectUnderTest.LatestExecution) }, changedProperties);
        }
示例#4
0
        public void TestExecute_InvokesProvidedAction()
        {
            var tcs        = new TaskCompletionSource <object>();
            var actionMock = new Mock <Func <Task> >();

            actionMock.Setup(f => f()).Returns(tcs.Task);
            var objectUnderTest = new ProtectedAsyncCommand(actionMock.Object);

            objectUnderTest.Execute(null);

            actionMock.Verify(f => f(), Times.Once);
        }
示例#5
0
        public void TestExecute_DoesNotThrowWhenActionErrors()
        {
            var objectUnderTest = new ProtectedAsyncCommand(() => Task.FromException(new Exception()));

            objectUnderTest.Execute(null);
        }