public void ReadTwoInts()
        {
            using (var buffer = new HeapBuffer(8))
            {
                for (ulong i = 0; i < 8; i++)
                {
                    buffer[i] = (byte)(i + 1);
                }

                var reader = new CheckedReader(buffer);
                reader.ReadInt().Should().Be(0x04030201);
                reader.ReadInt().Should().Be(0x08070605);
            }
        }
 public void ReadIntInCapacityPasses()
 {
     using (var buffer = new HeapBuffer(4))
     {
         var reader = new CheckedReader(buffer);
         reader.ByteOffset = buffer.ByteCapacity - 4;
         reader.ReadInt();
     }
 }
        public void ReadInt(ulong offset, int expected)
        {
            using (var buffer = new HeapBuffer(8))
            {
                for (ulong i = 0; i < 8; i++)
                {
                    buffer[i] = (byte)(i + 1);
                }

                var reader = new CheckedReader(buffer);
                reader.ByteOffset = offset;
                reader.ReadInt().Should().Be(expected, $"offset is {offset}");
            }
        }
        public void ReadIntPastCapacityFails()
        {
            using (var buffer = new HeapBuffer(sizeof(int)))
            {
                var reader = new CheckedReader(buffer);

                Action action = () => reader.ReadInt();

                for (uint i = 1; i < sizeof(int); i++)
                {
                    reader.ByteOffset = buffer.ByteCapacity - i;
                    action.Should().Throw <System.IO.EndOfStreamException>();
                }
            }
        }