public void TestAppendIQuoteCapture_FillGap() { _quoteBasic.Add(600, 1, 1, 1, 1, 1); IQuoteCapture qc = new QuoteCapture("symbol1"); // 不填充 qc.Add(720, 12); _quoteBasic.Append(qc, 10, false); Assert.AreEqual(600, _quoteBasic.Time[0]); Assert.AreEqual(720, _quoteBasic.Time[1]); // 填充 _quoteBasic.Clear(); _quoteBasic.Add(600, 1, 1, 1, 1, 1); _quoteBasic.Append(qc, 10, true); Assert.AreEqual(600, _quoteBasic.Time[0]); Assert.AreEqual(660, _quoteBasic.Time[1]); Assert.AreEqual(720, _quoteBasic.Time[2]); qc.Add(840, 12); _quoteBasic.Append(qc, 10, true); Assert.AreEqual(840, _quoteBasic.Time[4]); qc.Add(890, 12); _quoteBasic.Append(qc, 10, true); Assert.AreEqual(840, _quoteBasic.Time[4]); qc.Add(910, 12); _quoteBasic.Append(qc, 10, true); Assert.AreEqual(900, _quoteBasic.Time[5]); Assert.AreEqual(910, _quoteBasic.Time[6]); }
public void TestCompressAndUncompress_Normal() { _quoteCapture.Add(1, 1); _quoteCapture.Add(2, 1); _quoteCapture.Add(3, 1); _quoteCapture.Add(4, 2); _quoteCapture.Add(5, 2); _quoteCapture.Add(6, 2); _quoteCapture.Add(7, 2); _quoteCapture.Add(9, 2); _quoteCapture.Add(10, 3); _quoteCapture.Add(11, 3); _quoteCapture.Add(12, 3); var compress = QuoteCapture.Compress(_quoteCapture); Assert.AreNotEqual(compress.Count, _quoteCapture.Count); var uncompress = QuoteCapture.Uncompress(compress); Assert.AreEqual(_quoteCapture.Count, uncompress.Count); Assert.AreEqual(_quoteCapture.Symbol, uncompress.Symbol); Assert.AreEqual(_quoteCapture.PipFactor, uncompress.PipFactor); for (var i = 0; i < uncompress.Count; i++) { Assert.AreEqual(_quoteCapture.Time[i], uncompress.Time[i]); Assert.AreEqual(_quoteCapture.Price[i], uncompress.Price[i]); } }
public void TestAppendStream_Normal() { var quoteBasicCapture = new QuoteCapture("DAG_2", 5, new List <long>(), new List <double>(), new List <double>()); for (int i = 0; i <= 2; i++) { quoteBasicCapture.Add(i, i); } using (var stream = File.OpenWrite(fileName)) quoteBasicCapture.AppendStream(stream); var contentStr = File.ReadAllText(fileName); Assert.AreEqual(contentStr, "Symbol:DAG_2;PipFactor:5\r\nTime;Price;Volume;\r\n0;0;0\r\n1;1;0\r\n2;2;0\r\n"); var time1 = File.GetLastWriteTime(fileName); Thread.Sleep(100); using (var stream = File.OpenWrite(fileName)) quoteBasicCapture.AppendStream(stream); // test overrite existing file contentStr = File.ReadAllText(fileName); Assert.AreEqual(contentStr, "Symbol:DAG_2;PipFactor:5\r\nTime;Price;Volume;\r\n0;0;0\r\n1;1;0\r\n2;2;0\r\n"); var time2 = File.GetLastWriteTime(fileName); Assert.IsTrue(time2 > time1); File.Delete(fileName); }
public void TestAppendStream_NoData() { var quoteCapture = new QuoteCapture("DAG_2", 5, new List <long>(), new List <double>(), new List <double>()); using (var stream = File.OpenWrite(fileName)) quoteCapture.AppendStream(stream); using (var stream = File.OpenRead(fileName)) quoteCapture.LoadStream(stream); }
public void TestLoad_PipFactorNotMatch() { var str = @" Symbol:DAG_2;PipFactor:51 Time; Price; 1465235480;3531 1465235485;3532"; var quoteCapture = new QuoteCapture("DAG_2", 5, new List <long>(), new List <double>(), new List <double>()); File.WriteAllText(fileName, str); using (var stream = File.OpenRead(fileName)) quoteCapture.LoadStream(stream); }
public void TestUncompress_Safety() { //只有1个数据的时候 _quoteCapture.Add(5, -1); var result = QuoteCapture.Uncompress(_quoteCapture); Assert.IsNotNull(result); Assert.AreEqual(result.Count, 1); Assert.AreEqual(result.Time[0], 5); Assert.AreEqual(result.Price[0], -1); //处理负数时间 _quoteCapture.Clear(); _quoteCapture.Add(-3, 1); _quoteCapture.Add(-1, -1); _quoteCapture.Add(5, 2); result = QuoteCapture.Uncompress(_quoteCapture); Assert.IsNotNull(result); Assert.AreEqual(result.Count, 4); Assert.AreEqual(result.Time[0], -3); Assert.AreEqual(result.Price[0], 1); Assert.AreEqual(result.Time[1], -2); Assert.AreEqual(result.Price[1], 1); Assert.AreEqual(result.Time[2], -1); Assert.AreEqual(result.Price[2], 1); Assert.AreEqual(result.Time[3], 5); Assert.AreEqual(result.Price[3], 2); //处理非递增序列 _quoteCapture.Clear(); _quoteCapture.Add(0, 1); _quoteCapture.Add(-2, -1); _quoteCapture.Add(3, -1);//用-1作为分段起点 _quoteCapture.Add(5, -1); result = QuoteCapture.Uncompress(_quoteCapture); Assert.IsNotNull(result); Assert.AreEqual(result.Count, 5); Assert.AreEqual(result.Time[0], 0); Assert.AreEqual(result.Price[0], 1); Assert.AreEqual(result.Time[1], -2); Assert.AreEqual(result.Price[1], -1); Assert.AreEqual(result.Time[2], 3); Assert.AreEqual(result.Price[2], -1); Assert.AreEqual(result.Time[3], 4); Assert.AreEqual(result.Price[3], -1); Assert.AreEqual(result.Time[4], 5); Assert.AreEqual(result.Price[4], -1); }
public void TestLoad_IllegalContent() { //test robutstness to empty line, tab, space etc. var str = @" Symbol:DAG_2;PipFactor:5 Time; Price; 1465235480;3531 1465235485;3532_illegal"; var quoteCapture = new QuoteCapture("DAG_2", 5, new List <long>(), new List <double>(), new List <double>()); File.WriteAllText(fileName, str); using (var stream = File.OpenRead(fileName)) quoteCapture.LoadStream(stream); }
public void Add(string symbol, long timestamp, double price, double volume) { lock (this) { //add to quote capture if (!QuoteCaptures.ContainsKey(symbol)) { var qc = new QuoteCapture(symbol); qc.DataAdded += Qc_DataAdded; QuoteCaptures.TryAdd(symbol, qc); } if (timestamp > QuoteCaptures[symbol].LastTime) { QuoteCaptures[symbol].Add(timestamp, price, volume); } } }
public void TestAssign() { IList <long> time = new List <long>(); IList <double> price = new List <double>(); IList <double> volume = new List <double>(); time.Add(10); price.Add(20); volume.Add(30); IQuoteCapture qc = new QuoteCapture("symbol", 1, time, price, volume); _quoteCapture.Assign(qc); Assert.AreEqual("symbol", _quoteCapture.Symbol); Assert.AreEqual(1, _quoteCapture.PipFactor); Assert.AreEqual(10, _quoteCapture.Time[0]); Assert.AreEqual(20, _quoteCapture.Price[0]); Assert.AreEqual(30, _quoteCapture.Volume[0]); }
public void TestAppendStream_Append() { var quoteBasic = new QuoteCapture("DAG_2", 5, new List <long>(), new List <double>(), new List <double>()); for (int i = 0; i <= 2; i++) { quoteBasic.Add(i, i); } using (var stream = File.OpenWrite(fileName)) quoteBasic.AppendStream(stream); using (var stream = new FileStream(fileName, FileMode.Append, FileAccess.Write)) quoteBasic.AppendStream(stream); var contentStr = File.ReadAllText(fileName); Assert.AreEqual(contentStr, "Symbol:DAG_2;PipFactor:5\r\nTime;Price;Volume;\r\n0;0;0\r\n1;1;0\r\n2;2;0\r\n0;0;0\r\n1;1;0\r\n2;2;0\r\n"); }
public void TestAppendIQuoteCapture() { _quoteBasic.Add(600, 1, 1, 1, 1, 1); // 600 // 非整数倍 IQuoteCapture qc = new QuoteCapture("symbol1"); qc.Add(620, 20); _quoteBasic.Append(qc, -1, false, false); Assert.AreEqual(1, _quoteBasic.Count); Assert.AreEqual(600, _quoteBasic.LastTime); // 整数倍 qc.Add(660, 60); _quoteBasic.Append(qc, -1, false, false); Assert.AreEqual(2, _quoteBasic.Count); Assert.AreEqual(600, _quoteBasic.Time[0]); Assert.AreEqual(660, _quoteBasic.Time[1]); // 为空 qc = new QuoteCapture("symbol1"); _quoteBasic.Append(qc, -1, false, false); Assert.AreEqual(2, _quoteBasic.Count); Assert.AreEqual(600, _quoteBasic.Time[0]); Assert.AreEqual(660, _quoteBasic.Time[1]);; // 为null qc = null; _quoteBasic.Append(qc, -1, false, false); Assert.AreEqual(2, _quoteBasic.Count); Assert.AreEqual(600, _quoteBasic.Time[0]); Assert.AreEqual(660, _quoteBasic.Time[1]); //// 不填补空洞 //qb = new QuoteBasic("symbol1", 20); //qb.Add(6000, 1, 1, 1, 1, 1, false); //_quoteBasic.Append(qb); //Assert.AreEqual(3, _quoteBasic.Count); //Assert.AreEqual(600, _quoteBasic.Time[0]); //Assert.AreEqual(660, _quoteBasic.Time[1]); //Assert.AreEqual(6000, _quoteBasic.Time[2]); }
public void TestAppend() { IQuoteCapture qc = null; // 测试null _quoteCapture.Append(qc); Assert.AreEqual(0, _quoteCapture.Count); // 测试空 qc = new QuoteCapture(); _quoteCapture.Append(qc); Assert.AreEqual(0, _quoteCapture.Count); // 测试不同的symbol qc = new QuoteCapture("symbol1"); qc.Add(10, 20, 30); _quoteCapture.Append(qc); Assert.AreEqual(0, _quoteCapture.Count); // 测试_quoteCapter.LastTime < qc.LastTime qc = new QuoteCapture("symbol0"); _quoteCapture.Add(10, 20, 15); qc.Add(5, 20); _quoteCapture.Append(qc); Assert.AreEqual(1, _quoteCapture.Count); Assert.AreEqual(10, _quoteCapture.Time[0]); Assert.AreEqual(20, _quoteCapture.Price[0]); Assert.AreEqual(15, _quoteCapture.Volume[0]); // 测试不添加小于LastTime的数据 qc.Add(10, 18, 18); qc.Add(20, 30, 17); _quoteCapture.Append(qc); Assert.AreEqual(2, _quoteCapture.Count); Assert.AreEqual(10, _quoteCapture.Time[0]); Assert.AreEqual(20, _quoteCapture.Time[1]); Assert.AreEqual(20, _quoteCapture.Price[0]); Assert.AreEqual(30, _quoteCapture.Price[1]); Assert.AreEqual(15, _quoteCapture.Volume[0]); Assert.AreEqual(17, _quoteCapture.Volume[1]); }
public void TestLoad_Space() { //test robutstness to empty line, tab, space etc. var str = @" Symbol:DAG_2;PipFactor:5 Time; Price;Volume; 1465235480;3531;0 1465235485;3532;0"; var quoteCapture = new QuoteCapture("DAG_2", 5, new List <long>(), new List <double>(), new List <double>()); File.WriteAllText(fileName, str); using (var stream = File.OpenRead(fileName)) quoteCapture.LoadStream(stream); Assert.AreEqual(quoteCapture.Count, 2); Assert.AreEqual(quoteCapture.Time[0], 1465235480); Assert.AreEqual(quoteCapture.Price[0], 3531); Assert.AreEqual(quoteCapture.Time[1], 1465235485); Assert.AreEqual(quoteCapture.Price[1], 3532); }
public void TestExtract_IntInt() { IQuoteCapture qc = null; // 测试sindex > eindex TestHelper.AssertException(() => _quoteCapture.Extract(1, 0), typeof(ArgumentException)); // 测试sindex < 0 TestHelper.AssertException(() => _quoteCapture.Extract(-1, 0), typeof(ArgumentException)); // 测试eindex < 0 TestHelper.AssertException(() => _quoteCapture.Extract(0, -1), typeof(ArgumentException)); // 测试eindex > _quoteCapture.Count - 1; _quoteCapture.Add(10, 12); TestHelper.AssertException(() => _quoteCapture.Extract(0, 5), typeof(ArgumentException)); _quoteCapture = new QuoteCapture("xyz"); _quoteCapture.Add(100, 10, 23); _quoteCapture.Add(200, 20, 24); _quoteCapture.Add(300, 30, 26); _quoteCapture.Add(400, 40, 27); _quoteCapture.Add(500, 50, 28); qc = _quoteCapture.Extract(1, 3); Assert.AreEqual(3, qc.Count); Assert.AreEqual(200, qc.Time[0]); Assert.AreEqual(300, qc.Time[1]); Assert.AreEqual(400, qc.Time[2]); Assert.AreEqual(20, qc.Price[0]); Assert.AreEqual(30, qc.Price[1]); Assert.AreEqual(40, qc.Price[2]); Assert.AreEqual(24, qc.Volume[0]); Assert.AreEqual(26, qc.Volume[1]); Assert.AreEqual(27, qc.Volume[2]); }
public void TestAppendIQuoteCapture_SubInterval() { _quoteBasic.Add(600, 1, 1, 1, 1, 1, false); // 600 IQuoteCapture qc = new QuoteCapture("symbol1"); qc.Add(620, 20); _quoteBasic.Append(qc, 20); // 600, 620 Assert.AreEqual(2, _quoteBasic.Count); Assert.AreEqual(600, _quoteBasic.Time[0]); Assert.AreEqual(620, _quoteBasic.Time[1]); qc = new QuoteCapture("symbol1"); qc.Add(640, 40); _quoteBasic.Append(qc, 20); // 600, 640 Assert.AreEqual(2, _quoteBasic.Count); Assert.AreEqual(600, _quoteBasic.Time[0]); Assert.AreEqual(640, _quoteBasic.Time[1]); qc.Add(680, 80); _quoteBasic.Append(qc, 20); // 600, 660, 680 Assert.AreEqual(3, _quoteBasic.Count); Assert.AreEqual(600, _quoteBasic.Time[0]); Assert.AreEqual(660, _quoteBasic.Time[1]); Assert.AreEqual(680, _quoteBasic.Time[2]); qc.Add(700, 100); _quoteBasic.Append(qc, 20); // 600, 660, 700 Assert.AreEqual(3, _quoteBasic.Count); Assert.AreEqual(600, _quoteBasic.Time[0]); Assert.AreEqual(660, _quoteBasic.Time[1]); Assert.AreEqual(700, _quoteBasic.Time[2]); qc.Add(740, 140); qc.Add(760, 160); _quoteBasic.Append(qc, 20); // 600, 660, 720, 760 Assert.AreEqual(4, _quoteBasic.Count); Assert.AreEqual(600, _quoteBasic.Time[0]); Assert.AreEqual(660, _quoteBasic.Time[1]); Assert.AreEqual(720, _quoteBasic.Time[2]); Assert.AreEqual(760, _quoteBasic.Time[3]); qc = new QuoteCapture("symbol1"); qc.Add(761, 1); qc.Add(762, 1); qc.Add(763, 1); _quoteBasic.Append(qc, 1); Assert.AreEqual(4, _quoteBasic.Count); Assert.AreEqual(600, _quoteBasic.Time[0]); Assert.AreEqual(660, _quoteBasic.Time[1]); Assert.AreEqual(720, _quoteBasic.Time[2]); Assert.AreEqual(763, _quoteBasic.Time[3]); qc.Add(780, 90); _quoteBasic.Append(qc, 20); Assert.AreEqual(4, _quoteBasic.Count); Assert.AreEqual(600, _quoteBasic.Time[0]); Assert.AreEqual(660, _quoteBasic.Time[1]); Assert.AreEqual(720, _quoteBasic.Time[2]); Assert.AreEqual(780, _quoteBasic.Time[3]); }
public void TestUncompress_Normal() { TestHelper.AssertException(() => QuoteCapture.Uncompress(null), typeof(ArgumentNullException)); Assert.AreEqual(QuoteCapture.Uncompress(_quoteCapture).Count, 0); //重复数据在开始 _quoteCapture.Add(1, 1); _quoteCapture.Add(3, -1); _quoteCapture.Add(4, 2); var result = QuoteCapture.Uncompress(_quoteCapture); Assert.IsNotNull(result); 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], 1); Assert.AreEqual(result.Time[2], 3); Assert.AreEqual(result.Price[2], 1); Assert.AreEqual(result.Time[3], 4); Assert.AreEqual(result.Price[3], 2); //重复数据在末尾 _quoteCapture.Clear(); _quoteCapture.Add(1, 1); _quoteCapture.Add(2, 2); _quoteCapture.Add(5, -1); result = QuoteCapture.Uncompress(_quoteCapture); Assert.IsNotNull(result); Assert.AreEqual(result.Count, 5); Assert.AreEqual(result.Time[0], 1); Assert.AreEqual(result.Price[0], 1); Assert.AreEqual(result.Time[1], 2); Assert.AreEqual(result.Price[1], 2); Assert.AreEqual(result.Time[2], 3); Assert.AreEqual(result.Price[2], 2); Assert.AreEqual(result.Time[3], 4); Assert.AreEqual(result.Price[3], 2); Assert.AreEqual(result.Time[4], 5); Assert.AreEqual(result.Price[4], 2); //重复数据在中间 _quoteCapture.Clear(); _quoteCapture.Add(1, 1); _quoteCapture.Add(2, 2); _quoteCapture.Add(4, -1); _quoteCapture.Add(5, 6); result = QuoteCapture.Uncompress(_quoteCapture); Assert.IsNotNull(result); Assert.AreEqual(result.Count, 5); Assert.AreEqual(result.Time[0], 1); Assert.AreEqual(result.Price[0], 1); Assert.AreEqual(result.Time[1], 2); Assert.AreEqual(result.Price[1], 2); Assert.AreEqual(result.Time[2], 3); Assert.AreEqual(result.Price[2], 2); Assert.AreEqual(result.Time[3], 4); Assert.AreEqual(result.Price[3], 2); Assert.AreEqual(result.Time[4], 5); Assert.AreEqual(result.Price[4], 6); //复合重复数据 开始中间结尾都有 _quoteCapture.Clear(); _quoteCapture.Add(1, 1); _quoteCapture.Add(3, -1); _quoteCapture.Add(4, 2); _quoteCapture.Add(6, -1); _quoteCapture.Add(7, 3); _quoteCapture.Add(8, 4); _quoteCapture.Add(10, -1); result = QuoteCapture.Uncompress(_quoteCapture); Assert.IsNotNull(result); Assert.AreEqual(result.Count, 10); Assert.AreEqual(result.Time[0], 1); Assert.AreEqual(result.Price[0], 1); Assert.AreEqual(result.Time[1], 2); Assert.AreEqual(result.Price[1], 1); Assert.AreEqual(result.Time[2], 3); Assert.AreEqual(result.Price[2], 1); Assert.AreEqual(result.Time[3], 4); Assert.AreEqual(result.Price[3], 2); Assert.AreEqual(result.Time[4], 5); Assert.AreEqual(result.Price[4], 2); Assert.AreEqual(result.Time[5], 6); Assert.AreEqual(result.Price[5], 2); Assert.AreEqual(result.Time[6], 7); Assert.AreEqual(result.Price[6], 3); Assert.AreEqual(result.Time[7], 8); Assert.AreEqual(result.Price[7], 4); Assert.AreEqual(result.Time[8], 9); Assert.AreEqual(result.Price[8], 4); Assert.AreEqual(result.Time[9], 10); Assert.AreEqual(result.Price[9], 4); }
public void TestCompress_Safety() { //不压缩重复数据 _quoteCapture.Add(1, 1); _quoteCapture.Add(1, 1); _quoteCapture.Add(2, 2); _quoteCapture.Add(3, 2); _quoteCapture.Add(3, 2); _quoteCapture.Add(4, 2); _quoteCapture.Add(5, 2); _quoteCapture.Add(6, 7); var result = QuoteCapture.Compress(_quoteCapture); Assert.IsNotNull(result); Assert.AreEqual(result.Count, 7); Assert.AreEqual(result.Time[0], 1); Assert.AreEqual(result.Price[0], 1); Assert.AreEqual(result.Time[1], 1); Assert.AreEqual(result.Price[1], 1); Assert.AreEqual(result.Time[2], 2); Assert.AreEqual(result.Price[2], 2); Assert.AreEqual(result.Time[3], 3); Assert.AreEqual(result.Price[3], -1); Assert.AreEqual(result.Time[4], 3); Assert.AreEqual(result.Price[4], 2); Assert.AreEqual(result.Time[5], 5); Assert.AreEqual(result.Price[5], -1); Assert.AreEqual(result.Time[6], 6); Assert.AreEqual(result.Price[6], 7); //time时间突然变小也不压缩 _quoteCapture.Clear(); _quoteCapture.Add(3, 1); _quoteCapture.Add(2, 1); _quoteCapture.Add(1, 1); _quoteCapture.Add(3, 2); _quoteCapture.Add(4, 2); _quoteCapture.Add(5, 2); result = QuoteCapture.Compress(_quoteCapture); Assert.IsNotNull(result); Assert.AreEqual(result.Count, 5); Assert.AreEqual(result.Time[0], 3); Assert.AreEqual(result.Price[0], 1); Assert.AreEqual(result.Time[1], 2); Assert.AreEqual(result.Price[1], 1); Assert.AreEqual(result.Time[2], 1); Assert.AreEqual(result.Price[2], 1); Assert.AreEqual(result.Time[3], 3); Assert.AreEqual(result.Price[3], 2); Assert.AreEqual(result.Time[4], 5); Assert.AreEqual(result.Price[4], -1); //时间间隔大于1也不压缩 _quoteCapture.Clear(); _quoteCapture.Add(3, 2); _quoteCapture.Add(6, 2); _quoteCapture.Add(9, 2); _quoteCapture.Add(15, 2); result = QuoteCapture.Compress(_quoteCapture); Assert.IsNotNull(result); Assert.AreEqual(result.Count, 4); Assert.AreEqual(result.Time[0], 3); Assert.AreEqual(result.Price[0], 2); Assert.AreEqual(result.Time[1], 6); Assert.AreEqual(result.Price[1], 2); Assert.AreEqual(result.Time[2], 9); Assert.AreEqual(result.Price[2], 2); Assert.AreEqual(result.Time[3], 15); Assert.AreEqual(result.Price[3], 2); //测试负值情况 _quoteCapture.Clear(); _quoteCapture.Add(3, 2); _quoteCapture.Add(-2, 2); _quoteCapture.Add(-1, 2); _quoteCapture.Add(0, 2); result = QuoteCapture.Compress(_quoteCapture); Assert.IsNotNull(result); Assert.AreEqual(result.Count, 3); Assert.AreEqual(result.Time[0], 3); Assert.AreEqual(result.Price[0], 2); Assert.AreEqual(result.Time[1], -2); Assert.AreEqual(result.Price[1], 2); Assert.AreEqual(result.Time[2], 0); Assert.AreEqual(result.Price[2], -1); }
public void TestCompress_Normal() {//测试基本功能 TestHelper.AssertException(() => QuoteCapture.Compress(null), typeof(ArgumentNullException)); Assert.AreEqual(QuoteCapture.Compress(_quoteCapture).Count, 0); //重复数据在开始 _quoteCapture.Add(1, 1); _quoteCapture.Add(2, 1); _quoteCapture.Add(3, 1); _quoteCapture.Add(4, 2); var result = QuoteCapture.Compress(_quoteCapture); Assert.IsNotNull(result); Assert.AreEqual(result.Count, 3); Assert.AreEqual(result.Time[0], 1); Assert.AreEqual(result.Price[0], 1); Assert.AreEqual(result.Time[1], 3); Assert.AreEqual(result.Price[1], -1); Assert.AreEqual(result.Time[2], 4); Assert.AreEqual(result.Price[2], 2); //重复数据在末尾 _quoteCapture.Clear(); _quoteCapture.Add(1, 1); _quoteCapture.Add(2, 2); _quoteCapture.Add(3, 2); _quoteCapture.Add(4, 2); result = QuoteCapture.Compress(_quoteCapture); Assert.IsNotNull(result); Assert.AreEqual(result.Count, 3); Assert.AreEqual(result.Time[0], 1); Assert.AreEqual(result.Price[0], 1); Assert.AreEqual(result.Time[1], 2); Assert.AreEqual(result.Price[1], 2); Assert.AreEqual(result.Time[2], 4); Assert.AreEqual(result.Price[2], -1); //重复数据在中间 _quoteCapture.Clear(); _quoteCapture.Add(1, 1); _quoteCapture.Add(2, 2); _quoteCapture.Add(3, 2); _quoteCapture.Add(4, 2); _quoteCapture.Add(5, 3); result = QuoteCapture.Compress(_quoteCapture); Assert.IsNotNull(result); 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], 2); Assert.AreEqual(result.Time[2], 4); Assert.AreEqual(result.Price[2], -1); Assert.AreEqual(result.Time[3], 5); Assert.AreEqual(result.Price[3], 3); //复合数据 开始中间末尾都有重复数据 _quoteCapture.Clear(); _quoteCapture.Add(1, 1); _quoteCapture.Add(2, 1); _quoteCapture.Add(3, 1); _quoteCapture.Add(4, 2); _quoteCapture.Add(5, 2); _quoteCapture.Add(6, 2); _quoteCapture.Add(7, 2); _quoteCapture.Add(9, 2); _quoteCapture.Add(10, 3); _quoteCapture.Add(11, 3); _quoteCapture.Add(12, 3); result = QuoteCapture.Compress(_quoteCapture); Assert.IsNotNull(result); Assert.AreEqual(result.Count, 7); Assert.AreEqual(result.Time[0], 1); Assert.AreEqual(result.Price[0], 1); Assert.AreEqual(result.Time[1], 3); Assert.AreEqual(result.Price[1], -1); Assert.AreEqual(result.Time[2], 4); Assert.AreEqual(result.Price[2], 2); Assert.AreEqual(result.Time[3], 7); Assert.AreEqual(result.Price[3], -1); Assert.AreEqual(result.Time[4], 9); Assert.AreEqual(result.Price[4], 2); Assert.AreEqual(result.Time[5], 10); Assert.AreEqual(result.Price[5], 3); Assert.AreEqual(result.Time[6], 12); Assert.AreEqual(result.Price[6], -1); }
public void MethodInit() { _quoteCapture = new QuoteCapture("symbol0"); }