Skip to content

Commit

Permalink
Add Xamarin.Mac.NET (xamarinmacnet45)
Browse files Browse the repository at this point in the history
  • Loading branch information
joelverhagen committed Mar 2, 2017
1 parent 3a377a5 commit 73f7fc1
Show file tree
Hide file tree
Showing 6 changed files with 83 additions and 1 deletion.
23 changes: 23 additions & 0 deletions src/NuGet.Core/NuGet.Frameworks/DefaultFrameworkMappings.cs
Expand Up @@ -80,6 +80,7 @@ sealed class DefaultFrameworkMappings : IFrameworkMappings
new KeyValuePair<string, string>(FrameworkConstants.FrameworkIdentifiers.MonoMac, "monomac"),
new KeyValuePair<string, string>(FrameworkConstants.FrameworkIdentifiers.XamarinIOs, "xamarinios"),
new KeyValuePair<string, string>(FrameworkConstants.FrameworkIdentifiers.XamarinMac, "xamarinmac"),
new KeyValuePair<string, string>(FrameworkConstants.FrameworkIdentifiers.XamarinMacNet, "xamarinmacnet"),
new KeyValuePair<string, string>(FrameworkConstants.FrameworkIdentifiers.XamarinPlayStation3, "xamarinpsthree"),
new KeyValuePair<string, string>(FrameworkConstants.FrameworkIdentifiers.XamarinPlayStation4, "xamarinpsfour"),
new KeyValuePair<string, string>(FrameworkConstants.FrameworkIdentifiers.XamarinPlayStationVita, "xamarinpsvita"),
Expand Down Expand Up @@ -339,6 +340,22 @@ public IEnumerable<OneWayCompatibilityMappingEntry> CompatibilityMappings
new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.WinRT, FrameworkConstants.EmptyVersion),
new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.WinRT, new Version(4, 5, 0, 0)))),

// All XamarinMacNet projects support up to Net45
new OneWayCompatibilityMappingEntry(new FrameworkRange(
new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.XamarinMacNet, FrameworkConstants.EmptyVersion),
new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.XamarinMacNet, FrameworkConstants.MaxVersion)),
new FrameworkRange(
new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.Net, FrameworkConstants.EmptyVersion),
FrameworkConstants.CommonFrameworks.Net45)),

// All XamarinMacNet projects support all XamarinMac2
new OneWayCompatibilityMappingEntry(new FrameworkRange(
new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.XamarinMacNet, FrameworkConstants.EmptyVersion),
new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.XamarinMacNet, FrameworkConstants.MaxVersion)),
new FrameworkRange(
new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.XamarinMac, FrameworkConstants.EmptyVersion),
new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.XamarinMac, new Version(2, 0, 0, 0)))),

// Tizen3 projects support NETStandard1.6
CreateStandardMapping(
FrameworkConstants.CommonFrameworks.Tizen3,
Expand Down Expand Up @@ -469,6 +486,11 @@ public IEnumerable<OneWayCompatibilityMappingEntry> CompatibilityMappings
FrameworkConstants.CommonFrameworks.DotNet56,
FrameworkConstants.CommonFrameworks.NetStandard20),

CreateGenerationAndStandardMappingForAllVersions(
FrameworkConstants.FrameworkIdentifiers.XamarinMacNet,
FrameworkConstants.CommonFrameworks.DotNet56,
FrameworkConstants.CommonFrameworks.NetStandard16),

