コード例 #1
0
        protected async Task AssertChildrenPositions(IBoardPostCollection collection, PostStoreEntityId collectionId, int windowCount, string collectionName)
        {
            Assert.AreEqual(collection.Posts.Count, await _store.GetCollectionSize(collectionId), $"{collectionName}.Size");
            var originalLinks = new List <string>();
            var expectedLinks = new List <string>();

            foreach (var item in collection.Posts.OrderBy(p => p.Link, BoardLinkComparer.Instance))
            {
                originalLinks.Add(item.Link.GetLinkHash());
            }
            int maxIterations = 1000;

            do
            {
                var ids = await _store.GetChildren(collectionId, expectedLinks.Count, windowCount);

                var links = await _store.GetEntityLinks(ids.ToArray());

                foreach (var l in links)
                {
                    expectedLinks.Add(l.Link.GetLinkHash());
                }
                maxIterations--;
            } while (expectedLinks.Count < originalLinks.Count && maxIterations > 0);
            Assert.AreEqual(originalLinks.Count, expectedLinks.Count, $"{collectionName}->Количество полученных ссылок");
            for (var i = 0; i < originalLinks.Count; i++)
            {
                Assert.AreEqual(originalLinks[i], expectedLinks[i], $"{collectionName}:{i}->Ссылка");
            }
        }
コード例 #2
0
        protected async Task AssertMediaPositions(IBoardPostCollection collection, PostStoreEntityId collectionId, int windowCount, string collectionName)
        {
            var originalLinks = new List <string>();
            var expectedLinks = new List <string>();

            foreach (var item in collection.Posts.OrderBy(p => p.Link, BoardLinkComparer.Instance))
            {
                foreach (var m in item.MediaFiles)
                {
                    originalLinks.Add(m.MediaLink.GetLinkHash());
                }
            }
            Assert.AreEqual(originalLinks.Count, await _store.GetMediaCount(collectionId), $"{collectionName}.Size");
            int maxIterations = 5000;

            do
            {
                var media = await _store.GetPostMedia(collectionId, expectedLinks.Count, windowCount);

                foreach (var m in media)
                {
                    expectedLinks.Add(m.MediaLink.GetLinkHash());
                }
                maxIterations--;
            } while (expectedLinks.Count < originalLinks.Count && maxIterations > 0);
            Assert.AreEqual(originalLinks.Count, expectedLinks.Count, $"{collectionName}->Количество полученных медиа");
            for (var i = 0; i < originalLinks.Count; i++)
            {
                Assert.AreEqual(originalLinks[i], expectedLinks[i], $"{collectionName}:{i}->Медиа");
            }
        }
コード例 #3
0
 /// <summary>
 /// Получить квоты.
 /// </summary>
 /// <param name="collection">Коллекция.</param>
 /// <returns>Квоты.</returns>
 public static ILookup <ILink, ILink> GetQuotesLookup(this IBoardPostCollection collection)
 {
     if (collection?.Posts == null)
     {
         return(Enumerable.Empty <KeyValuePair <ILink, ILink> >().ToLookup(l => l.Key, l => l.Value, BoardLinkEqualityComparer.Instance));
     }
     return(collection.Posts
            .SelectMany(p => (p.Comment?.GetQuotes() ?? Enumerable.Empty <ILink>()).Distinct(BoardLinkEqualityComparer.Instance).Select(q => new KeyValuePair <ILink, ILink>(q, p.Link)))
            .ToLookup(l => l.Key, l => l.Value, BoardLinkEqualityComparer.Instance));
 }