Browse Source

Misc fixes

Oren Novotny 9 years ago
parent
commit
c65b27b37e

+ 5 - 4
Rx.NET/Source/Tests.System.Reactive/TestLongRunningScheduler.cs

@@ -4,6 +4,7 @@ using System;
 using System.Reactive.Concurrency;
 using System.Reactive.Disposables;
 using System.Threading;
+using System.Threading.Tasks;
 
 namespace ReactiveTests
 {
@@ -44,7 +45,7 @@ namespace ReactiveTests
         {
             throw new NotImplementedException();
         }
-#if !NO_THREAD
+
         public IDisposable ScheduleLongRunning<TState>(TState state, Action<TState, ICancelable> action)
         {
             var d = new BooleanDisposable();
@@ -55,7 +56,7 @@ namespace ReactiveTests
             var ee = new ManualResetEvent(false);
             _setEnd(ee);
 
-            new Thread(() =>
+            Task.Run(() =>
             {
                 eb.Set();
                 try
@@ -73,11 +74,11 @@ namespace ReactiveTests
                 {
                     ee.Set();
                 }
-            }).Start();
+            });
 
             return d;
         }
-#endif
+
         object IServiceProvider.GetService(Type serviceType)
         {
             if (serviceType == typeof(ISchedulerLongRunning))

+ 5 - 5
Rx.NET/Source/Tests.System.Reactive/Tests/Linq/ObservableBindingTest.cs

@@ -762,7 +762,7 @@ namespace ReactiveTests.Tests
 
             var connection3 = ys.Connect();
 
-            Assert.AreNotSame(connection1, connection3);
+            Assert.NotSame(connection1, connection3);
 
             connection3.Dispose();
         }
@@ -1165,7 +1165,7 @@ namespace ReactiveTests.Tests
 
             var connection3 = ys.Connect();
 
-            Assert.AreNotSame(connection1, connection3);
+            Assert.NotSame(connection1, connection3);
 
             connection3.Dispose();
         }
@@ -1547,7 +1547,7 @@ namespace ReactiveTests.Tests
 
             var connection3 = ys.Connect();
 
-            Assert.AreNotSame(connection1, connection3);
+            Assert.NotSame(connection1, connection3);
 
             connection3.Dispose();
         }
@@ -2125,7 +2125,7 @@ namespace ReactiveTests.Tests
 
             var connection3 = ys.Connect();
 
-            Assert.AreNotSame(connection1, connection3);
+            Assert.NotSame(connection1, connection3);
 
             connection3.Dispose();
         }
@@ -2536,7 +2536,7 @@ namespace ReactiveTests.Tests
 
             var connection3 = ys.Connect();
 
-            Assert.AreNotSame(connection1, connection3);
+            Assert.NotSame(connection1, connection3);
 
             connection3.Dispose();
         }

+ 6 - 6
Rx.NET/Source/Tests.System.Reactive/Tests/Linq/ObservableEventsTest.cs

@@ -300,8 +300,8 @@ namespace ReactiveTests.Tests
             src.OnE2(new CancelEventArgs());
 
             Assert.True(lst.Count == 2, "Count");
-            Assert.Same(e1, lst[0].EventArgs, "First");
-            Assert.Same(e2, lst[1].EventArgs, "Second");
+            Assert.True(ReferenceEquals(e1, lst[0].EventArgs), "First");
+            Assert.True(ReferenceEquals(e2, lst[1].EventArgs), "Second");
         }
 
         [Fact]
@@ -324,8 +324,8 @@ namespace ReactiveTests.Tests
             src.OnE3("Fail!");
 
             Assert.True(lst.Count == 2, "Count");
-            Assert.Same(s1, lst[0].Sender, "First");
-            Assert.Same(s2, lst[1].Sender, "Second");
+            Assert.True(ReferenceEquals(s1, lst[0].Sender), "First");
+            Assert.True(ReferenceEquals(s2, lst[1].Sender), "Second");
         }
 
         [Fact]
@@ -352,8 +352,8 @@ namespace ReactiveTests.Tests
             src.OnE2(new CancelEventArgs());
 
             Assert.True(lst.Count == 2, "Count");
-            Assert.Same(e1, lst[0].EventArgs, "First");
-            Assert.Same(e2, lst[1].EventArgs, "Second");
+            Assert.True(ReferenceEquals(e1, lst[0].EventArgs), "First");
+            Assert.True(ReferenceEquals(e2, lst[1].EventArgs), "Second");
         }
 
         [Fact]

