Exemplo n.º 1
0
        public void TestDistinct_Normal()
        {
            //测试数据为空
            var result = _quoteCapture.Distinct();

            Assert.AreEqual(result.Count, 0);
            Assert.AreEqual(result.Symbol, _quoteCapture.Symbol);
            //测试重复数据在开头
            _quoteCapture.Clear();
            _quoteCapture.Add(1, 1, 100.1);
            _quoteCapture.Add(1, 2, 100.2);
            _quoteCapture.Add(2, 3, 100.3);
            result = _quoteCapture.Distinct();
            Assert.AreEqual(result.Symbol, _quoteCapture.Symbol);
            Assert.AreEqual(result.Count, 3);
            Assert.AreEqual(result.Time[0], 1);
            Assert.AreEqual(result.Price[0], 1);
            Assert.AreEqual(result.Volume[0], 100.1);
            Assert.AreEqual(result.Time[2], 2);
            Assert.AreEqual(result.Price[2], 3);
            Assert.AreEqual(result.Volume[2], 100.3);
            //重复数据在末尾
            _quoteCapture.Clear();
            _quoteCapture.Add(1, 1);
            _quoteCapture.Add(2, 3);
            _quoteCapture.Add(2, 4);
            result = _quoteCapture.Distinct();
            Assert.AreEqual(result.Count, 3);
            Assert.AreEqual(result.Time[0], 1);
            Assert.AreEqual(result.Price[0], 1);
            Assert.AreEqual(result.Time[2], 2);
            Assert.AreEqual(result.Price[2], 4);
            //重复数据在中间
            _quoteCapture.Clear();
            _quoteCapture.Add(1, 1);
            _quoteCapture.Add(2, 3);
            _quoteCapture.Add(2, 4);
            _quoteCapture.Add(4, 5);
            result = _quoteCapture.Distinct();
            Assert.AreEqual(result.Count, 4);
            Assert.AreEqual(result.Time[0], 1);
            Assert.AreEqual(result.Price[0], 1);
            Assert.AreEqual(result.Time[1], 2);
            Assert.AreEqual(result.Price[1], 3);
            Assert.AreEqual(result.Time[2], 2);
            Assert.AreEqual(result.Price[2], 4);
            //测试随机数据
            _quoteCapture.Clear();
            Random rm = new Random();

            for (var i = 0; i < 100; i++)
            {
                _quoteCapture.Add(i, i - 10);
                if (rm.Next(100) % 2 == 0)
                {
                    _quoteCapture.Add(i, i - 10);
                }
            }
            result = _quoteCapture.Distinct();
            Assert.AreEqual(result.Symbol, _quoteCapture.Symbol);
            for (var i = 1; i < result.Count; i++)
            {
                Assert.IsTrue(result.Time[i - 1] <= result.Time[i]);;
                Assert.AreEqual(result.Time[i] - 10, result.Price[i]);
            }
        }