Пример #1
0
        public void EnumerateEvents()
        {
            var array = new byte[22];
            var spanToRead = array.AsSpan();
            var payloadLength = 2;
            BitConverter.TryWriteBytes(spanToRead.Slice(sizeof(ulong)), payloadLength);

            BitConverter.TryWriteBytes(spanToRead.Slice(sizeof(ulong) + sizeof(int) + payloadLength), 100);
            var consumption = 1 << 31 | 200;
            BitConverter.TryWriteBytes(spanToRead.Slice(sizeof(ulong) + sizeof(int) + payloadLength 
                                                         + BlockEvent.SizeInBytes), consumption);


            var iterator = PayloadReader.GetEvents(spanToRead);
            Assert.Equal(new BlockAlias(100), iterator.Current.BlockAlias);
            Assert.Equal(BlockEventType.Production, iterator.Current.Type);
            iterator.MoveNext();
            Assert.Equal(new BlockAlias(200), iterator.Current.BlockAlias);
            Assert.Equal(BlockEventType.Consumption, iterator.Current.Type);
            iterator.MoveNext();
            Assert.False(iterator.EndNotReached);
        }
Пример #2
0
 public void ReadEventsSpanTooShort()
 {
     var spanToRead = new byte[13];
     BitConverter.TryWriteBytes(new Span<byte>(spanToRead).Slice(sizeof(ulong)), 2);
     Assert.Throws<ArgumentException>(() => PayloadReader.GetEvents(spanToRead).Current);
 }