public void Generations_MatchesInbox() { FrameworkSet fxs = FrameworkSet.Load("FrameworkLists"); Version maxVersion = new Version(int.MaxValue, int.MaxValue, int.MaxValue, int.MaxValue); foreach (var fxGroup in fxs.Frameworks) { foreach (var fx in fxGroup.Value) { var thisFx = new NuGetFramework(fx.FrameworkName.Identifier, fx.FrameworkName.Version, fx.FrameworkName.Profile); var fxGeneration = Generations.DetermineGenerationForFramework(thisFx, false); foreach (var assembly in fx.Assemblies.Where(a => !s_classicAssemblies.Contains(a.Key) && a.Value != maxVersion)) { _log.Reset(); Version assmGeneration = _generations.DetermineGenerationFromSeeds(assembly.Key, assembly.Value, _log); Version effectiveFxGeneration; if (!s_generationException.TryGetValue(Tuple.Create(fx.FrameworkName, assembly.Key), out effectiveFxGeneration)) { effectiveFxGeneration = fxGeneration; } Assert.Equal(0, _log.ErrorsLogged); Assert.Equal(0, _log.WarningsLogged); Assert.True(null != assmGeneration, $"{assembly.Key},{assembly.Value} should be tracked by generations"); Assert.True(assmGeneration.Major >= 1 && assmGeneration.Minor >= 0); Assert.True(assmGeneration <= effectiveFxGeneration, $"Generation {assmGeneration} of {assembly.Key}, {assembly.Value} must be less than or equal to {fxGeneration} since this assembly is inbox in {fx.FrameworkName} which is mapped to generation {effectiveFxGeneration}."); } } } }