+ 2 - 2
Rx.NET/Source/Tests.System.Reactive/Tests/Linq/ObservableSingleTest.cs

@@ -36,7 +36,7 @@ namespace ReactiveTests.Tests
 
             var ys = xs.AsObservable().AsObservable();
 
-            Assert.AreNotSame(xs, ys);
+            Assert.NotSame(xs, ys);
 
             var res = scheduler.Start(() =>
                 ys
@@ -59,7 +59,7 @@ namespace ReactiveTests.Tests
 
             var res = xs.AsObservable();
 
-            Assert.AreNotSame(xs, res);
+            Assert.NotSame(xs, res);
         }
 
         [Fact]

+ 8 - 6
Rx.NET/Source/Tests.System.Reactive/Tests/Linq/ObservableTimeTest.cs

@@ -871,6 +871,7 @@ namespace ReactiveTests.Tests
             );
         }
 
+#if !NO_THREAD
         [Fact]
         public void Delay_TimeSpan_Real_Simple1()
         {
@@ -882,6 +883,7 @@ namespace ReactiveTests.Tests
         {
             Delay_TimeSpan_Real_Simple1_Impl(ThreadPoolScheduler.Instance);
         }
+#endif
 
         private void Delay_TimeSpan_Real_Simple1_Impl(IScheduler scheduler)
         {
@@ -2253,9 +2255,9 @@ namespace ReactiveTests.Tests
             }
         }
 
-        #endregion
+#endregion
 
-        #region + DelaySubscription +
+#region + DelaySubscription +
 
         [Fact]
         public void DelaySubscription_ArgumentChecking()
@@ -2396,9 +2398,9 @@ namespace ReactiveTests.Tests
             );
         }
 
-        #endregion
+#endregion
 
-        #region + Generate +
+#region + Generate +
 
         [Fact]
         public void Generate_TimeSpan_ArgumentChecking()
@@ -2654,9 +2656,9 @@ namespace ReactiveTests.Tests
             Observable.Generate(0, x => x < 10, x => x + 1, x => x, x => DateTimeOffset.Now.AddMilliseconds(x)).AssertEqual(Observable.Generate(0, x => x < 10, x => x + 1, x => x, x => DateTimeOffset.Now.AddMilliseconds(x), DefaultScheduler.Instance));
         }
 
-        #endregion
+#endregion
 
-        #region + Interval +
+#region + Interval +
 
         [Fact]
         public void Interval_TimeSpan_ArgumentChecking()

+ 53 - 38
Rx.NET/Source/Tests.System.Reactive/Tests/Linq/QbservableTest.cs

@@ -1,4 +1,5 @@
 // Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
+#define DEBUG // so that the Debug.WriteLines aren't compiled out
 
 #if !SILVERLIGHTM7
 
@@ -16,6 +17,7 @@ using System.Runtime.CompilerServices;
 using System.Threading;
 using Xunit;
 using Microsoft.Reactive.Testing;
+using System.Diagnostics;
 
 namespace ReactiveTests.Tests
 {
@@ -408,34 +410,34 @@ namespace ReactiveTests.Tests
         [Fact]
         public void Do_ArgumentNullChecks()
         {
-            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.Do(_qbNull, i => Console.WriteLine(i)));
+            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.Do(_qbNull, i => Debug.WriteLine(i)));
             ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.Do(_qbMy, default(Expression<Action<int>>)));
 
-            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.Do(_qbNull, i => Console.WriteLine(i), ex => Console.WriteLine(ex.Message)));
-            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.Do(_qbMy, default(Expression<Action<int>>), ex => Console.WriteLine(ex.Message)));
-            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.Do(_qbMy, i => Console.WriteLine(i), default(Expression<Action<Exception>>)));
+            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.Do(_qbNull, i => Debug.WriteLine(i), ex => Debug.WriteLine(ex.Message)));
+            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.Do(_qbMy, default(Expression<Action<int>>), ex => Debug.WriteLine(ex.Message)));
+            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.Do(_qbMy, i => Debug.WriteLine(i), default(Expression<Action<Exception>>)));
 
-            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.Do(_qbNull, i => Console.WriteLine(i), () => Console.WriteLine()));
-            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.Do(_qbMy, default(Expression<Action<int>>), () => Console.WriteLine()));
-            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.Do(_qbMy, i => Console.WriteLine(i), default(Expression<Action>)));
+            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.Do(_qbNull, i => Debug.WriteLine(i), () => Debug.WriteLine("")));
+            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.Do(_qbMy, default(Expression<Action<int>>), () => Debug.WriteLine("")));
+            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.Do(_qbMy, i => Debug.WriteLine(i), default(Expression<Action>)));
 
