public void WithSubscribeDisposableOverrideGenericVersion() { var task1 = new TaskCompletionSource <object>(); var task2 = new TaskCompletionSource <object>(); var command = new AsyncReactiveCommand <string>() .WithSubscribe(_ => task1.Task) .WithSubscribe(_ => task2.Task, out var subscription); subscription.Dispose(); command.Execute("x"); command.CanExecute().IsFalse(); task1.SetResult(null); command.CanExecute().IsTrue(); }
public void RemoveSubscription() { var command = new AsyncReactiveCommand(); var task1 = new TaskCompletionSource <object>(); var task2 = new TaskCompletionSource <object>(); var subscription1 = command.Subscribe(_ => task1.Task); var subscription2 = command.Subscribe(_ => task2.Task); subscription2.Dispose(); command.Execute(); command.CanExecute().IsFalse(); task1.SetResult(null); command.CanExecute().IsTrue(); }
public void DefaultConstructor() { var command = new AsyncReactiveCommand(); var task1 = new TaskCompletionSource <object>(); var task2 = new TaskCompletionSource <object>(); command.Subscribe(_ => task1.Task); command.Subscribe(_ => task2.Task); command.Execute(); command.CanExecute().IsFalse(); task1.SetResult(null); command.CanExecute().IsFalse(); task2.SetResult(null); command.CanExecute().IsTrue(); }
public void WithSubscribe() { var task1 = new TaskCompletionSource <object>(); var task2 = new TaskCompletionSource <object>(); var subscription = new CompositeDisposable(); var command = new AsyncReactiveCommand() .WithSubscribe(() => task1.Task) .WithSubscribe(() => task2.Task, subscription.Add); subscription.Dispose(); command.Execute(); command.CanExecute().IsFalse(); task1.SetResult(null); command.CanExecute().IsTrue(); }
public void SubscribeAction() { var command = new AsyncReactiveCommand(); var task1 = new TaskCompletionSource <object>(); var task2 = new TaskCompletionSource <object>(); Func <Task> asyncAction1 = () => task1.Task; Func <Task> asyncAction2 = () => task2.Task; command.Subscribe(asyncAction1); command.Subscribe(asyncAction2); command.Execute(); command.CanExecute().IsFalse(); task1.SetResult(null); command.CanExecute().IsFalse(); task2.SetResult(null); command.CanExecute().IsTrue(); }
/// <summary> /// Command binding method. /// </summary> /// <typeparam name="T">IObservable type</typeparam> /// <param name="self">IObservable</param> /// <param name="command">Command</param> /// <returns>Command binding token</returns> public static IDisposable SetCommand <T>(this IObservable <T> self, AsyncReactiveCommand command) => self .Where(_ => command.CanExecute()) .Subscribe(x => command.Execute());
public void DefaultConstructor() { var command = new AsyncReactiveCommand(); var task1 = new TaskCompletionSource<object>(); var task2 = new TaskCompletionSource<object>(); command.Subscribe(_ => task1.Task); command.Subscribe(_ => task2.Task); command.Execute(); command.CanExecute().IsFalse(); task1.SetResult(null); command.CanExecute().IsFalse(); task2.SetResult(null); command.CanExecute().IsTrue(); }
public void RemoveSubscription() { var command = new AsyncReactiveCommand(); var task1 = new TaskCompletionSource<object>(); var task2 = new TaskCompletionSource<object>(); var subscription1 = command.Subscribe(_ => task1.Task); var subscription2 = command.Subscribe(_ => task2.Task); subscription2.Dispose(); command.Execute(); command.CanExecute().IsFalse(); task1.SetResult(null); command.CanExecute().IsTrue(); }