public void Series_fulltest() { IAccountDA accDA = new AccountDAMock(); SeriesData sd = new SeriesData(accDA); int accID = 10; // создали серию int sid = sd.OpenSeries("key1"); // записали туда числа DateTime d = new DateTime(2019, 1, 1); sd.AddSeriesValue(sid, d, 100); // сохранили sd.SetAccount(accID); sd.SaveData(); // загрузили SeriesData sd1 = new SeriesData(accDA); sd1.LoadData(accID); // создали новую серию int sid1 = sd1.OpenSeries("key1"); // старая int sid2 = sd1.OpenSeries("key2"); // новая // записали числа в старую серию sd1.AddSeriesValue(sid1, d, 200); // записали числа в новую серию sd1.AddSeriesValue(sid2, d, 300); // сохранили sd1.SaveData(); // загрузили SeriesData sd3 = new SeriesData(accDA); sd3.LoadData(accID); // проверяем var series = accDA.GetSeries(accID).ToList(); Assert.Equal(2, series.Count); var s1_ = series.FirstOrDefault(s => s.Key == "key1"); var s2_ = series.FirstOrDefault(s => s.Key == "key2"); Assert.Equal(accID, s1_.AccountID); Assert.Equal(accID, s2_.AccountID); var sv1_ = accDA.GetValues(s1_.SeriesID).ToList(); Assert.Equal(2, sv1_.Count); var sv2_ = accDA.GetValues(s2_.SeriesID).ToList(); Assert.Single(sv2_); }
public void SubscribeValueRow_fulltest() { IAccountDA accDA = new AccountDAMock(); SeriesData sd = new SeriesData(accDA); int accID = 10; // создали серию и подписали на нее поток int sid = sd.OpenSeries("key1"); BarRow bars = new BarRow(Timeframes.Day, 1); sd.SubscribeValueRow(sid, bars.Close, bars.Dates); // в поток добавляем 10 значений DateTime d = new DateTime(2019, 1, 1, 10, 0, 0); for (int i = 0; i < 10; i++) { bars.AddTick(d, 100, 1); d = d.AddDays(1); } bars.CloseLastBar(); sd.SetAccount(accID); sd.SaveData(); // после сохранения sid уже не актуален, надо использовать series[0].SeriesID var series = accDA.GetSeries(accID).ToList(); Assert.Single(series); // серия одна var vals = accDA.GetValues(series[0].SeriesID).ToList(); Assert.True(vals.Count == 10); // в серии 10 значений // теперь отпишемся от потока sd.SubscribeValueRow(series[0].SeriesID, null, null); // в поток добавляем еще 10 значений for (int i = 0; i < 10; i++) { bars.AddTick(d, 200, 1); d = d.AddDays(1); } bars.CloseLastBar(); // снова запишем данные sd.SaveData(); var vals1 = accDA.GetValues(series[0].SeriesID).ToList(); Assert.True(vals1.Count == 10); // в серии по прежнему 10 значений }