// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT License. // See the LICENSE file in the project root for more information. using System; using System.Linq; using System.Linq.Expressions; using System.Reactive.Linq; using Microsoft.Reactive.Testing; using Microsoft.VisualStudio.TestTools.UnitTesting; namespace ReactiveTests.Tests { [TestClass] public class QbservableExTest : ReactiveTest { private readonly IQbservable _qbNull = null; private IQbservable _qbMy = new MyQbservable(); private IQbservableProvider _qbp = new MyQbservableProvider(); [TestMethod] public void ForkJoin_ArgumentNullChecks() { ReactiveAssert.Throws(() => QbservableEx.ForkJoin(_qbNull, _qbMy, (a, b) => a + b)); ReactiveAssert.Throws(() => QbservableEx.ForkJoin(_qbMy, _qbNull, (a, b) => a + b)); ReactiveAssert.Throws(() => QbservableEx.ForkJoin(_qbMy, _qbMy, default(Expression>))); ReactiveAssert.Throws(() => QbservableEx.ForkJoin(default, _qbMy)); ReactiveAssert.Throws(() => QbservableEx.ForkJoin(_qbp, default(IQbservable[]))); ReactiveAssert.Throws(() => QbservableEx.ForkJoin(default, new MyQueryable>())); ReactiveAssert.Throws(() => QbservableEx.ForkJoin(_qbp, default(IQueryable>))); } [TestMethod] public void ForkJoin() { _qbMy.ForkJoin(_qbMy, (a, b) => a + b); _qbp.ForkJoin(_qbMy, _qbMy); _qbp.ForkJoin(new MyQueryable>()); } [TestMethod] public void Create_ArgumentNullChecks() { ReactiveAssert.Throws(() => QbservableEx.Create(default, _ => new IObservable[0])); ReactiveAssert.Throws(() => QbservableEx.Create(_qbp, default)); ReactiveAssert.Throws(() => QbservableEx.Create(default, () => new IObservable[0])); ReactiveAssert.Throws(() => QbservableEx.Create(_qbp, null)); } [TestMethod] public void Create() { _qbp.Create(obs => new IObservable[0]); _qbp.Create(() => new IObservable[0]); } [TestMethod] public void Let_ArgumentNullChecks() { ReactiveAssert.Throws(() => QbservableEx.Let(_qbNull, xs => xs)); ReactiveAssert.Throws(() => QbservableEx.Let(_qbMy, default(Expression, IObservable>>))); } [TestMethod] public void Let() { _qbMy.Let(xs => xs); } } }