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