CreateGenerationAndStandardMappingForAllVersions(
FrameworkConstants.FrameworkIdentifiers.XamarinPlayStation3,
FrameworkConstants.CommonFrameworks.DotNet56,
Expand Down Expand Up @@ -565,6 +587,7 @@ public IEnumerable<string> NonPackageBasedFrameworkPrecedence
{
_nonPackageBasedFrameworkPrecedence = new[]
{
FrameworkConstants.FrameworkIdentifiers.XamarinMac, // For XamarinMacNet, prefer XamarinMac over Net
FrameworkConstants.FrameworkIdentifiers.Net,
FrameworkConstants.FrameworkIdentifiers.NetCore,
FrameworkConstants.FrameworkIdentifiers.Windows,
Expand Down
1 change: 1 addition & 0 deletions src/NuGet.Core/NuGet.Frameworks/FrameworkConstants.cs
Expand Up @@ -59,6 +59,7 @@ public static class FrameworkIdentifiers
public const string MonoMac = "MonoMac";
public const string XamarinIOs = "Xamarin.iOS";
public const string XamarinMac = "Xamarin.Mac";
public const string XamarinMacNet = "Xamarin.Mac.NET";
public const string XamarinPlayStation3 = "Xamarin.PlayStation3";
public const string XamarinPlayStation4 = "Xamarin.PlayStation4";
public const string XamarinPlayStationVita = "Xamarin.PlayStationVita";
Expand Down
Expand Up @@ -40,6 +40,7 @@ public void CompatibilityListProvider_NetStandard12Supporting()
Assert.Contains("WindowsPhoneApp,Version=v8.1", actual);
Assert.Contains("Xamarin.iOS,Version=v0.0", actual);
Assert.Contains("Xamarin.Mac,Version=v0.0", actual);
Assert.Contains("Xamarin.Mac.NET,Version=v0.0", actual);
Assert.Contains("Xamarin.PlayStation3,Version=v0.0", actual);
Assert.Contains("Xamarin.PlayStation4,Version=v0.0", actual);
Assert.Contains("Xamarin.PlayStationVita,Version=v0.0", actual);
Expand Down Expand Up @@ -83,6 +84,7 @@ public void CompatibilityListProvider_NetStandard15Supporting()
Assert.Contains("MonoTouch,Version=v0.0", actual);
Assert.Contains("Xamarin.iOS,Version=v0.0", actual);
Assert.Contains("Xamarin.Mac,Version=v0.0", actual);
Assert.Contains("Xamarin.Mac.NET,Version=v0.0", actual);
Assert.Contains("Xamarin.PlayStation3,Version=v0.0", actual);
Assert.Contains("Xamarin.PlayStation4,Version=v0.0", actual);
Assert.Contains("Xamarin.PlayStationVita,Version=v0.0", actual);
Expand Down Expand Up @@ -210,6 +212,7 @@ public void CompatibilityListProvider_NetStandard20Supporting()
Assert.Contains("MonoTouch,Version=v0.0", actual);
Assert.Contains("Xamarin.iOS,Version=v0.0", actual);
Assert.Contains("Xamarin.Mac,Version=v0.0", actual);
Assert.Contains("Xamarin.Mac.NET,Version=v0.0", actual);
Assert.Contains("Xamarin.PlayStation3,Version=v0.0", actual);
Assert.Contains("Xamarin.PlayStation4,Version=v0.0", actual);
Assert.Contains("Xamarin.PlayStationVita,Version=v0.0", actual);
Expand All @@ -225,7 +228,7 @@ public void CompatibilityListProvider_NetStandard20Supporting()
Assert.DoesNotContain("DNXCore,Version=v5.0", actual);

// count
Assert.Equal(17, actual.Length);
Assert.Equal(18, actual.Length);
}
}
}
39 changes: 39 additions & 0 deletions test/NuGet.Core.Tests/NuGet.Frameworks.Test/CompatibilityTests.cs
Expand Up @@ -29,6 +29,45 @@ public class CompatibilityTests
[InlineData("dnxcore50", "dotnet5.2", true)]
[InlineData("dnxcore50", "dotnet5.1", true)]

// xamarinmacnet45 -> net, xamarinmac, netstandard, dotnet
[InlineData("xamarinmacnet45", "xamarinmacnet", true)]
[InlineData("xamarinmacnet45", "net46", false)]
[InlineData("xamarinmacnet45", "net452", false)]
[InlineData("xamarinmacnet45", "net451", false)]
[InlineData("xamarinmacnet45", "net45", true)]
[InlineData("xamarinmacnet45", "net4", true)]
[InlineData("xamarinmacnet45", "net2", true)]
[InlineData("xamarinmacnet45", "xamarinmac3", false)]
[InlineData("xamarinmacnet45", "xamarinmac2", true)]
[InlineData("xamarinmacnet45", "xamarinmac1", true)]
[InlineData("xamarinmacnet45", "xamarinmac", true)]
[InlineData("xamarinmacnet45", "netstandard1.7", false)]
[InlineData("xamarinmacnet45", "netstandard1.6", true)]
[InlineData("xamarinmacnet45", "netstandard1.5", true)]
[InlineData("xamarinmacnet45", "netstandard1.4", true)]
[InlineData("xamarinmacnet45", "netstandard1.3", true)]
[InlineData("xamarinmacnet45", "netstandard1.2", true)]
[InlineData("xamarinmacnet45", "netstandard1.1", true)]
[InlineData("xamarinmacnet45", "netstandard1.0", true)]
[InlineData("xamarinmacnet45", "dotnet5.7", false)]
[InlineData("xamarinmacnet45", "dotnet5.6", true)]
[InlineData("xamarinmacnet45", "dotnet5.5", true)]
[InlineData("xamarinmacnet45", "dotnet5.4", true)]
[InlineData("xamarinmacnet45", "dotnet5.3", true)]
[InlineData("xamarinmacnet45", "dotnet5.2", true)]
[InlineData("xamarinmacnet45", "dotnet5.1", true)]
[InlineData("xamarinmacnet45", "portable-win8+net45", true)]
[InlineData("xamarinmacnet45", "dnx45", false)]
[InlineData("xamarinmacnet45", "netstandardapp10", false)]
[InlineData("xamarinmacnet45", "netcoreapp10", false)]
[InlineData("xamarinmacnet45", "win8", false)]
[InlineData("xamarinmacnet45", "uap10.0", false)]
[InlineData("xamarinmacnet45", "sl7", false)]
[InlineData("xamarinmacnet45", "wpa", false)]
[InlineData("xamarinmacnet", "netstandard1.6", true)]
[InlineData("xamarinmacnet", "net45", true)]
[InlineData("xamarinmacnet", "xamarinmac2", true)]

