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 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 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 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 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
            }
        }