public void キャンドルを追加できること() { var entry = new ChartEntryEntity() { Symbol = "USD_JPY", Range = ChartRange.Hourly }; entry.Candles.Add(new CandleEntity() { Time = DateTime.Now, Open = 2, High = 4, Low = 1, Close = 3, Volume = 5, }); using (var context = new CandleChartStore()) { context.ChartEntries.Add(entry); context.SaveChanges(); } using (var context = new CandleChartStore()) { var chart = context.ChartEntries.Find(entry.Id); context.Entry(chart).Collection(ce => ce.Candles).Load(); Assert.IsNotNull(chart.Candles.FirstOrDefault()); } }
public void Teardown() { using (var context = new CandleChartStore()) { context.Database.EnsureDeleted(); } }
public void ストアに登録済みのデータが存在する場合に終了時刻のみを指定してフェッチするとプロバイダーからデータを取得しない() { var symbol = new TradingSymbol("USD_JPY"); var range = ChartRange.Daily; var chart = new CandleChart(symbol, range); var from = new DateTime(2017, 12, 1, 0, 0, 0, DateTimeKind.Utc); var to = from.AddDays(10); var candles = Seeds.CreateRomdomCandles(from, to, range); // プロバイダーのセットアップ var provider = new MockCandleProvider(); provider.SetCandle(range, candles); // ストアは空 using (var store = new CandleChartStore(new DbContextOptionsBuilder() .UseInMemoryDatabase("CandleChartUpdaterTestDb4") .Options)) { // ストアに保存 var entry = store.FindOrCreateEntry(symbol, range); store.AddCandles(entry, from, to, candles.ToArray()); var chartUpdater = new CandleChartUpdater(chart, store, provider); chartUpdater.Update(from, 1); chartUpdater.Update(to); Assert.AreEqual(11, store.Candles.Count()); Assert.IsFalse(provider.ProvidedCandles.Any()); } }
public CandleChartUpdater(CandleChart chart, CandleChartStore store, ICandleProvider provider) { this.chart = chart; this.store = store; this.provider = provider; this.entry = new Lazy <ChartEntryEntity>(() => store.FindOrCreateEntry(chart.Symbol, chart.Range)); }
public void Setup() { using (var context = new CandleChartStore()) { context.Database.EnsureDeleted(); CandleStoreInitializer.Initialize(context); } }
public void チャートエントリを追加できること() { var entry = new ChartEntryEntity() { Symbol = "USD_JPY", Range = ChartRange.Hourly }; using (var context = new CandleChartStore()) { context.ChartEntries.Add(entry); context.SaveChanges(); } using (var context = new CandleChartStore()) { Assert.IsNotNull(context.ChartEntries.Find(entry.Id)); } }
public void ストアにデータが存在しない場合に取得数を指定してフェッチするとプロバイダーからデータを取得する() { var symbol = new TradingSymbol("USD_JPY"); var range = ChartRange.Daily; var chart = new CandleChart(symbol, range); var to = new DateTime(2017, 12, 10, 0, 0, 0, DateTimeKind.Utc); var candles = Seeds.CreateRomdomCandles(to.AddDays(-20), to, range); // プロバイダーのセットアップ var provider = new MockCandleProvider(); provider.SetCandle(range, candles); // ストアは空 using (var store = new CandleChartStore(new DbContextOptionsBuilder() .UseInMemoryDatabase("CandleChartUpdaterTestDb1") .Options)) { var chartUpdater = new CandleChartUpdater(chart, store, provider); chartUpdater.Update(to, 10); Assert.AreEqual(10, store.Candles.Count()); } }
public static void Initialize(CandleChartStore context) { context.Database.EnsureCreated(); }