public void ConstructHimself()
 {
     _ = new CommandReversibleAndDisableAbleAsync(
         _canExecuteAction,
         _actionToExecute,
         _undoAction);
 }
 public void TestInitialize()
 {
     _actualCount      = 0;
     _canExecuteAction = () => true;
     _actionToExecute  = () => _actualCount++;
     _undoAction       = () => _actualCount--;
     _sut = new CommandReversibleAndDisableAbleAsync(
         _canExecuteAction,
         _actionToExecute,
         _undoAction);
     _sut.CanExecuteChanged += (o, e) => _actualCount++;
 }
 public void TestInitialize()
 {
     _actualCount      = 0;
     _canExecuteAction = o => true;
     _actionToExecute  = increase => _actualCount += increase.Value;
     _undoAction       = decrease => _actualCount -= decrease.Value;
     _sut = new CommandReversibleAndDisableAbleAsync <int?>(
         _canExecuteAction,
         _actionToExecute,
         _undoAction);
     _sut.CanExecuteChanged += (o, e) => _actualCount++;
 }
        public async Task CannotExecute()
        {
            int expectedCount = _actualCount;
            var sut           = new CommandReversibleAndDisableAbleAsync(
                () => false,
                _actionToExecute,
                _undoAction);

            await sut.ExecuteAsync();

            Assert.AreEqual(expectedCount, _actualCount);

            await sut.ReverseAsync();

            Assert.AreEqual(expectedCount, _actualCount);

            bool actualResult = await sut.CanExecuteAsync();

            Assert.AreEqual(expected: false, actualResult);
        }