-            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.Do(_qbNull, i => Console.WriteLine(i), ex => Console.WriteLine(ex.Message), () => Console.WriteLine()));
-            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.Do(_qbMy, default(Expression<Action<int>>), ex => Console.WriteLine(ex.Message), () => Console.WriteLine()));
-            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.Do(_qbMy, i => Console.WriteLine(i), default(Expression<Action<Exception>>), () => Console.WriteLine()));
-            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.Do(_qbMy, i => Console.WriteLine(i), ex => Console.WriteLine(ex.Message), default(Expression<Action>)));
+            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.Do(_qbNull, i => Debug.WriteLine(i), ex => Debug.WriteLine(ex.Message), () => Debug.WriteLine("")));
+            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.Do(_qbMy, default(Expression<Action<int>>), ex => Debug.WriteLine(ex.Message), () => Debug.WriteLine("")));
+            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.Do(_qbMy, i => Debug.WriteLine(i), default(Expression<Action<Exception>>), () => Debug.WriteLine("")));
+            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.Do(_qbMy, i => Debug.WriteLine(i), ex => Debug.WriteLine(ex.Message), default(Expression<Action>)));
 
-            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.Do(_qbNull, Observer.Create<int>(i => Console.WriteLine(i))));
+            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.Do(_qbNull, Observer.Create<int>(i => Debug.WriteLine(i))));
             ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.Do(_qbMy, default(IObserver<int>)));
         }
 
         [Fact]
         public void Do()
         {
-            _qbMy.Do(i => Console.WriteLine(i));
-            _qbMy.Do(i => Console.WriteLine(i), ex => Console.WriteLine(ex.Message));
-            _qbMy.Do(i => Console.WriteLine(i), () => Console.WriteLine());
-            _qbMy.Do(i => Console.WriteLine(i), ex => Console.WriteLine(ex.Message), () => Console.WriteLine());
-            _qbMy.Do(Observer.Create<int>(i => Console.WriteLine(i)));
+            _qbMy.Do(i => Debug.WriteLine(i));
+            _qbMy.Do(i => Debug.WriteLine(i), ex => Debug.WriteLine(ex.Message));
+            _qbMy.Do(i => Debug.WriteLine(i), () => Debug.WriteLine(""));
+            _qbMy.Do(i => Debug.WriteLine(i), ex => Debug.WriteLine(ex.Message), () => Debug.WriteLine(""));
+            _qbMy.Do(Observer.Create<int>(i => Debug.WriteLine(i)));
         }
 
         [Fact]
@@ -469,14 +471,14 @@ namespace ReactiveTests.Tests
         [Fact]
         public void Finally_ArgumentNullChecks()
         {
-            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.Finally(_qbNull, () => Console.WriteLine()));
+            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.Finally(_qbNull, () => Debug.WriteLine("")));
             ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.Finally(_qbMy, null));
         }
 
         [Fact]
         public void Finally()
         {
-            _qbMy.Finally(() => Console.WriteLine());
+            _qbMy.Finally(() => Debug.WriteLine(""));
         }
 
         [Fact]
@@ -499,25 +501,25 @@ namespace ReactiveTests.Tests
             ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.FromEventPattern<EventArgs>(null, "", "Event"));
             ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.FromEventPattern<EventArgs>(_qbp, null, "Event"));
             ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.FromEventPattern<EventArgs>(_qbp, "", null));
