public void Backward()
        {
            var log = new OpDataPersister(Cfg4Mb);

            log.Append(ToBytes(1));
            log.Append(ToBytes(2));
            log.Append(ToBytes(3));
            log.Append(ToBytes(4));
            log.Append(ToBytes(5));

            var iter = log.Backward().GetEnumerator(); ;

            iter.MoveNext();
            Assert.That(ToInt(iter.Current.Payload), Is.EqualTo(5));

            iter.MoveNext();
            Assert.That(ToInt(iter.Current.Payload), Is.EqualTo(4));

            iter.MoveNext();
            Assert.That(ToInt(iter.Current.Payload), Is.EqualTo(3));

            iter.MoveNext();
            Assert.That(ToInt(iter.Current.Payload), Is.EqualTo(2));

            iter.MoveNext();
            Assert.That(ToInt(iter.Current.Payload), Is.EqualTo(1));
        }
        public void Backward_a_slice()
        {
            var log = new OpDataPersister(Cfg4Mb);

            log.Append(ToBytes(1));
            log.Append(ToBytes(2));
            log.Append(ToBytes(3));
            log.Append(ToBytes(4));
            log.Append(ToBytes(5));

            var items = new List<int>();

            foreach (var v in log.Backward(int.MaxValue, 2))
                items.Add(BitConverter.ToInt32(v.Payload, 0));

            Assert.That(items[0], Is.EqualTo(5));
            Assert.That(items[1], Is.EqualTo(4));

            Assert.That(items.Count, Is.EqualTo(2));
        }
        public void Backward_from_position()
        {
            var log = new OpDataPersister(Cfg4Mb);
            log.Append(ToBytes(14));
            log.Append(ToBytes(2));
            var idx = log.Append(ToBytes(34));
            log.Append(ToBytes(234));
            log.Append(ToBytes(455));

            var iter = log.Backward(idx).GetEnumerator(); ;

            iter.MoveNext();
            Assert.That(ToInt(iter.Current.Payload), Is.EqualTo(34));

            iter.MoveNext();
            Assert.That(ToInt(iter.Current.Payload), Is.EqualTo(2));

            iter.MoveNext();
            Assert.That(ToInt(iter.Current.Payload), Is.EqualTo(14));

            Assert.That(iter.MoveNext(), Is.False);
        }
        public void ListBackwardTest()
        {
            var wr = new OpDataPersister(Cfg4K);

             for (int i = 0; i < 100; i++)
                 wr.Append(BitConverter.GetBytes(i));

             wr.Dispose();

             var rd = new OpDataPersister(Cfg4K);

             long prev = long.MaxValue;

             foreach (var op in rd.Backward())
             {
                 var position = op.Position;

                 Assert.That(position, Is.LessThan(prev));

                 Console.WriteLine(op.Position + " " + BitConverter.ToInt32(op.Payload, 0));

                 prev = position;
             }
        }