public void RaiseCanExecuteChangedTest()
{
var executed = false;
var canExecute = false;
var command = new AsyncDelegateCommand(() => { executed = true; return Task.FromResult((object)null); }, () => canExecute);
Assert.IsFalse(command.CanExecute(null));
canExecute = true;
Assert.IsTrue(command.CanExecute(null));
AssertHelper.CanExecuteChangedEvent(command, () => command.RaiseCanExecuteChanged());
AssertHelper.CanExecuteChangedEvent(command, () => command.Execute(null), 2, ExpectedChangedCountMode.Exact); // Because during execution CanExecute returns false
Assert.IsTrue(executed);
}