// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information. #if !NO_REFLECTION_EMIT #if !SILVERLIGHTM7 using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Reactive.Linq; using Microsoft.Reactive.Testing; #if NUNIT using NUnit.Framework; using TestClassAttribute = NUnit.Framework.TestFixtureAttribute; using TestMethodAttribute = NUnit.Framework.TestAttribute; using TestInitializeAttribute = NUnit.Framework.SetUpAttribute; #else using Microsoft.VisualStudio.TestTools.UnitTesting; #endif namespace ReactiveTests.Tests { [TestClass] public class QbservableExTest : ReactiveTest { private 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(IQbservableProvider), _qbMy)); ReactiveAssert.Throws(() => QbservableEx.ForkJoin(_qbp, default(IQbservable[]))); ReactiveAssert.Throws(() => QbservableEx.ForkJoin(default(IQbservableProvider), 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(IQbservableProvider), _ => new IObservable[0])); ReactiveAssert.Throws(() => QbservableEx.Create(_qbp, default(Expression, IEnumerable>>>))); ReactiveAssert.Throws(() => QbservableEx.Create(default(IQbservableProvider), () => 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); } } } #endif #endif