public void ReturnError_WhenMinMaxRatingsAreNullOrOutOfRange(int?minRating, int?maxRating) { var ratingRangeCreationResult = RatingRange.Create(minRating, maxRating); var expectedError = new Error { Type = ErrorType.RatingOutOfRange.ToString(), Message = ErrorMessage.RatingOutOfRangeMessage }; Assert.True(ratingRangeCreationResult.IsError); Assert.Equal(expectedError, ratingRangeCreationResult.Error); }
public void ReturnError_WhenRatingsAreInRangeButMinRatingIsGreaterThanMaxRating(int?minRating, int?maxRating) { var ratingRangeCreationResult = RatingRange.Create(minRating, maxRating); var expectedError = new Error { Type = ErrorType.MinRatingGreaterThanMax.ToString(), Message = ErrorMessage.MinRatingGreaterThanMax }; Assert.True(ratingRangeCreationResult.IsError); Assert.Equal(expectedError, ratingRangeCreationResult.Error); }
public void ReturnOk_WhenValidMinMaxRatingsAreGiven() { var minRating = new int?(1); var maxRating = new int?(5); var ratingRangeCreationResult = RatingRange.Create(minRating, maxRating); var expectedRatingRange = new RatingRange { Min = minRating.Value, Max = maxRating.Value }; Assert.True(ratingRangeCreationResult.IsOk); Assert.Equal(expectedRatingRange, ratingRangeCreationResult.Value); }
public void ShouldSetRatingRange() { var ratingRange = new RatingRange { Min = 2, Max = 4 }; var filter = QueryFilter.By().Rating(ratingRange); var expectedFilter = new QueryFilter { RatingRange = ratingRange }; Assert.Equal(expectedFilter, filter); }
private IEnumerable <ContestInfo> ParseContestInfosFromTable(IElement tbody) { foreach (var row in tbody.GetElementsByTagName("tr")) { var res = new ContestInfo(); var tds = row.GetElementsByTagName("td"); var dateTimeStr = tds[0].FirstElementChild.GetAttribute("href").Split('?')[1].Substring(4, 13); res.StartTime = DateTime.ParseExact(dateTimeStr, "yyyyMMddTHHmm", null).AddHours(-9); var contestAnchor = tds[1].GetElementsByTagName("a")[0]; res.ContestName = contestAnchor.TextContent; res.ContestScreenName = contestAnchor.GetAttribute("href").Split('/').Last(); var durationHourAndMin = tds[2].TextContent.Split(':'); res.Duration = new TimeSpan(int.Parse(durationHourAndMin[0]), int.Parse(durationHourAndMin[1]), 0); var ratedRange = tds[3].TextContent; res.RatedRange = RatingRange.Parse(ratedRange); yield return(res); } }
public Photo [] Query(Term searchexpression, string extraCondition, DateRange range, RollSet importidrange, RatingRange ratingrange) { bool hide = (extraCondition == null); // The SQL query that we want to construct is: // // SELECT photos.id // photos.time // photos.uri, // photos.description, // photos.roll_id, // photos.default_version_id // photos.rating // FROM photos, photo_tags // WHERE photos.time >= time1 AND photos.time <= time2 // AND photos.rating >= rat1 AND photos.rating <= rat2 // AND photos.id NOT IN (select photo_id FROM photo_tags WHERE tag_id = HIDDEN) // AND photos.id IN (select photo_id FROM photo_tags where tag_id IN (tag1, tag2..) // AND extra_condition_string // GROUP BY photos.id var query_builder = new StringBuilder(); var where_clauses = new List <string> (); query_builder.Append("SELECT id, " + "time, " + "base_uri, " + "filename, " + "description, " + "roll_id, " + "default_version_id, " + "rating " + "FROM photos "); if (range != null) { where_clauses.Add(String.Format("time >= {0} AND time <= {1}", DateTimeUtil.FromDateTime(range.Start), DateTimeUtil.FromDateTime(range.End))); } if (ratingrange != null) { where_clauses.Add(ratingrange.SqlClause()); } if (importidrange != null) { where_clauses.Add(importidrange.SqlClause()); } if (hide && App.Instance.Database.Tags.Hidden != null) { where_clauses.Add(String.Format("id NOT IN (SELECT photo_id FROM photo_tags WHERE tag_id = {0})", App.Instance.Database.Tags.Hidden.Id)); } if (searchexpression != null) { where_clauses.Add(searchexpression.SqlCondition()); } if (extraCondition != null && extraCondition.Trim() != String.Empty) { where_clauses.Add(extraCondition); } if (where_clauses.Count > 0) { query_builder.Append(" WHERE "); query_builder.Append(String.Join(" AND ", where_clauses.ToArray())); } query_builder.Append(" ORDER BY time"); return(Query(query_builder.ToString())); }
public Photo [] Query(Tag [] tags, string extraCondition, DateRange range, RollSet importidrange, RatingRange ratingrange) { return(Query(OrTerm.FromTags(tags), extraCondition, range, importidrange, ratingrange)); }
public RatingRangeCondition(RatingRange value) => _range = value;
public void QueryToTemp(string temp_table, Term searchexpression, string extra_condition, DateRange range, RollSet importidrange, RatingRange ratingrange, OrderByTime orderbytime) { bool hide = (extra_condition == null); // The SQL query that we want to construct is: // // SELECT photos.id // photos.time // photos.uri, // photos.description, // photos.roll_id, // photos.default_version_id // photos.rating // FROM photos, photo_tags // WHERE photos.time >= time1 AND photos.time <= time2 // AND photos.rating >= rat1 AND photos.rating <= rat2 // AND photos.id NOT IN (select photo_id FROM photo_tags WHERE tag_id = HIDDEN) // AND photos.id IN (select photo_id FROM photo_tags where tag_id IN (tag1, tag2..) // AND extra_condition_string // GROUP BY photos.id StringBuilder query_builder = new StringBuilder(); ArrayList where_clauses = new ArrayList(); query_builder.Append("SELECT id, " + "time, " + "uri, " + "description, " + "roll_id, " + "default_version_id, " + "rating, " + "md5_sum " + "FROM photos "); if (range != null) { where_clauses.Add(String.Format("time >= {0} AND time <= {1}", DbUtils.UnixTimeFromDateTime(range.Start), DbUtils.UnixTimeFromDateTime(range.End))); } if (ratingrange != null) { where_clauses.Add(ratingrange.SqlClause()); } if (importidrange != null) { where_clauses.Add(importidrange.SqlClause()); } if (hide && Core.Database.Tags.Hidden != null) { where_clauses.Add(String.Format("id NOT IN (SELECT photo_id FROM photo_tags WHERE tag_id = {0})", FSpot.Core.Database.Tags.Hidden.Id)); } if (searchexpression != null) { where_clauses.Add(searchexpression.SqlCondition()); } if (extra_condition != null && extra_condition.Trim() != String.Empty) { where_clauses.Add(extra_condition); } if (where_clauses.Count > 0) { query_builder.Append(" WHERE "); query_builder.Append(String.Join(" AND ", ((String [])where_clauses.ToArray(typeof(String))))); } query_builder.Append(" ORDER BY "); query_builder.Append(orderbytime.SqlClause()); QueryToTemp(temp_table, query_builder.ToString()); }
public void QueryToTemp(string temp_table, Tag [] tags, string extra_condition, DateRange range, RollSet importidrange, RatingRange ratingrange, OrderByTime orderbytime) { QueryToTemp(temp_table, FSpot.OrTerm.FromTags(tags), extra_condition, range, importidrange, ratingrange, orderbytime); }