public void ManualQueueWithDatesTest() { DataQueue queue = new DataQueue(true, true); queue.PutLast(Decimal64.One, new DateTime(1)); Assert.AreEqual(1, queue.Count); queue.PutLast(Decimal64.Two, new DateTime(2)); Assert.AreEqual(Decimal64.One, queue.GetPointsAgo(1)); Assert.AreEqual(new DateTime(1), queue.GetTimeByIndexAgo(1)); Assert.AreEqual(Decimal64.Two, queue.GetPointsAgo(0)); Assert.AreEqual(new DateTime(2), queue.GetTimeByIndexAgo(0)); for (int i = 3; i < 100; i++) { queue.PutLast(Decimal64.FromDouble(i), new DateTime(i)); } Assert.AreEqual(99, queue.Count); Assert.AreEqual(Decimal64.FromDouble(4), queue.GetPointsAgo(95)); Assert.AreEqual(new DateTime(4), queue.GetTimeByIndexAgo(95)); Assert.AreEqual(Decimal64.One, queue.First); Assert.AreEqual(new DateTime(1), queue.FirstDateTime); queue.RemoveFirst(); Assert.AreEqual(Decimal64.FromDouble(2), queue.GetPointsAgo(97)); Assert.AreEqual(new DateTime(2), queue.GetTimeByIndexAgo(97)); Assert.AreEqual(98, queue.Count); queue.PutFirst(Decimal64.One, new DateTime(1)); Assert.AreEqual(Decimal64.FromDouble(1), queue.GetPointsAgo(98)); Assert.AreEqual(new DateTime(1), queue.GetTimeByIndexAgo(98)); Assert.AreEqual(Decimal64.FromDouble(4950), queue.SumOfAbsoluteValues); Assert.AreEqual(Decimal64.FromDouble(328350), queue.SumOfSquares); Assert.AreEqual(Decimal64.FromDouble(4950), queue.Sum); Assert.AreEqual(50, queue.ExpectedValue.ToDouble(), 0.001); DataQueue queueClone = queue.Clone(); queueClone.RemoveLast(); Assert.AreEqual(Decimal64.FromDouble(98), queueClone.Last); Assert.AreEqual(new DateTime(98), queueClone.LastDateTime); Assert.AreEqual(Decimal64.FromDouble(99), queue.Last); Assert.AreEqual(new DateTime(99), queue.LastDateTime); Assert.AreEqual(Decimal64.FromDouble(4851), queueClone.SumOfAbsoluteValues); Assert.AreEqual(Decimal64.FromDouble(318549), queueClone.SumOfSquares); Assert.AreEqual(Decimal64.FromDouble(4851), queueClone.Sum); queue.SetPointsAgo(1, Decimal64.Zero); Assert.AreEqual(Decimal64.FromDouble(0), queue.GetPointsAgo(1)); Assert.AreEqual(new DateTime(98), queue.GetTimeByIndexAgo(1)); Assert.AreEqual(queue.Last, queue.GetPointsAgo(0)); Assert.AreEqual(Decimal64.FromDouble(4852), queue.Sum); Assert.AreEqual(74, queue.GetIndexByTime(new DateTime(25))); Assert.AreEqual(89, queue.GetIndexByTime(new DateTime(10))); Assert.AreEqual(Decimal64.FromDouble(25), queue.GetByTime(new DateTime(25))); queue.SetByTime(new DateTime(25), Decimal64.FromDouble(100)); Assert.AreEqual(Decimal64.FromDouble(4927), queue.Sum); }
public void ManualQueueTest() { DataQueue queue = new DataQueue(true, false); queue.PutLast(Decimal64.One); Assert.AreEqual(1, queue.Count); queue.PutLast(Decimal64.Two); Assert.AreEqual(Decimal64.One, queue.GetPointsAgo(1)); Assert.AreEqual(Decimal64.Two, queue.GetPointsAgo(0)); for (int i = 0; i < 100; i++) { queue.PutLast(Decimal64.FromDouble(i)); } Assert.AreEqual(102, queue.Count); Assert.AreEqual(Decimal64.FromDouble(4), queue.GetPointsAgo(95)); Assert.AreEqual(Decimal64.One, queue.First); queue.RemoveFirst(); Assert.AreEqual(Decimal64.FromDouble(2), queue.GetPointsAgo(100)); Assert.AreEqual(101, queue.Count); queue.PutFirst(Decimal64.One); Assert.AreEqual(Decimal64.FromDouble(1), queue.GetPointsAgo(101)); Assert.AreEqual(Decimal64.FromDouble(4953), queue.SumOfAbsoluteValues); Assert.AreEqual(Decimal64.FromDouble(328355), queue.SumOfSquares); Assert.AreEqual(Decimal64.FromDouble(4953), queue.Sum); Assert.AreEqual(48.559, queue.ExpectedValue.ToDouble(), 0.001); Assert.AreEqual(Decimal64.FromDouble(99), queue.Last); DataQueue queueClone = queue.Clone(); queueClone.RemoveLast(); Assert.AreEqual(Decimal64.FromDouble(98), queueClone.Last); Assert.AreEqual(Decimal64.FromDouble(99), queue.Last); Assert.AreEqual(Decimal64.FromDouble(4854), queueClone.SumOfAbsoluteValues); Assert.AreEqual(Decimal64.FromDouble(318554), queueClone.SumOfSquares); Assert.AreEqual(Decimal64.FromDouble(4854), queueClone.Sum); queue.SetPointsAgo(1, Decimal64.Zero); Assert.AreEqual(Decimal64.FromDouble(0), queue.GetPointsAgo(1)); Assert.AreEqual(queue.Last, queue.GetPointsAgo(0)); Assert.AreEqual(Decimal64.FromDouble(4855), queue.Sum); var arr = queue.ToArray(); int idx = 0; foreach (var x in queue) { Assert.AreEqual(x, arr[idx++]); } }