public virtual void TestSetAfterTimeStampWrongKind() { ITimeSeriesEntryCursor cursor = CreateCursor(); try { DateTime dateTime = new DateTime(0, DateTimeKind.Local); cursor.SetAfter(dateTime); Assert.Fail("Seeking with a date time with local DateTimeKind must fail"); } catch (ArgumentException) { // ok } try { DateTime dateTime = new DateTime(0, DateTimeKind.Unspecified); cursor.SetAfter(dateTime); Assert.Fail("Seeking with a date time with unspecified DateTimeKind must fail"); } catch (ArgumentException) { // ok } }
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 void TestActionsOnEmptyCursor() { foreach (OperationsHelper.CursorOperation cursorOperation in OperationsHelper.CursorOperations) { ITimeSeriesEntryCursor cursor = CreateCursor(); Assert.IsNull(cursor.Current); cursorOperation(cursor); } }
public void TestSetToStartAtMinValue() { InsertDefaultEntryByTimeStamp(MinimumTimeStamp); ITimeSeriesEntryCursor cursor = CreateCursor(); cursor.SetToStart(); Assert.IsNull(cursor.Current); Assert.IsTrue(cursor.MoveNext()); CheckEntry(cursor.Current); }
public void TestSetToEndAtMaxValue() { InsertDefaultEntryByTimeStamp(MaximumTimeStamp); ITimeSeriesEntryCursor cursor = CreateCursor(); cursor.SetToEnd(); Assert.IsNull(cursor.Current); Assert.IsTrue(cursor.MovePrevious()); CheckEntry(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 TestSetAfterFromBeforeStart() { ITimeSeriesEntryCursor cursor = CreateCursor(); InsertAllDefaultEntries(); cursor.SetAfter(DefaultTimeSeries.TimeInterval.StartTime.AddTicks(-1)); Assert.IsNotNull(cursor.Current); Assert.AreEqual(DefaultTimeSeries.TimeInterval.StartTime, cursor.Current.TimeStamp); cursor.SetAfter(DateTimeHelper.UtcMinValue); Assert.IsNotNull(cursor.Current); Assert.AreEqual(DefaultTimeSeries.TimeInterval.StartTime, cursor.Current.TimeStamp); }
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 TestSetAfterUnspecifiedTimeStampFails() { ITimeSeriesEntryCursor cursor = CreateCursor(); InsertAllDefaultEntries(); try { cursor.SetAfter(new DateTime(DefaultTimeStamps[0], DateTimeKind.Unspecified)); Assert.Fail("SetAfter should not accept DateTime values with and Unspecified DateTimeKind."); } catch (ArgumentException) { // good } }
public virtual void TestSeekTimeStampBeforeStart() { ITimeSeriesEntryCursor cursor = CreateCursor(); InsertAllDefaultEntries(); Assert.IsTrue(cursor.MoveNext()); Assert.IsNotNull(cursor.Current); // get the first timestamp DateTime timeStamp = cursor.Current.TimeStamp; // try to seek before the start Assert.IsFalse(cursor.Seek(timeStamp - new TimeSpan(100))); Assert.IsNull(cursor.Current); }
public virtual void TestSetAfterFromAfterEnd() { ITimeSeriesEntryCursor cursor = CreateCursor(); InsertAllDefaultEntries(); cursor.SetAfter(DefaultTimeSeries.TimeInterval.EndTime.AddTicks(1)); Assert.IsNull(cursor.Current); Assert.IsTrue(cursor.MovePrevious()); Assert.AreEqual(DefaultTimeSeries.TimeInterval.EndTime, cursor.Current.TimeStamp); cursor.SetAfter(DateTimeHelper.UtcMaxValue); Assert.IsNull(cursor.Current); Assert.IsTrue(cursor.MovePrevious()); Assert.AreEqual(DefaultTimeSeries.TimeInterval.EndTime, cursor.Current.TimeStamp); }
public virtual void TestSetBeforeLocalTimeStampFails() { ITimeSeriesEntryCursor cursor = CreateCursor(); InsertAllDefaultEntries(); try { cursor.SetBefore(new DateTime(DefaultTimeStamps[0], DateTimeKind.Local)); Assert.Fail("SetBefore should not accept DateTime values with and Local DateTimeKind."); } catch (ArgumentException) { // good } }
public virtual void TestSeekingMilesAfterEnd() { ITimeSeriesEntryCursor cursor = CreateCursor(); InsertAllDefaultEntries(); TimeSpan fullDistance = DefaultTimeSeries.TimeInterval.EndTime - DefaultTimeSeries.TimeInterval.StartTime; // go into the middle of the timeseries cursor.Seek(DefaultTimeSeries.TimeInterval.StartTime + new TimeSpan(fullDistance.Ticks / 2)); Assert.IsNotNull(cursor.Current); // seek will always step to the last valid entry cursor.Seek(fullDistance, SeekPosition.CURRENT); Assert.IsNotNull(cursor.Current); Assert.IsFalse(cursor.MoveNext()); Assert.IsNull(cursor.Current); }
public virtual void TestWalkingMilesBeforeBegin() { ITimeSeriesEntryCursor cursor = CreateCursor(); InsertDefaultEntryByIndex(0); cursor.SetToStart(); Assert.IsNull(cursor.Current); // you cannot reach a valid entry before the beginning for (int i = 1; i < 20; ++i) { Assert.IsFalse(cursor.MovePrevious()); } // one step must be enough to get to the first entry Assert.IsTrue(cursor.MoveNext()); Assert.IsNotNull(cursor.Current); }
public virtual void TestWalkingMilesAfterEnd() { ITimeSeriesEntryCursor cursor = CreateCursor(); InsertAllDefaultEntries(); cursor.SetToEnd(); Assert.IsNull(cursor.Current); // you cannot reach a valid entry behind the end for (int i = 1; i < 20; ++i) { Assert.IsFalse(cursor.MoveNext()); } // one step must be enough to get to the last entry Assert.IsTrue(cursor.MovePrevious()); Assert.IsNotNull(cursor.Current); }
public void TestSeekTimeSpanSpecialValueAtEnd() { ITimeSeriesEntryCursor cursor = CreateCursor(); InsertAllDefaultEntries(); // show that cursor works as expected for a time series with "normal" values cursor.Seek(TimeSpan.FromTicks(-1), SeekPosition.END); // go to second last element Assert.IsTrue(cursor.MoveNext()); // go to last element Assert.IsNotNull(cursor.Current); Assert.IsFalse(cursor.MoveNext()); InsertDefaultEntryByTimeStamp(MaximumTimeStamp); // show that cursor still works cursor.Seek(TimeSpan.FromTicks(-1), SeekPosition.END); // go to second last element Assert.IsTrue(cursor.MoveNext()); // go to last element Assert.IsNotNull(cursor.Current); Assert.IsFalse(cursor.MoveNext()); }
public virtual void TestSetAfter() { ITimeSeriesEntryCursor cursor = CreateCursor(); InsertAllDefaultEntries(); foreach (long timeStamp in DefaultTimeStamps) { cursor.SetAfter(DateTimeHelper.ToDateTime(timeStamp)); Assert.IsTrue(cursor.MovePrevious()); Assert.AreEqual(timeStamp, DateTimeHelper.ToLong(cursor.Current.TimeStamp)); cursor.SetAfter(DateTimeHelper.ToDateTime(timeStamp + 1)); Assert.IsTrue(cursor.MovePrevious()); Assert.AreEqual(timeStamp, DateTimeHelper.ToLong(cursor.Current.TimeStamp)); cursor.SetAfter(DateTimeHelper.ToDateTime(timeStamp - 1)); Assert.AreEqual(timeStamp, DateTimeHelper.ToLong(cursor.Current.TimeStamp)); } }
public virtual void TestCurrentBeforeStartOrBehindEnd() { ITimeSeriesEntryCursor cursor = CreateCursor(); InsertAllDefaultEntries(); cursor.SetToStart(); Assert.IsNull(cursor.Current); ITimeSeriesEntry timeSeriesEntry = cursor.Current; Assert.IsNull(timeSeriesEntry); cursor.SetToEnd(); Assert.IsNull(cursor.Current); timeSeriesEntry = cursor.Current; Assert.IsNull(timeSeriesEntry); }
public virtual void TestSeekTimeStamp() { ITimeSeriesEntryCursor cursor = CreateCursor(); InsertAllDefaultEntries(); // seek time stamp shall return the entry with the correct time stamp foreach (long timeStamp in DefaultTimeStamps) { cursor.Seek(DateTimeHelper.ToDateTime(timeStamp)); Assert.AreEqual(timeStamp, DateTimeHelper.ToLong(cursor.Current.TimeStamp)); } // seek time stamp shall return the entry with the next smaller time stamp foreach (long timeStamp in DefaultTimeStamps) { cursor.Seek(DateTimeHelper.ToDateTime(timeStamp + 1)); Assert.AreEqual(timeStamp, DateTimeHelper.ToLong(cursor.Current.TimeStamp)); } }
public virtual void TestSeekingMilesBeforeBegin() { ITimeSeriesEntryCursor cursor = CreateCursor(); InsertAllDefaultEntries(); TimeSpan fullDistance = DefaultTimeSeries.TimeInterval.EndTime - DefaultTimeSeries.TimeInterval.StartTime; // go into the middle of the timeseries cursor.Seek(DefaultTimeSeries.TimeInterval.StartTime + new TimeSpan(fullDistance.Ticks / 2)); Assert.IsNotNull(cursor.Current); // you cannot reach a valid entry far before the beginning cursor.Seek(-fullDistance, SeekPosition.CURRENT); Assert.IsNull(cursor.Current); // one step must be enough to get to the first entry Assert.IsTrue(cursor.MoveNext()); Assert.IsNotNull(cursor.Current); }
public virtual void TestSetBeforeStartTime() { ITimeSeriesEntryCursor cursor = CreateCursor(); InsertAllDefaultEntries(); cursor.SetBefore(DefaultTimeSeries.TimeInterval.StartTime.AddTicks(-1)); Assert.IsNull(cursor.Current); Assert.IsTrue(cursor.MoveNext()); Assert.AreEqual(DefaultTimeSeries.TimeInterval.StartTime, cursor.Current.TimeStamp); cursor.SetBefore(DateTimeHelper.ToDateTime(DateTimeHelper.ToLong(DefaultTimeSeries.TimeInterval.StartTime) / 2)); Assert.IsNull(cursor.Current); Assert.IsTrue(cursor.MoveNext()); Assert.AreEqual(DefaultTimeSeries.TimeInterval.StartTime, cursor.Current.TimeStamp); cursor.SetBefore(DateTimeHelper.UtcMinValue); Assert.IsNull(cursor.Current); Assert.IsTrue(cursor.MoveNext()); Assert.AreEqual(DefaultTimeSeries.TimeInterval.StartTime, cursor.Current.TimeStamp); }
public void TestActionsOnDisposedCursorFails() { ITimeSeriesEntryCursor cursor = CreateCursor(); Assert.IsNull(cursor.Current); cursor.Dispose(); foreach (OperationsHelper.CursorOperation cursorOperation in OperationsHelper.CursorOperations) { try { cursorOperation(cursor); Assert.Fail("The following operation should not work on a disposed cursor: " + cursorOperation); } catch (ObjectDisposedException) { // ok } } }
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)); }