コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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)));
        }
コード例 #4
0
        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);
            }
        }
コード例 #5
0
ファイル: Extensions.cs プロジェクト: v-kabanov/PIM
 /// <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);
 }
コード例 #6
0
 /// <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));
 }
コード例 #7
0
 /// <inheritdoc />
 public IList <THeader> GetTopInPeriod(DateTime?periodStart, DateTime?periodEnd, int maxResults, SearchableDocumentTime searchableDocumentTime = SearchableDocumentTime.LastUpdate)
 {
     return(SearchEngine.GetTopInPeriod(periodStart, periodEnd, maxResults, searchableDocumentTime));
 }