Răsfoiți Sursa

Add .NET Standard 2 to Ix (#628)

* Add .NET Core 2.1 tests

* Add .NET Core 2.1 target and Get UWP tests working

* Add .NET Standard 2 target
Oren Novotny 7 ani în urmă
părinte
comite
fbd9ee7655

+ 3 - 0
Ix.NET/Source/Directory.build.targets

@@ -11,6 +11,9 @@
   <PropertyGroup Condition="'$(TargetFramework)' == 'netstandard1.3'">
     <DefineConstants>$(DefineConstants);NO_CODE_COVERAGE_ATTRIBUTE;CRIPPLED_REFLECTION;PLIB;SIGNED</DefineConstants>
   </PropertyGroup>
+  <PropertyGroup Condition="'$(TargetFramework)' == 'netstandard2.0'">
+    <DefineConstants>$(DefineConstants);PLIB;SIGNED</DefineConstants>
+  </PropertyGroup>
   <PropertyGroup Condition="'$(TargetFramework)' == 'net45'">
     <DefineConstants>$(DefineConstants);HAS_APTCA;NO_ARRAY_EMPTY;DESKTOPCLR;DESKTOPCLR45;SIGNED</DefineConstants>
   </PropertyGroup>

+ 1 - 1
Ix.NET/Source/System.Interactive.Async.Providers/System.Interactive.Async.Providers.csproj

@@ -3,7 +3,7 @@
   <PropertyGroup>
     <Description>Interactive Extensions Async Providers Library used to build query providers and express queries over async enumerable sequences.</Description>
     <AssemblyTitle>Interactive Extensions - Async Providers Library</AssemblyTitle>
-    <TargetFrameworks>net45;netstandard1.0</TargetFrameworks>
+    <TargetFrameworks>net45;netstandard1.0;netstandard2.0</TargetFrameworks>
     <PackageTags>Ix;Interactive;Extensions;Enumerable;Asynchronous</PackageTags>
   </PropertyGroup>
 

+ 3 - 3
Ix.NET/Source/System.Interactive.Async.Tests/AsyncTests.Exceptions.cs

@@ -394,7 +394,7 @@ namespace Tests
         }
 
         [Fact]