// net -> dotnet, netstandard (but not netstandardapp or netcoreapp)
[InlineData("net463", "netstandardapp1.6", false)]
[InlineData("net463", "netstandardapp1.5", false)]
Expand Down
Expand Up @@ -90,6 +90,20 @@ public class FrameworkReducerTests
[InlineData("portable-net45+netcore45", "portable-net45+netcore45+wpa81,netstandard1.0", "portable-net45+netcore45+wpa81")]
[InlineData("portable-net45+netcore45", "netstandard1.1,dotnet5.1", "netstandard1.1")]
[InlineData("portable-net45+netcore45+bad", "netstandard1.0", null)]
// XamarinMacNet
[InlineData("xamarinmacnet45", "xamarinmacnet45,xamarinmac2,net45,netstandard1.0,portable-net45+win8,win8", "xamarinmacnet45")]
[InlineData("xamarinmacnet45", "xamarinmacnet40,xamarinmac2,net45,netstandard1.0,portable-net45+win8,win8", "xamarinmacnet40")]
[InlineData("xamarinmacnet45", "xamarinmac2,net45,netstandard1.0,portable-net45+win8,win8", "xamarinmac2")]
[InlineData("xamarinmacnet45", "xamarinmac1,net45,netstandard1.0,portable-net45+win8,win8", "xamarinmac1")]
[InlineData("xamarinmacnet45", "net45,netstandard1.0,portable-net45+win8,win8", "net45")]
[InlineData("xamarinmacnet45", "net40,netstandard1.0,portable-net45+win8,win8", "net40")]
[InlineData("xamarinmacnet45", "portable-net45+win8,win8", "portable-net45+win8")]
[InlineData("xamarinmacnet45", "portable-net40+win8,win8", "portable-net40+win8")]
[InlineData("xamarinmacnet45", "netstandard1.5,win8", "netstandard1.5")]
[InlineData("xamarinmacnet45", "netstandard1.4,win8", "netstandard1.4")]
[InlineData("xamarinmacnet45", "netstandard1.7,net46,win8", null)]
[InlineData("xamarinmacnet45", "net46,win8", null)]
[InlineData("xamarinmacnet45", "win8", null)]
// Additional tests
[InlineData("dotnet5.5", "dotnet6.0,dotnet5.4,portable-net45+win8", "dotnet5.4")]
[InlineData("dotnet7", "dotnet6.0,dotnet5.4,portable-net45+win8", "dotnet6.0")]
Expand Down
Expand Up @@ -235,6 +235,7 @@ public void NuGetFramework_ProfileName(string folder, string expected)
[InlineData("netcoreapp1.0", ".NETCoreApp,Version=v1.0")]
[InlineData("netcoreapp1.5", ".NETCoreApp,Version=v1.5")]
[InlineData("netcoreapp2.0", ".NetCoreApp,Version=v2.0")]
[InlineData("xamarinmacnet45", "Xamarin.Mac.NET,Version=v4.5")]
public void NuGetFramework_ParseToShortName(string expected, string fullName)
{
// Arrange
Expand Down Expand Up @@ -283,6 +284,7 @@ public void NuGetFramework_ParseToShortName(string expected, string fullName)
[InlineData("netcoreapp1", ".NETCoreApp,Version=v1.0")]
[InlineData("netcoreapp1.5", ".NETCoreApp,Version=v1.5")]
[InlineData("netcoreapp2", ".NETCoreApp,Version=v2.0")]
[InlineData("xamarinmacnet45", "Xamarin.Mac.NET,Version=v4.5")]
public void NuGetFramework_Basic(string folderName, string fullName)
{
string output = NuGetFramework.Parse(folderName).DotNetFrameworkName;
Expand Down

0 comments on commit 73f7fc1

Please sign in to comment.