public async Task TestAllButOneEmptyEnums()
        {
            var enum1 = new IntegerEnumerableAsync(new List <int>()
            {
                1, 2, 3, 4, 5
            });
            var enum2 = new IntegerEnumerableAsync(new List <int>()
            {
            });
            var enum3 = new IntegerEnumerableAsync(new List <int>()
            {
            });

            var aggregateEnumerable = new AggregateEnumerableAsync <int>(new List <IEnumerableAsync <int> > {
                enum1, enum2, enum3
            }, null, null);
            var enumerator = aggregateEnumerable.GetEnumeratorAsync();

            var expectedUniqueCount = 5;
            var actualCount         = 0;
            var last = int.MinValue;

            while (await enumerator.MoveNextAsync())
            {
                actualCount++;
                var current = enumerator.Current;
                Assert.True(last < current, "Incorrent order: " + last + " should be before " + current);
                last = current;
            }

            Assert.Equal(expectedUniqueCount, actualCount);
        }
        public async Task TestMultipleOverlappingEnums()
        {
            var enum1 = new IntegerEnumerableAsync(new List <int>()
            {
                1, 4, 5, 8, 9
            });
            var enum2 = new IntegerEnumerableAsync(new List <int>()
            {
                2, 3, 6, 7, 10
            });
            var enum3 = new IntegerEnumerableAsync(new List <int>()
            {
                3, 5, 7, 12, 15
            });


            var aggregateEnumerable = new AggregateEnumerableAsync <int>(new List <IEnumerableAsync <int> > {
                enum1, enum2, enum3
            }, null, null);
            var enumerator = aggregateEnumerable.GetEnumeratorAsync();

            var expectedUniqueCount = 12;
            var actualCount         = 0;
            var last = int.MinValue;

            while (await enumerator.MoveNextAsync())
            {
                actualCount++;
                var current = enumerator.Current;
                Assert.True(last < current, "Incorrent order: " + last + " should be before " + current);
                last = current;
            }

            Assert.Equal(expectedUniqueCount, actualCount);
            // Assert that whole sorting process is commutative
            aggregateEnumerable = new AggregateEnumerableAsync <int>(new List <IEnumerableAsync <int> > {
                enum3, enum2, enum1
            }, null, null);
            enumerator = aggregateEnumerable.GetEnumeratorAsync();

            expectedUniqueCount = 12;
            actualCount         = 0;
            last = int.MinValue;
            while (await enumerator.MoveNextAsync())
            {
                actualCount++;
                var current = enumerator.Current;
                Assert.True(last <= current, "Incorrent order: " + last + " should be before " + current);
                last = current;
            }

            Assert.Equal(expectedUniqueCount, actualCount);
        }
Ejemplo n.º 3
0
        public async Task <string> GetLatestVersionAsync(string packageName, string packageUrl, bool comparePrerelease)
        {
            ArgumentGuard.StringMissing(packageName, nameof(packageName));
            ArgumentGuard.StringMissing(packageUrl, nameof(packageUrl));

            var prefix = string.Empty;

            if (packageUrl.Contains("api.nuget.org/v3/"))
            {
                if (packageUrl.Last().Equals('/'))
                {
                    prefix += "index.json";
                }
                else
                {
                    prefix += "/index.json";
                }
            }

            NuGet.Common.ILogger logger = new Logger(m_logger);

            var sourceRepository = Repository.Factory.GetCoreV3(packageUrl + prefix);
            var feed             = await sourceRepository.GetResourceAsync <ListResource>();

            var allPackages        = new List <IEnumerableAsync <IPackageSearchMetadata> >();
            var packagesFromSource = await feed.ListAsync(packageName, comparePrerelease, false, false, logger, CancellationToken.None);

            allPackages.Add(packagesFromSource);

            var comparer        = new ComparePackageSearchMetadata();
            var asyncEnumerator = new AggregateEnumerableAsync <IPackageSearchMetadata>(allPackages, comparer, comparer).GetEnumeratorAsync();

            if (asyncEnumerator != null)
            {
                while (await asyncEnumerator.MoveNextAsync())
                {
                    var p = asyncEnumerator.Current;
                    if (p.Identity.Id == packageName)
                    {
                        return(p.Identity.Version.ToString());
                    }
                }
            }

            return("N/A");
        }
        public async Task TestAllEmptyEnums()
        {
            var enum1 = new IntegerEnumerableAsync(new List <int>()
            {
            });
            var enum2 = new IntegerEnumerableAsync(new List <int>()
            {
            });
            var enum3 = new IntegerEnumerableAsync(new List <int>()
            {
            });

            HashSet <int> blaa = new HashSet <int>();

            var aggregateEnumerable = new AggregateEnumerableAsync <int>(new List <IEnumerableAsync <int> > {
                enum1, enum2, enum3
            }, null, null);
            var enumerator = aggregateEnumerable.GetEnumeratorAsync();

            Assert.False(await enumerator.MoveNextAsync());
        }