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