-            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.FromEventPattern<EventArgs>(null, e => Console.WriteLine(), e => Console.WriteLine()));
-            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.FromEventPattern<EventArgs>(_qbp, null, e => Console.WriteLine()));
-            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.FromEventPattern<EventArgs>(_qbp, e => Console.WriteLine(), null));
-            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.FromEventPattern<Action, EventArgs>(null, e => () => Console.WriteLine(), e => Console.WriteLine(), e => Console.WriteLine()));
-            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.FromEventPattern<Action, EventArgs>(_qbp, null, e => Console.WriteLine(), e => Console.WriteLine()));
-            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.FromEventPattern<Action, EventArgs>(_qbp, e => () => Console.WriteLine(), null, e => Console.WriteLine()));
-            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.FromEventPattern<Action, EventArgs>(_qbp, e => () => Console.WriteLine(), e => Console.WriteLine(), null));
-            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.FromEventPattern(_qbp, default(Expression<Action<EventHandler>>), e => Console.WriteLine()));
-            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.FromEventPattern(_qbp, e => Console.WriteLine(), default(Expression<Action<EventHandler>>)));
-            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.FromEventPattern(null, e => Console.WriteLine(), e => Console.WriteLine()));
+            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.FromEventPattern<EventArgs>(null, e => Debug.WriteLine(""), e => Debug.WriteLine("")));
+            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.FromEventPattern<EventArgs>(_qbp, null, e => Debug.WriteLine("")));
+            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.FromEventPattern<EventArgs>(_qbp, e => Debug.WriteLine(""), null));
+            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.FromEventPattern<Action, EventArgs>(null, e => () => Debug.WriteLine(""), e => Debug.WriteLine(""), e => Debug.WriteLine("")));
+            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.FromEventPattern<Action, EventArgs>(_qbp, null, e => Debug.WriteLine(""), e => Debug.WriteLine("")));
+            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.FromEventPattern<Action, EventArgs>(_qbp, e => () => Debug.WriteLine(""), null, e => Debug.WriteLine("")));
+            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.FromEventPattern<Action, EventArgs>(_qbp, e => () => Debug.WriteLine(""), e => Debug.WriteLine(""), null));
+            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.FromEventPattern(_qbp, default(Expression<Action<EventHandler>>), e => Debug.WriteLine("")));
+            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.FromEventPattern(_qbp, e => Debug.WriteLine(""), default(Expression<Action<EventHandler>>)));
+            ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.FromEventPattern(null, e => Debug.WriteLine(""), e => Debug.WriteLine("")));
         }
 
         [Fact]
         public void FromEvent()
         {
             _qbp.FromEventPattern<EventArgs>("", "Event");
-            _qbp.FromEventPattern<EventArgs>(e => Console.WriteLine(), e => Console.WriteLine());
-            _qbp.FromEventPattern<Action, EventArgs>(e => () => Console.WriteLine(), a => Console.WriteLine(), a => Console.WriteLine());
-            _qbp.FromEventPattern(e => Console.WriteLine(), e => Console.WriteLine());
+            _qbp.FromEventPattern<EventArgs>(e => Debug.WriteLine(""), e => Debug.WriteLine(""));
+            _qbp.FromEventPattern<Action, EventArgs>(e => () => Debug.WriteLine(""), a => Debug.WriteLine(""), a => Debug.WriteLine(""));
+            _qbp.FromEventPattern(e => Debug.WriteLine(""), e => Debug.WriteLine(""));
         }
 
         [Fact]
@@ -863,16 +865,21 @@ namespace ReactiveTests.Tests
         {
             ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.ObserveOn(_qbMy, default(IScheduler)));
             ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.ObserveOn(_qbMy, default(SynchronizationContext)));
+#if !NO_DISPATCHER
             ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.ObserveOn(_qbMy, default(DispatcherScheduler)));
+#endif
 #if HAS_WINFORMS
             ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.ObserveOn(_qbMy, default(ControlScheduler)));
             ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.ObserveOn(_qbNull, new ControlScheduler(new System.Windows.Forms.Form())));
 #endif
             ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.ObserveOn(_qbNull, Scheduler.Immediate));
             ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.ObserveOn(_qbNull, new SynchronizationContext()));
+#if !NO_DISPATCHER
             ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.ObserveOn(_qbNull, DispatcherScheduler.Instance));
+#endif
         }
 
+#if !NO_DISPATCHER
         [Fact]
         public void ObserveOn()
         {
@@ -880,6 +887,7 @@ namespace ReactiveTests.Tests
             _qbMy.ObserveOn(new SynchronizationContext());
             Qbservable.ObserveOn(_qbMy, DispatcherScheduler.Instance);
         }
+#endif
 
         [Fact]
         public void OfType_ArgumentNullChecks()
@@ -1144,10 +1152,14 @@ namespace ReactiveTests.Tests
         {
             ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.SubscribeOn(_qbMy, default(IScheduler)));
             ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.SubscribeOn(_qbMy, default(SynchronizationContext)));
+#if !NO_DISPATCHER
             ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.SubscribeOn(_qbMy, default(DispatcherScheduler)));
+#endif
             ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.SubscribeOn(_qbNull, Scheduler.Immediate));
             ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.SubscribeOn(_qbNull, new SynchronizationContext()));
+#if !NO_DISPATCHER
             ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.SubscribeOn(_qbNull, DispatcherScheduler.Instance));
