public async Task ReadAsync_SmallDataSingleRead_Success()
        {
            // Arrange
            var data = Encoding.UTF8.GetBytes("Hello world");

            var ms           = new MemoryStream(Encoding.UTF8.GetBytes(Convert.ToBase64String(data)));
            var base64Stream = new Base64ResponseStream(ms);

            // Act
            var buffer = new byte[1024];
            var read   = await base64Stream.ReadAsync(buffer);

            // Assert
            Assert.AreEqual(read, data.Length);
            CollectionAssert.AreEqual(data, data.AsSpan(0, read).ToArray());
        }
        public async Task ReadAsync_VariableReadSize_Success(string message, int readSize)
        {
            // Arrange
            var data = Encoding.UTF8.GetBytes(message);

            var ms           = new MemoryStream(Encoding.UTF8.GetBytes(Convert.ToBase64String(data)));
            var base64Stream = new Base64ResponseStream(ms);

            // Act
            var allData = new List <byte>();
            var buffer  = new byte[readSize];

            int read;

            while ((read = await base64Stream.ReadAsync(buffer)) > 0)
            {
                allData.AddRange(buffer.AsSpan(0, read).ToArray());
            }
            var readData = allData.ToArray();

            // Assert
            CollectionAssert.AreEqual(data, readData);
        }