Example #1
0
        public void GetScore_CriteriaEmpty_ShouldReturnScoreOf_1()
        {
            var rows          = SiteRankingCollections.FirstTenRows;
            var search        = new SiteRankingSearch();
            var expectedScore = new TableCriteriaScore(1, false);

            TestGetScores(rows, search, expectedScore);
        }
Example #2
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 #3
0
        public void GetScore_CriteriaByPredicate_ShouldReturnScoreOf_1()
        {
            var rows   = SiteRankingCollections.First10000Rows;
            var search = new SiteRankingSearch {
                TopLevelDomain = SearchCriteria.ByPredicate((string x) => x.StartsWith("c"))
            };
            var expectedScore = new TableCriteriaScore(1, false);

            TestGetScores(rows, search, expectedScore);
        }
Example #4
0
        public TableIndexScore <TRow, TSearch> GetScore(IReadOnlyCollection <ITableCriteriaForMapping <TRow, TSearch> > criterias)
        {
            TableCriteriaScore score = TableCriteriaScore.Initial;
            var remainingCriterias   = criterias.ToList();

            for (var indexSortColumn = 0; score.CanContinue && indexSortColumn < _sortMappings.Length; indexSortColumn++)
            {
                var sortColumn           = _sortMappings[indexSortColumn];
                var indexRemainingColumn = remainingCriterias.FindIndex(x => x.Mapping == sortColumn);
                if (indexRemainingColumn >= 0)
                {
                    var criteria = remainingCriterias[indexRemainingColumn];
                    score *= criteria.Score;
                    remainingCriterias.RemoveAt(indexRemainingColumn);
                }
                else
                {
                    score.CanContinue = false;
                }
            }

            return(new TableIndexScore <TRow, TSearch>(this, score.Value));
        }
Example #5
0
        private static void TestGetScores(SiteRanking[] rows, SiteRankingSearch search, TableCriteriaScore expectedScore)
        {
            var actualScore = BuildCriteria(rows, search)?.Score ?? TableCriteriaScore.NotOptimizable;

            Assert.AreEqual(expectedScore, actualScore);
        }