+#endif
 #if HAS_WINFORMS
             ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.SubscribeOn(_qbMy, default(ControlScheduler)));
             ReactiveAssert.Throws<ArgumentNullException>(() => Qbservable.SubscribeOn(_qbNull, new ControlScheduler(new System.Windows.Forms.Form())));
@@ -1159,7 +1171,9 @@ namespace ReactiveTests.Tests
         {
             _qbMy.SubscribeOn(Scheduler.Immediate);
             _qbMy.SubscribeOn(new SynchronizationContext());
+#if !NO_DISPATCHER
             Qbservable.SubscribeOn(_qbMy, DispatcherScheduler.Instance);
+#endif
 #if HAS_WINFORMS
             _qbMy.SubscribeOn(new ControlScheduler(new System.Windows.Forms.Form()));
 #endif
@@ -1766,7 +1780,7 @@ namespace ReactiveTests.Tests
 
             Func<Type, bool> filterReturn = t =>
             {
-                if (t.IsGenericType)
+                if (t.GetTypeInfo().IsGenericType)
                 {
                     var gd = t.GetGenericTypeDefinition();
                     if (
@@ -1781,7 +1795,7 @@ namespace ReactiveTests.Tests
             {
                 if (group.Name == "FromAsyncPattern" || group.Name == "ToAsync")
                 {
-                    Assert.Equal(group.Observable.Count, group.Qbservable.Count, "Mismatch overload count between Qbservable and Observable for " + group.Name);
+                    Assert.True(group.Observable.Count == group.Qbservable.Count, "Mismatch overload count between Qbservable and Observable for " + group.Name);
                     continue;
                 }
 
@@ -1801,9 +1815,9 @@ namespace ReactiveTests.Tests
 
             var gens = m.IsGenericMethod ? string.Format("<{0}>", string.Join(", ", m.GetGenericArguments().Select(a => GetTypeName(a, correct)).ToArray())) : "";
 
-            var pars = string.Join(", ", pss.Select(p => (Attribute.IsDefined(p, typeof(ParamArrayAttribute)) ? "params " : "") + GetTypeName(p.ParameterType, correct) + " " + p.Name).ToArray());
-            Attribute.
-            if (Attribute.IsDefined(m, typeof(ExtensionAttribute)))
+            var pars = string.Join(", ", pss.Select(p => (p.IsDefined(typeof(ParamArrayAttribute)) ? "params " : "") + GetTypeName(p.ParameterType, correct) + " " + p.Name).ToArray());
+            
+            if(m.IsDefined(typeof(ExtensionAttribute)))
             {
                 if (pars.StartsWith("IQbservable") || pars.StartsWith("IQueryable"))
                     pars = "this " + pars;
@@ -1814,7 +1828,7 @@ namespace ReactiveTests.Tests
 
         public static string GetTypeName(Type t, bool correct)
         {
-            if (t.IsGenericType)
+            if (t.GetTypeInfo().IsGenericType)
             {
                 var gtd = t.GetGenericTypeDefinition();
                 if (gtd == typeof(Expression<>))
@@ -1886,6 +1900,7 @@ namespace ReactiveTests.Tests
 
     public static class MyExt
     {
+
         public static IQbservable<R> Foo<T, R>(this IQbservable<T> source, Expression<Func<T, R>> f)
         {
             return source.Provider.CreateQuery<R>(

+ 6 - 2
Rx.NET/Source/Tests.System.Reactive/project.json

@@ -16,7 +16,8 @@
     "System.Reactive.PlatformServices": { "target": "project" },
     "Microsoft.Reactive.Testing": { "target": "project" },
     "System.Reactive.Experimental": { "target": "project" },
-    "System.Reactive.Providers": {"target": "project"}, 
+    "System.Reactive.Providers": { "target": "project" }, 
+    "System.Reactive.Observable.Aliases": {"target": "project"}, 
     "xunit": "2.1.0"
   },
   
@@ -72,9 +73,12 @@
         "System.Collections.Concurrent": "4.0.0",
         "System.Linq": "4.0.0",
         "System.Threading": "4.0.0",
+        "System.Threading.Tasks": "4.0.0",
         "System.Threading.Timer": "4.0.0",
         "System.Runtime": "4.0.0",
-        "System.Runtime.Extensions": "4.0.0"
+        "System.Runtime.Extensions": "4.0.0",
+        "System.Reflection": "4.0.0",        
+        "System.Reflection.Extensions": "4.0.0"
       }
     }
   }