public void GetExistingByTimePeriod(SearchableDocumentTime documentTime) { var firstIndex = new Random().Next(_testNotes.Length); var lastIndex = firstIndex + 2; if (lastIndex > _testNotes.Length - 1) { lastIndex = _testNotes.Length - 1; } var firstNote = _testNotes[firstIndex]; var lastNote = _testNotes[lastIndex]; var firstDocTime = firstNote.GetSeachableTime(documentTime); var lastDocTime = lastNote.GetSeachableTime(documentTime).AddSeconds(1); var searchResult = _indexedStorage.GetTopInPeriod(firstDocTime, lastDocTime, 50, documentTime); Assert.AreEqual(lastIndex - firstIndex + 1, searchResult.Count); // range end is exclusive for (var i = firstIndex; i <= lastIndex; ++i) { var sourceNote = _testNotes[i]; var searchResultNote = searchResult[lastIndex - i]; Assert.AreEqual(sourceNote.Id, searchResultNote.Id); Assert.AreEqual(sourceNote.CreateTime.TrimToSecondsPrecision(), searchResultNote.CreateTime); Assert.AreEqual(sourceNote.LastUpdateTime.TrimToSecondsPrecision(), searchResultNote.LastUpdateTime); } }
public void GetNonExistentByLastUpdateTimePeriodEnd(SearchableDocumentTime documentTime) { var lastDocTime = documentTime == SearchableDocumentTime.LastUpdate ? _testNotes.First().LastUpdateTime : _testNotes.First().CreateTime; var searchResult = _indexedStorage.GetTopInPeriod(null, lastDocTime, 5, documentTime); Assert.AreEqual(0, searchResult.Count); }
public IList <THeader> SearchInPeriod(DateTime?periodStart, DateTime?periodEnd, string queryText, int maxResults, SearchableDocumentTime searchableDocumentTime = SearchableDocumentTime.LastUpdate) { var timeFieldName = searchableDocumentTime == SearchableDocumentTime.Creation ? EntityAdapter.CreationTimeFieldName : EntityAdapter.LastUpdateTimeFieldName; Check.DoCheckArgument(!string.IsNullOrEmpty(timeFieldName), () => $"{searchableDocumentTime} time is not searchable"); return(EntityAdapter.GetHeaders(MultiIndex.SearchInPeriod(timeFieldName, periodStart, periodEnd, EntityAdapter.SearchFieldName, queryText, maxResults))); }
public void GetExistingByTimePeriodEnd(SearchableDocumentTime documentTime) { var lastDocTime = documentTime == SearchableDocumentTime.LastUpdate ? _testNotes.Last().LastUpdateTime : _testNotes.Last().CreateTime; var searchResult = _indexedStorage.GetTopInPeriod(null, lastDocTime, 5, documentTime); // range end is exclusive Assert.AreEqual(_testNotes.Reverse().Skip(1).First().Id, searchResult.First().Id); Assert.AreEqual(5, searchResult.Count); foreach (var header in searchResult) { var note = _indexedStorage.GetExisting(header); Assert.IsNotNull(note); Assert.AreEqual(header.Id, note.Id); Assert.AreEqual(header.CreateTime, note.CreateTime.TrimToSecondsPrecision()); Assert.AreEqual(header.LastUpdateTime, note.LastUpdateTime.TrimToSecondsPrecision()); Assert.AreEqual(header.Name, note.Name); } }
/// <summary> /// Get value of one of searchable note time properties. /// </summary> /// <param name="note"> /// Mandatory /// </param> /// <param name="searchableDocumentTime"> /// Identifies property. /// </param> /// <returns> /// Time property value. /// </returns> public static DateTime GetSeachableTime(this INoteHeader note, SearchableDocumentTime searchableDocumentTime) { return(searchableDocumentTime == SearchableDocumentTime.Creation ? note.CreateTime : note.LastUpdateTime); }
/// <inheritdoc /> public IList <THeader> SearchInPeriod(DateTime?periodStart, DateTime?periodEnd, string queryText, int maxResults, SearchableDocumentTime searchableDocumentTime = SearchableDocumentTime.LastUpdate) { return(SearchEngine.SearchInPeriod(periodStart, periodEnd, queryText, maxResults, searchableDocumentTime)); }
/// <inheritdoc /> public IList <THeader> GetTopInPeriod(DateTime?periodStart, DateTime?periodEnd, int maxResults, SearchableDocumentTime searchableDocumentTime = SearchableDocumentTime.LastUpdate) { return(SearchEngine.GetTopInPeriod(periodStart, periodEnd, maxResults, searchableDocumentTime)); }