-        public void Finally6()
+        public async Task Finally6()
         {
             var b = false;
 
@@ -408,13 +408,13 @@ namespace Tests
             cts.Cancel();
             t.Wait(WaitTimeoutMs);
 
-            for (int i = 0; i < WaitTimeoutMs / 100; i++)
+            for (var i = 0; i < WaitTimeoutMs / 100; i++)
             {
                 if (Volatile.Read(ref b))
                 {
                     return;
                 }
-                Thread.Sleep(100);
+                await Task.Delay(100);
             }
 
             Assert.True(true, "Timeout while waiting for b to become true.");

+ 1 - 1
Ix.NET/Source/System.Interactive.Async.Tests/System.Interactive.Async.Tests.csproj

@@ -1,7 +1,7 @@
 <Project Sdk="Microsoft.NET.Sdk">
 
   <PropertyGroup>
-    <TargetFrameworks>netcoreapp1.1;net461</TargetFrameworks>
+    <TargetFrameworks>netcoreapp2.1;netcoreapp1.1;net461</TargetFrameworks>
     <NoWarn>$(NoWarn);CS0618</NoWarn>
   </PropertyGroup>
 

+ 1 - 1
Ix.NET/Source/System.Interactive.Async/System.Interactive.Async.csproj

@@ -3,7 +3,7 @@
   <PropertyGroup>
     <Description>Interactive Extensions Async Library used to express queries over asynchronous enumerable sequences.</Description>
     <AssemblyTitle>Interactive Extensions - Async Library</AssemblyTitle>
-    <TargetFrameworks>net45;net46;netstandard1.0;netstandard1.3</TargetFrameworks>
+    <TargetFrameworks>net45;net46;netstandard1.0;netstandard1.3;netstandard2.0</TargetFrameworks>
     <PackageTags>Ix;Interactive;Extensions;Enumerable;Asynchronous</PackageTags>
   </PropertyGroup>
 

+ 1 - 1
Ix.NET/Source/System.Interactive.Providers/System.Interactive.Providers.csproj

@@ -3,7 +3,7 @@
   <PropertyGroup>
     <Description>Interactive Extensions Providers Library used to build query providers and express queries over enumerable sequences.</Description>
     <AssemblyTitle>Interactive Extensions - Providers Library</AssemblyTitle>
-    <TargetFrameworks>net45;netstandard1.0</TargetFrameworks>
+    <TargetFrameworks>net45;netstandard1.0;netstandard2.0</TargetFrameworks>
     <PackageTags>Ix;Interactive;Extensions;Enumerable</PackageTags>
   </PropertyGroup>
 

BIN
Ix.NET/Source/System.Interactive.Tests.Uwp.DeviceRunner/AppPackages/System.Interactive.Tests.Uwp.DeviceRunner_1.0.0.0_x86_Test/System.Interactive.Tests.Uwp.DeviceRunner_1.0.0.0_x86.appx


+ 1 - 1
Ix.NET/Source/System.Interactive.Tests.Uwp.DeviceRunner/Package.appxmanifest

@@ -28,7 +28,7 @@
   </Resources>
 
   <Applications>
-    <Application Id="App"
+    <Application Id="vstest.executionengine.universal.App"
       Executable="$targetnametoken$.exe"
       EntryPoint="System.Interactive.Tests.Uwp.DeviceRunner.App">
       <uap:VisualElements

+ 12 - 7
Ix.NET/Source/System.Interactive.Tests.Uwp.DeviceRunner/System.Interactive.Tests.Uwp.DeviceRunner.csproj

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@@ -11,13 +11,14 @@
     <AssemblyName>System.Interactive.Tests.Uwp.DeviceRunner</AssemblyName>
     <DefaultLanguage>en-US</DefaultLanguage>
     <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>
-    <TargetPlatformVersion>10.0.10586.0</TargetPlatformVersion>
-    <TargetPlatformMinVersion>10.0.10586.0</TargetPlatformMinVersion>
+    <TargetPlatformVersion>10.0.17134.0</TargetPlatformVersion>
+    <TargetPlatformMinVersion>10.0.16299.0</TargetPlatformMinVersion>
     <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>
     <FileAlignment>512</FileAlignment>
     <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
     <PackageCertificateKeyFile>System.Interactive.Tests.Uwp.DeviceRunner_TemporaryKey.pfx</PackageCertificateKeyFile>
-    <PackageCertificateThumbprint>422BF5D1CFB50C975293A3158EA46852395F42CF</PackageCertificateThumbprint>
+    <PackageCertificateThumbprint>B51AED9ACEFAFE6437CFC24DC4EDF1232B0BE1CA</PackageCertificateThumbprint>
+    <UnitTestPlatformVersion Condition="'$(UnitTestPlatformVersion)' == ''">$(VisualStudioVersion)</UnitTestPlatformVersion>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
     <DebugSymbols>true</DebugSymbols>
@@ -89,10 +90,11 @@
     <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
   </PropertyGroup>
   <ItemGroup>
-    <PackageReference Include="Microsoft.NETCore.UniversalWindowsPlatform" Version="5.3.3" />
-    <PackageReference Include="xunit" Version="2.2.0" />
-    <PackageReference Include="xunit.runner.devices" Version="2.2.0" />
+    <PackageReference Include="Microsoft.NETCore.UniversalWindowsPlatform" Version="6.1.5" />
+    <PackageReference Include="xunit" Version="2.4.0-beta.2.build4010" />
+    <PackageReference Include="xunit.runner.devices" Version="2.4.0-build.27" />
     <PackageReference Include="FluentAssertions" Version="4.19.2" />
+    <PackageReference Include="xunit.runner.visualstudio" Version="2.4.0-beta.2.build4010" />
   </ItemGroup>
   <ItemGroup>
     <!-- A reference to the entire .Net Framework and Windows SDK are automatically included -->
@@ -214,6 +216,9 @@
     <ProjectReference Include="..\System.Interactive.Async\System.Interactive.Async.csproj" />
     <ProjectReference Include="..\System.Interactive.Async.Providers\System.Interactive.Async.Providers.csproj" />
   </ItemGroup>
+  <ItemGroup>
+    <SDKReference Include="TestPlatform.Universal, Version=15.5" />
+  </ItemGroup>
   <ItemGroup>
     <Service Include="{508349B6-6B84-4DF5-91F0-309BEEBAD82D}" />
   </ItemGroup>

BIN
Ix.NET/Source/System.Interactive.Tests.Uwp.DeviceRunner/System.Interactive.Tests.Uwp.DeviceRunner_TemporaryKey.pfx


+ 1 - 1
Ix.NET/Source/System.Interactive.Tests/System.Interactive.Tests.csproj

@@ -1,7 +1,7 @@
 <Project Sdk="Microsoft.NET.Sdk">
 
   <PropertyGroup>
-    <TargetFrameworks>netcoreapp1.1;net461</TargetFrameworks>
+    <TargetFrameworks>netcoreapp2.1;netcoreapp1.1;net461</TargetFrameworks>
     <NoWarn>$(NoWarn);CS0618</NoWarn>
   </PropertyGroup>
 

+ 4 - 0
Ix.NET/Source/System.Interactive.Tests/Tests.Qbservable.cs

@@ -132,7 +132,11 @@ namespace Tests
         [Fact]
         public void QueryableRetarget3()
         {
+#if NETCOREAPP2_1 || WINDOWS_UWP
+            var res = QueryableEx.TakeLast(Enumerable.Range(0, 10).AsQueryable(), 2).AsEnumerable().ToList();
+#else
             var res = Enumerable.Range(0, 10).AsQueryable().TakeLast(2).AsEnumerable().ToList();
+#endif
             Assert.True(res.SequenceEqual(new[] { 8, 9 }));
         }
 

+ 31 - 0
Ix.NET/Source/System.Interactive.Tests/Tests.Single.cs

@@ -352,7 +352,11 @@ namespace Tests
         public void TakeLast_TakeZero()
         {
             var e = Enumerable.Range(1, 5) ;
+#if NETCOREAPP2_1 || WINDOWS_UWP
+            var r = EnumerableEx.TakeLast(e, 0).ToList();
+#else
             var r = e.TakeLast(0).ToList();
+#endif
             Assert.True(Enumerable.SequenceEqual(r, Enumerable.Empty<int>()));
         }
 
@@ -360,7 +364,12 @@ namespace Tests
         public void TakeLast_Empty()
         {
             var e = Enumerable.Empty<int>();
+
+#if NETCOREAPP2_1 || WINDOWS_UWP
+            var r = EnumerableEx.TakeLast(e, 1).ToList();
+#else
             var r = e.TakeLast(1).ToList();
+#endif
             Assert.True(Enumerable.SequenceEqual(r, e));
         }
 
@@ -368,7 +377,13 @@ namespace Tests
         public void TakeLast_All()
         {
             var e = Enumerable.Range(0, 5);
+
+#if NETCOREAPP2_1 || WINDOWS_UWP
+            var r = EnumerableEx.TakeLast(e, 5).ToList();
+#else
             var r = e.TakeLast(5).ToList();
+#endif
+            
             Assert.True(Enumerable.SequenceEqual(r, e));
         }
 
@@ -376,7 +391,11 @@ namespace Tests
         public void TakeLast_Part()
         {
             var e = Enumerable.Range(0, 5);
+#if NETCOREAPP2_1 || WINDOWS_UWP
+            var r = EnumerableEx.TakeLast(e, 3).ToList();
+#else
             var r = e.TakeLast(3).ToList();
+#endif
             Assert.True(Enumerable.SequenceEqual(r, e.Skip(2)));
         }
 
@@ -391,7 +410,11 @@ namespace Tests
         public void SkipLast_Empty()
         {
             var e = Enumerable.Empty<int>();
+#if NETCOREAPP2_1 || WINDOWS_UWP
+            var r = EnumerableEx.SkipLast(e, 1).ToList();
+#else
             var r = e.SkipLast(1).ToList();
+#endif
             Assert.True(Enumerable.SequenceEqual(r, e));
         }
 
@@ -399,7 +422,11 @@ namespace Tests
         public void SkipLast_All()
         {
             var e = Enumerable.Range(0, 5);
+#if NETCOREAPP2_1 || WINDOWS_UWP
+            var r = EnumerableEx.SkipLast(e, 0).ToList();
+#else
             var r = e.SkipLast(0).ToList();
+#endif
             Assert.True(Enumerable.SequenceEqual(r, e));
         }
 
@@ -407,7 +434,11 @@ namespace Tests
         public void SkipLast_Part()
         {
             var e = Enumerable.Range(0, 5);
+#if NETCOREAPP2_1 || WINDOWS_UWP
+            var r = EnumerableEx.SkipLast(e, 3).ToList();
+#else
             var r = e.SkipLast(3).ToList();
+#endif
             Assert.True(Enumerable.SequenceEqual(r, e.Take(2)));
         }
 

+ 1 - 1
Ix.NET/Source/System.Interactive/System.Interactive.csproj

@@ -4,7 +4,7 @@
     <Description>Interactive Extensions Main Library used to express queries over enumerable sequences.</Description>
     <AssemblyTitle>Interactive Extensions - Main Library</AssemblyTitle>
     <Authors>Microsoft</Authors>
-    <TargetFrameworks>net45;netstandard1.0</TargetFrameworks>
+    <TargetFrameworks>net45;netstandard1.0;netstandard2.0</TargetFrameworks>
     <PackageTags>Ix;Interactive;Extensions;Enumerable</PackageTags>
   </PropertyGroup>