1 // Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information. 2 3 #if !NO_REFLECTION_EMIT 4 #if !SILVERLIGHTM7 5 6 using System; 7 using System.Collections.Generic; 8 using System.Linq; 9 using System.Linq.Expressions; 10 using System.Reactive.Linq; 11 using Microsoft.Reactive.Testing; 12 #if NUNIT 13 using NUnit.Framework; 14 using TestClassAttribute = NUnit.Framework.TestFixtureAttribute; 15 using TestMethodAttribute = NUnit.Framework.TestAttribute; 16 using TestInitializeAttribute = NUnit.Framework.SetUpAttribute; 17 #else 18 using Microsoft.VisualStudio.TestTools.UnitTesting; 19 #endif 20 21 namespace ReactiveTests.Tests 22 { 23 [TestClass] 24 public class QbservableExTest : ReactiveTest 25 { 26 private IQbservable<int> _qbNull = null; 27 private IQbservable<int> _qbMy = new MyQbservable<int>(); 28 private IQbservableProvider _qbp = new MyQbservableProvider(); 29 30 [TestMethod] ForkJoin_ArgumentNullChecks()31 public void ForkJoin_ArgumentNullChecks() 32 { 33 ReactiveAssert.Throws<ArgumentNullException>(() => QbservableEx.ForkJoin(_qbNull, _qbMy, (a, b) => a + b)); 34 ReactiveAssert.Throws<ArgumentNullException>(() => QbservableEx.ForkJoin(_qbMy, _qbNull, (a, b) => a + b)); 35 ReactiveAssert.Throws<ArgumentNullException>(() => QbservableEx.ForkJoin(_qbMy, _qbMy, default(Expression<Func<int, int, int>>))); 36 ReactiveAssert.Throws<ArgumentNullException>(() => QbservableEx.ForkJoin(default(IQbservableProvider), _qbMy)); 37 ReactiveAssert.Throws<ArgumentNullException>(() => QbservableEx.ForkJoin(_qbp, default(IQbservable<int>[]))); 38 ReactiveAssert.Throws<ArgumentNullException>(() => QbservableEx.ForkJoin(default(IQbservableProvider), new MyQueryable<IObservable<int>>())); 39 ReactiveAssert.Throws<ArgumentNullException>(() => QbservableEx.ForkJoin(_qbp, default(IQueryable<IObservable<int>>))); 40 } 41 42 [TestMethod] ForkJoin()43 public void ForkJoin() 44 { 45 _qbMy.ForkJoin(_qbMy, (a, b) => a + b); 46 _qbp.ForkJoin(_qbMy, _qbMy); 47 _qbp.ForkJoin(new MyQueryable<IObservable<int>>()); 48 } 49 50 [TestMethod] Create_ArgumentNullChecks()51 public void Create_ArgumentNullChecks() 52 { 53 ReactiveAssert.Throws<ArgumentNullException>(() => QbservableEx.Create<int>(default(IQbservableProvider), _ => new IObservable<object>[0])); 54 ReactiveAssert.Throws<ArgumentNullException>(() => QbservableEx.Create<int>(_qbp, default(Expression<Func<IObserver<int>, IEnumerable<IObservable<object>>>>))); 55 ReactiveAssert.Throws<ArgumentNullException>(() => QbservableEx.Create(default(IQbservableProvider), () => new IObservable<object>[0])); 56 ReactiveAssert.Throws<ArgumentNullException>(() => QbservableEx.Create(_qbp, null)); 57 } 58 59 [TestMethod] Create()60 public void Create() 61 { 62 _qbp.Create<int>(obs => new IObservable<object>[0]); 63 _qbp.Create(() => new IObservable<object>[0]); 64 } 65 66 [TestMethod] Let_ArgumentNullChecks()67 public void Let_ArgumentNullChecks() 68 { 69 ReactiveAssert.Throws<ArgumentNullException>(() => QbservableEx.Let(_qbNull, xs => xs)); 70 ReactiveAssert.Throws<ArgumentNullException>(() => QbservableEx.Let(_qbMy, default(Expression<Func<IObservable<int>, IObservable<int>>>))); 71 } 72 73 [TestMethod] Let()74 public void Let() 75 { 76 _qbMy.Let(xs => xs); 77 } 78 } 79 } 80 81 #endif 82 #endif