private static IDisposable CreateDb(out ITimeSeriesDb db) { var fpp = new FilePathProviderExt(Guid.NewGuid().ToString("N")); var allocator = new DummyUnmanagedAllocator(); db = new FileTimeSeriesDb(fpp, allocator); return(Disposable.Create(() => { fpp.Dispose(); allocator.Dispose(); })); }
public void MoveNextTest() { var bid = new List <DoubleEntry>() .Add("08:00:00", 12.2) .Add("08:00:01", 12.3) .Add("08:00:02", 12.4) .Add("08:00:03", 12.5) .Add("08:00:04", 12.6) .ToArray(); var bsize = new List <Int32Entry>() .Add("08:00:00", 1e6) .Add("08:00:02", 2e6) .ToArray(); var ask = new List <DoubleEntry>() .Add("08:00:00", 13.2) .Add("08:00:02", 13.3) .Add("08:00:04", 13.4) .ToArray(); var asize = new List <Int32Entry>() .Add("08:00:00", 2e6) .Add("08:00:04", 1e6) .ToArray(); var snapshots = new SnapshotTimeSerie(1, 2, 3, 4) .Snap("07:59:58", "Min", "08:00:00", double.NaN, 0, double.NaN, 0) .Snap("07:59:59", "Min", "08:00:00", double.NaN, 0, double.NaN, 0) .Snap("08:00:00", "08:00:00", "08:00:01", 12.2, 1e6, 13.2, 2e6) .Snap("08:00:00.500", "08:00:00", "08:00:01", 12.2, 1e6, 13.2, 2e6) .Snap("08:00:00.700", "08:00:00", "08:00:01", 12.2, 1e6, 13.2, 2e6) .Snap("08:00:01.200", "08:00:01", "08:00:02", 12.3, 1e6, 13.2, 2e6) .Snap("08:00:03.900", "08:00:03", "08:00:04", 12.5, 2e6, 13.3, 2e6) .Snap("08:00:04", "08:00:04", "Max", 12.6, 2e6, 13.4, 1e6) .Snap("08:00:05", "08:00:04", "Max", 12.6, 2e6, 13.4, 1e6) .Snap("08:00:06", "08:00:04", "Max", 12.6, 2e6, 13.4, 1e6); var allocator = new DummyUnmanagedAllocator(); const int blockSize = 8192; try { #region Prepare streams // Create streams var streams = new Dictionary <int, IColumnStream> { { 1, CreateColumnStream(new VoidCodecFullStream(), allocator, blockSize) }, { 2, CreateColumnStream(new VoidCodecFullStream(), allocator, blockSize) }, { 3, CreateColumnStream(new VoidCodecFullStream(), allocator, blockSize) }, { 4, CreateColumnStream(new VoidCodecFullStream(), allocator, blockSize) } }; // Fill streams streams[1].Write(bid); streams[2].Write(bsize); streams[3].Write(ask); streams[4].Write(asize); // Reset streams foreach (var stream in streams.Values) { stream.Flush(); stream.Reset(); } #endregion var fieldCursors = new Dictionary <string, IColumnCursor> { { "1", new ColumnCursor <DoubleEntry, double, IColumnStream>(allocator, streams[1]) }, { "2", new ColumnCursor <Int32Entry, int, IColumnStream>(allocator, streams[2]) }, { "3", new ColumnCursor <DoubleEntry, double, IColumnStream>(allocator, streams[3]) }, { "4", new ColumnCursor <Int32Entry, int, IColumnStream>(allocator, streams[4]) }, }; var cursor = new TimeSeriesCursor(fieldCursors); snapshots.RunMoveNext(cursor); } finally { allocator.Dispose(); } }