/// <summary> /// Gives the smallest set of frameworks from the table that cover everything the given framework would cover. /// </summary> public IEnumerable <NuGetFramework> GetNearest(NuGetFramework framework) { // start with everything compatible with the framework var allCompatible = _table.Keys.Where(f => _compat.IsCompatible(framework, f)); return(_reducer.ReduceUpwards(allCompatible)); }
public void FrameworkReducer_ReduceUpwardsBasic() { FrameworkReducer reducer = new FrameworkReducer(); var net35 = NuGetFramework.Parse("net35"); var net40 = NuGetFramework.Parse("net40"); var net45 = NuGetFramework.Parse("net45"); var net451 = NuGetFramework.Parse("net451"); var net453 = NuGetFramework.Parse("net453"); var all = new NuGetFramework[] { net35, net40, net45, net451, net453 }; var result = reducer.ReduceUpwards(all); Assert.Equal(net453, result.Single()); }
public void FrameworkReducer_ReduceUpwardsNonSingle() { FrameworkReducer reducer = new FrameworkReducer(); var net35 = NuGetFramework.Parse("net35"); var net40 = NuGetFramework.Parse("net40"); var net45 = NuGetFramework.Parse("net45"); var net451 = NuGetFramework.Parse("net451"); var net453 = NuGetFramework.Parse("net453"); var wp8 = NuGetFramework.Parse("wp8"); var wp81 = NuGetFramework.Parse("wp81"); var all = new NuGetFramework[] { net35, net40, net45, net451, net453, wp8, wp81 }; var result = reducer.ReduceUpwards(all); Assert.Equal(net453, result.First()); Assert.Equal(wp81, result.Skip(1).First()); }
public void FrameworkReducer_ReduceUpPCL() { FrameworkReducer reducer = new FrameworkReducer(); var framework1 = NuGetFramework.Parse("portable-net45+win8"); var framework2 = NuGetFramework.Parse("portable-net451+win81"); var all = new NuGetFramework[] { framework1, framework2 }; var result = reducer.ReduceUpwards(all); Assert.Equal(framework2, result.Single()); }
public void FrameworkReducer_ReduceUpEqual() { FrameworkReducer reducer = new FrameworkReducer(); var framework1 = NuGetFramework.Parse("net40"); var framework2 = NuGetFramework.Parse("net40"); var all = new NuGetFramework[] { framework1, framework2 }; var result = reducer.ReduceUpwards(all); Assert.Equal(framework2, result.Single()); }
public void FrameworkReducer_ReduceUpEquivalent() { FrameworkReducer reducer = new FrameworkReducer(); var framework1 = NuGetFramework.Parse("net40"); var framework2 = NuGetFramework.Parse("net40-client"); var all = new NuGetFramework[] { framework1, framework2 }; var result = reducer.ReduceUpwards(all).ToArray(); Assert.Equal(2, result.Length); Assert.Equal(framework1, result.First()); Assert.Equal(framework2, result.Last()); }
public void FrameworkReducer_ReduceToHighest() { // both frameworks are equivalent var fw1 = new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.Windows, FrameworkConstants.EmptyVersion); var fw2 = FrameworkConstants.CommonFrameworks.Win8; var packageFrameworks = new List<NuGetFramework>() { fw1, fw2 }; FrameworkReducer reducer = new FrameworkReducer(); // the non-zero version should win in both cases var upwards = reducer.ReduceUpwards(packageFrameworks).Single(); var downwards = reducer.ReduceUpwards(packageFrameworks).Single(); Assert.Equal(fw2, upwards); Assert.Equal(fw2, downwards); }