public virtual void TestCurrentForIEnumerator()
        {
            ITimeSeriesEntryCursor cursor = CreateCursor();

            InsertAllDefaultEntries();
            // get an IEnumerator over a time series
            IEnumerator enumerator = cursor;

            // check that it can move and retrieve an entry
            Assert.IsTrue(enumerator.MoveNext());
            ITimeSeriesEntry timeSeriesEntry1 = (ITimeSeriesEntry)enumerator.Current;

            Assert.IsNotNull(timeSeriesEntry1);

            // check that the IEnumerator is a correct Cursor
            ITimeSeriesEntryCursor timeSeriesEntryCursor = enumerator as ITimeSeriesEntryCursor;

            Assert.IsNotNull(timeSeriesEntryCursor);
            Assert.IsNotNull(timeSeriesEntryCursor.Current);

            // check that the corresponding cursor gets the same entry
            ITimeSeriesEntry timeSeriesEntry2 = timeSeriesEntryCursor.Current;

            Assert.IsTrue(TimeSeriesComparisons.CompareTimeSeriesEntry(timeSeriesEntry1, timeSeriesEntry2));

            // and that it is the same entry as retrieving it from a native cursor
            cursor.SetToStart();
            cursor.MoveNext();
            ITimeSeriesEntry timeSeriesEntry3 = cursor.Current;

            Assert.IsTrue(TimeSeriesComparisons.CompareTimeSeriesEntry(timeSeriesEntry2, timeSeriesEntry3));
        }
        public virtual void TestDoubleReset()
        {
            InsertDefaultEntryByIndex(0);
            IEnumerator <ITimeSeriesEntry> enumerator = CreateCursor();

            enumerator.Reset();
            Assert.IsTrue(enumerator.MoveNext());
            ITimeSeriesEntry entry = enumerator.Current;

            enumerator.Reset();
            Assert.IsTrue(enumerator.MoveNext());
            Assert.IsTrue(TimeSeriesComparisons.CompareTimeSeriesEntry(entry, enumerator.Current));
        }
        public virtual void TestDoubleSetToEnd()
        {
            InsertDefaultEntryByIndex(0);
            ITimeSeriesEntryCursor cursor = CreateCursor();

            cursor.SetToEnd();
            Assert.IsNull(cursor.Current);
            Assert.IsTrue(cursor.MovePrevious());
            ITimeSeriesEntry entry = cursor.Current;

            cursor.SetToEnd();
            Assert.IsTrue(cursor.MovePrevious());
            Assert.IsTrue(TimeSeriesComparisons.CompareTimeSeriesEntry(entry, cursor.Current));
        }
        public virtual void TestSetToStart()
        {
            InsertDefaultEntryByIndex(0);
            ITimeSeriesEntryCursor cursor = CreateCursor();

            cursor.Reset();
            Assert.IsNull(cursor.Current);
            Assert.IsTrue(cursor.MoveNext());
            ITimeSeriesEntry entry = cursor.Current;

            cursor.SetToStart();
            Assert.IsTrue(cursor.MoveNext());
            Assert.IsTrue(TimeSeriesComparisons.CompareTimeSeriesEntry(entry, cursor.Current));
        }
        public virtual void TestSeekTimeStampBehindEnd()
        {
            ITimeSeriesEntryCursor cursor = CreateCursor();

            InsertAllDefaultEntries();

            cursor.SetToEnd();
            Assert.IsNull(cursor.Current);
            Assert.IsTrue(cursor.MovePrevious());
            Assert.IsNotNull(cursor.Current);

            // remember the entry and get its timestamp
            ITimeSeriesEntry timeSeriesEntry = cursor.Current;
            DateTime         timeStamp       = timeSeriesEntry.TimeStamp;

            // try to seek behind the end; will result in pointing to the last entry (see documentation of Seek(TimeStamp))
            Assert.IsTrue(cursor.Seek(timeStamp + new TimeSpan(100)));
            Assert.IsNotNull(cursor.Current);

            // check that we are indeed at the last entry
            Assert.IsTrue(TimeSeriesComparisons.CompareTimeSeriesEntry(timeSeriesEntry, cursor.Current));
        }