public void records_can_be_read_backward_starting_from_any_position()
        {
            for (int i = 0; i < RecordsCount; ++i)
            {
                var seqReader = new TFChunkReader(_db, _db.Config.WriterCheckpoint, _records[i].LogPosition);

                SeqReadResult res;
                int count = 0;
                while ((res = seqReader.TryReadPrev()).Success)
                {
                    var rec = _records[i - count - 1];
                    Assert.AreEqual(rec, res.LogRecord);
                    Assert.AreEqual(rec.LogPosition, res.RecordPrePosition);
                    Assert.AreEqual(rec.LogPosition + rec.GetSizeWithLengthPrefixAndSuffix(), res.RecordPostPosition);

                    ++count;
                }
                Assert.AreEqual(i, count);
            }
        }
        public void all_records_could_be_read_doing_forward_backward_pass()
        {
            var seqReader = new TFChunkReader(_db, _db.Config.WriterCheckpoint, 0);

            SeqReadResult res;
            int count1 = 0;
            while ((res = seqReader.TryReadNext()).Success)
            {
                var rec = _records[count1];
                Assert.AreEqual(rec, res.LogRecord);
                Assert.AreEqual(rec.LogPosition, res.RecordPrePosition);
                Assert.AreEqual(rec.LogPosition + rec.GetSizeWithLengthPrefixAndSuffix(), res.RecordPostPosition);

                ++count1;
            }
            Assert.AreEqual(RecordsCount, count1);

            int count2 = 0;
            while ((res = seqReader.TryReadPrev()).Success)
            {
                var rec = _records[RecordsCount - count2 - 1];
                Assert.AreEqual(rec, res.LogRecord);
                Assert.AreEqual(rec.LogPosition, res.RecordPrePosition);
                Assert.AreEqual(rec.LogPosition + rec.GetSizeWithLengthPrefixAndSuffix(), res.RecordPostPosition);

                ++count2;
            }
            Assert.AreEqual(RecordsCount, count2);
        }