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); }