コード例 #1
0
            public void MapsProperties()
            {
                var v1      = NuGetVersion.Parse("1.0.0");
                var changes = MutableIndexChanges.FromLatestIndexChanges(new Dictionary <SearchFilters, LatestIndexChanges>
                {
                    {
                        SearchFilters.Default,
                        new LatestIndexChanges(
                            SearchIndexChangeType.AddFirst,
                            new List <HijackIndexChange>
                        {
                            HijackIndexChange.UpdateMetadata(v1),
                            HijackIndexChange.SetLatestToTrue(v1),
                        })
                    },
                });

                var solid = changes.Solidify();

                Assert.Equal(new[] { SearchFilters.Default }, solid.Search.Keys.ToArray());
                Assert.Equal(SearchIndexChangeType.AddFirst, solid.Search[SearchFilters.Default]);
                Assert.False(solid.Hijack[v1].Delete);
                Assert.True(solid.Hijack[v1].UpdateMetadata);
                Assert.True(solid.Hijack[v1].LatestStableSemVer1);
                Assert.False(solid.Hijack[v1].LatestSemVer1);
                Assert.False(solid.Hijack[v1].LatestStableSemVer2);
                Assert.False(solid.Hijack[v1].LatestSemVer2);
            }
コード例 #2
0
        private MutableIndexChanges Upsert(
            string fullVersion,
            NuGetVersion parsedVersion,
            VersionPropertiesData data)
        {
            var added = new VersionProperties(fullVersion, parsedVersion, data);

            _versionProperties[added.ParsedVersion] = KeyValuePair.Create(added.FullVersion, data);

            // Detect changes related to the latest versions, per search filter.
            var output = new Dictionary <SearchFilters, LatestIndexChanges>();

            foreach (var pair in _versionLists)
            {
                var searchFilter = pair.Key;
                var listState    = pair.Value;
                var predicate    = SearchFilterPredicates[searchFilter];

                LatestIndexChanges latestIndexChanges;
                if (predicate(added))
                {
                    latestIndexChanges = listState.Upsert(added.Filtered);
                }
                else
                {
                    latestIndexChanges = listState.Remove(added.ParsedVersion);
                }

                output[searchFilter] = latestIndexChanges;
            }

            return(MutableIndexChanges.FromLatestIndexChanges(output));
        }
コード例 #3
0
        internal MutableIndexChanges Delete(NuGetVersion parsedVersion)
        {
            _versionProperties.Remove(parsedVersion);

            // Detect changes related to the latest versions, per search filter.
            var output = new Dictionary <SearchFilters, LatestIndexChanges>();

            foreach (var pair in _versionLists)
            {
                var searchFilter = pair.Key;
                var listState    = pair.Value;

                // We can execute this on all lists, no matter the search filter predicate because removing a version
                // that was never added will result in recalculating the version list, which supports the reflow
                // scenario.
                output[searchFilter] = listState.Delete(parsedVersion);
            }

            return(MutableIndexChanges.FromLatestIndexChanges(output));
        }