Example #1
0
        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);
        }
Example #2
0
        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++]);
            }
        }