public void CreateStreamTest()
        {
            const string symbol = "Symbol";
            const string column = "Column";

            var mockStream1   = new MockStream(3);
            var mockDbUpdater = Substitute.For <ITimeSeriesDbUpdater>();

            mockDbUpdater.CreateColumnWriter(Arg.Any <string>(), Arg.Any <ColumnInfo>(), Arg.Any <DateTime>())
            .Returns(mockStream1);
            var allocator = new DummyPinnedAllocator();

            var recorder = new TimeSeriesRecorder(
                symbol,
                mockDbUpdater,
                allocator);

            var now = "08:00:00";

            recorder.AddRow(now)
            .Record(column, 1)
            .Record(column, 2);

            mockDbUpdater.Received(1)
            .CreateColumnWriter(
                Arg.Is <string>(i => i == symbol),
                Arg.Is <ColumnInfo>(i => i.Name == column && i.Type == FieldType.Int32),
                Arg.Is <DateTime>(i => i == "08:00:00".ToDateTime()));

            mockDbUpdater.ClearReceivedCalls();
            mockStream1.CheckCallsThenClear();

            now = "08:00:01";

            recorder.AddRow(now)
            .Record(column, 3)
            .Record(column, 4)
            .Record(column, 5);

            mockDbUpdater.ClearReceivedCalls();
            mockStream1.CheckCallsThenClear();

            mockStream1.CheckData(E("08:00:00", 1), E("08:00:00", 2), E("08:00:01", 3), E("08:00:01", 4), E("08:00:01", 5));

            now = "08:00:02";
            recorder.AddRow(now)
            .Record(column, 6);

            recorder.Commit();
            mockStream1.CheckCallsThenClear(1, 0, 1);

            var columns = new[] { C(column, FieldType.Int32, "08:00:00", "08:00:02") };

            mockDbUpdater.Received(1).Commit(
                Arg.Is <string>(i => i == symbol),
                Arg.Is <ColumnCommit[]>(i => IsEqual(i, columns)));
        }