File: VariableIntHelperTests.cs
Web Access
Project: src\src\Servers\Kestrel\Core\test\Microsoft.AspNetCore.Server.Kestrel.Core.Tests.csproj (Microsoft.AspNetCore.Server.Kestrel.Core.Tests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System;
using System.Buffers;
using System.Net.Http;
using Xunit;
 
namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests;
 
public class VariableIntHelperTests
{
    [Theory]
    [MemberData(nameof(IntegerData))]
    public void CheckDecoding(long expected, byte[] input)
    {
        var decoded = VariableLengthIntegerHelper.GetInteger(new ReadOnlySequence<byte>(input), out _, out _);
        Assert.Equal(expected, decoded);
    }
 
    [Theory]
    [MemberData(nameof(IntegerData))]
    public void CheckEncoding(long input, byte[] expected)
    {
        var outputBuffer = new Span<byte>(new byte[8]);
        var encodedLength = VariableLengthIntegerHelper.WriteInteger(outputBuffer, input);
        Assert.Equal(expected.Length, encodedLength);
        for (var i = 0; i < expected.Length; i++)
        {
            Assert.Equal(expected[i], outputBuffer[i]);
        }
    }
 
    public static TheoryData<long, byte[]> IntegerData
    {
        get
        {
            var data = new TheoryData<long, byte[]>();
 
            data.Add(151288809941952652, new byte[] { 0xc2, 0x19, 0x7c, 0x5e, 0xff, 0x14, 0xe8, 0x8c });
            data.Add(494878333, new byte[] { 0x9d, 0x7f, 0x3e, 0x7d });
            data.Add(15293, new byte[] { 0x7b, 0xbd });
            data.Add(37, new byte[] { 0x25 });
 
            return data;
        }
    }
}