예제 #1
0
    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();
    }
예제 #2
0
    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();
    }
예제 #3
0
    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();
    }
예제 #4
0
    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();
    }
예제 #5
0
    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();
        }