public void GetScore_CriteriaEmpty_ShouldReturnScoreOf_1() { var rows = SiteRankingCollections.FirstTenRows; var search = new SiteRankingSearch(); var expectedScore = new TableCriteriaScore(1, false); TestGetScores(rows, search, expectedScore); }
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); }
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); }
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)); }
private static void TestGetScores(SiteRanking[] rows, SiteRankingSearch search, TableCriteriaScore expectedScore) { var actualScore = BuildCriteria(rows, search)?.Score ?? TableCriteriaScore.NotOptimizable; Assert.AreEqual(expectedScore, actualScore); }