Example #1
0
        public void Search_FilteringBySiteRankingSearchTopDomainByComOrgNet_ShouldBeEquivalentToLinq()
        {
            var       topLevelDomains    = new[] { "com", "net", "org " };
            const int topLevelDomainRank = 1000;

            var expected = _rows.Where(x => topLevelDomains.Contains(x.TopLevelDomain) && x.TopLevelDomainRank <= topLevelDomainRank).ToList();
            var search   = new SiteRankingSearch
            {
                TopLevelDomain     = topLevelDomains,
                TopLevelDomainRank = SearchCriteria.ByRange(1, topLevelDomainRank)
            };
            var actual      = _table.Search(search);
            var indexScores = _table.EvaluateIndexes(search);

            CollectionAssert.AreEquivalent(expected, actual);

            var searchWithPredicate = new SiteRankingSearch
            {
                TopLevelDomain     = topLevelDomains,
                TopLevelDomainRank = SearchCriteria.ByPredicate((int x) => x <= topLevelDomainRank)
            };
            var actualWithPredicate     = _table.Search(searchWithPredicate);
            var indexScoreWithPredicate = _table.EvaluateIndexes(searchWithPredicate);

            CollectionAssert.AreEquivalent(expected, actualWithPredicate);

            Assert.IsTrue(indexScores[0].Score < indexScoreWithPredicate[0].Score, "Search without predicate should have a better score");
        }
 public Import[] SearchMindex() => Table.Search(new ImportSearch
 {
     Origin       = Origins,
     ImportState  = Destinations,
     QuantityType = QuantityTypes,
     Date         = SearchCriteria.ByRange(MinimumDate, MaximumDate)
 });
Example #3
0
        public void GetScore_CriteriaByRange_ShouldReturnScoreOf_Ratio()
        {
            var rows   = SiteRankingCollections.FirstTenRows;
            var search = new SiteRankingSearch {
                TopLevelDomain = SearchCriteria.ByRange("ca", "com")
            };
            var expectedScore = new TableCriteriaScore(0.5f, true);

            TestGetScores(rows, search, expectedScore);
        }
Example #4
0
        public void Reduce_CriteriaByRange_ShouldReturnSubset()
        {
            var rows   = SiteRankingCollections.First10000Rows.OrderBy(x => x.TopLevelDomain).ToArray();
            var search = new SiteRankingSearch {
                TopLevelDomain = SearchCriteria.ByRange("com", "net")
            };
            var criteria = BuildCriteria(rows, search);
            var expected = rows.Where(x => StringComparer.OrdinalIgnoreCase.Compare(x.TopLevelDomain, "com") >= 0 && StringComparer.OrdinalIgnoreCase.Compare(x.TopLevelDomain, "net") <= 0);
            var actual   = criteria.Reduce(new BinarySearchTable <SiteRanking>(rows));

            CollectionAssert.AreEquivalent(expected.ToList(), actual.Materialize());
        }
Example #5
0
        public void Search_FilteringByTopDomainByTLD_ShouldBeEquivalentToLinq()
        {
            const int topLevelDomainRank = 10;

            var expected = _rows.Where(x => x.TopLevelDomainRank <= topLevelDomainRank).ToList();
            var actual   = _table.Search(new SiteRankingSearch
            {
                TopLevelDomainRank = SearchCriteria.ByRange(1, topLevelDomainRank)
            });

            CollectionAssert.AreEquivalent(expected, actual);
        }
Example #6
0
        public void Search_FilteringByMultipleCriteriasWithDistinct_ShouldBeEquivalentToLinq()
        {
            const int topLevelDomainRank = 10;

            var expected = _rows.Where(x => x.TopLevelDomainRank <= topLevelDomainRank || x.TopLevelDomain == "net").ToList();
            var actual   = _table.Search(new[]
            {
                new SiteRankingSearch {
                    TopLevelDomainRank = SearchCriteria.ByRange(1, topLevelDomainRank)
                },
                new SiteRankingSearch {
                    TopLevelDomain = "net"
                }
            }, true);

            CollectionAssert.AreEquivalent(expected, actual);
        }
Example #7
0
        public void Search_FilteringByMultipleCriteriasWithoutDistinct_CouldHaveDuplicateValues()
        {
            const int topLevelDomainRank = 10;

            var expected = _rows.Where(x => x.TopLevelDomainRank <= topLevelDomainRank || x.TopLevelDomain == "net").ToList();
            var actual   = _table.Search(new[]
            {
                new SiteRankingSearch {
                    TopLevelDomainRank = SearchCriteria.ByRange(1, topLevelDomainRank)
                },
                new SiteRankingSearch {
                    TopLevelDomain = "net"
                }
            });

            CollectionAssert.AreNotEquivalent(expected, actual);
            CollectionAssert.AreEquivalent(expected, actual.Distinct().ToArray());
        }
Example #8
0
        public void Search_FilteringByCanadianSitesInTop1000_ShouldBeEquivalentToLinqs()
        {
            const string topLevelDomain = "ca";
            const int    globalRank     = 1000;

            var expected = _rows.Where(x => x.TopLevelDomain == topLevelDomain && x.GlobalRank <= globalRank).ToList();
            var search   = new SiteRankingSearch
            {
                TopLevelDomain = topLevelDomain,
                GlobalRank     = SearchCriteria.ByRange(1, globalRank)
            };
            var actual = _table.Search(search);

            CollectionAssert.AreEquivalent(expected, actual);

            var actualWithGlobalIndex = _table.Search(search, _table.IndexGlobalRank);

            CollectionAssert.AreEquivalent(expected, actualWithGlobalIndex);
        }
 public List <SiteRanking> Search() => Table.Search(new SiteRankingSearch {
     TopLevelDomain = Domains, TopLevelDomainRank = SearchCriteria.ByRange(1, 1000)
 }).ToList();