예제 #1
0
        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}.");
                    }
                }
            }
        }