优化Crc32/Crc16,增加Span计算,测试用例全覆盖;Binary增加Span写入;
大石头 authored at 2024-12-12 18:01:14
2.09 KiB
X
using NewLife.Security;
using Xunit;

namespace XUnitTest.Security;

public class Crc32Tests
{
    [Fact]
    public void Compute_ByteArray_ReturnsExpectedCrc()
    {
        Byte[] data = { 1, 2, 3, 4, 5 };
        var expectedCrc = 0x470B99F4u;

        var actualCrc = Crc32.Compute(data);

        Assert.Equal(expectedCrc, actualCrc);
    }

    [Fact]
    public void Compute_ReadOnlySpan_ReturnsExpectedCrc()
    {
        Byte[] data = { 1, 2, 3, 4, 5 };
        var expectedCrc = 0x470B99F4u;

        var actualCrc = Crc32.Compute(new ReadOnlySpan<Byte>(data));

        Assert.Equal(expectedCrc, actualCrc);
    }

    [Fact]
    public void Compute_Stream_ReturnsExpectedCrc()
    {
        Byte[] data = { 1, 2, 3, 4, 5 };
        var expectedCrc = 0x470B99F4u;

        using var stream = new MemoryStream(data);
        var actualCrc = Crc32.Compute(stream);

        Assert.Equal(expectedCrc, actualCrc);
    }

    [Fact]
    public void ComputeRange_Stream_ReturnsExpectedCrc()
    {
        Byte[] data = { 1, 2, 3, 4, 5 };
        var expectedCrc = 0x470B99F4u;

        using var stream = new MemoryStream(data);
        var actualCrc = Crc32.ComputeRange(stream, 0, data.Length);

        Assert.Equal(expectedCrc, actualCrc);
    }

    [Fact]
    public void Update_ByteArray_ReturnsExpectedCrc()
    {
        Byte[] data = { 1, 2, 3, 4, 5 };
        var expectedCrc = 0x470B99F4u;

        var crc32 = new Crc32();
        crc32.Update(data);

        Assert.Equal(expectedCrc, crc32.Value);
    }

    [Fact]
    public void Update_ReadOnlySpan_ReturnsExpectedCrc()
    {
        Byte[] data = { 1, 2, 3, 4, 5 };
        var expectedCrc = 0x470B99F4u;

        var crc32 = new Crc32();
        crc32.Update(new ReadOnlySpan<Byte>(data));

        Assert.Equal(expectedCrc, crc32.Value);
    }

    [Fact]
    public void Update_Stream_ReturnsExpectedCrc()
    {
        Byte[] data = { 1, 2, 3, 4, 5 };
        var expectedCrc = 0x470B99F4u;

        using var stream = new MemoryStream(data);
        var crc32 = new Crc32();
        crc32.Update(stream);

        Assert.Equal(expectedCrc, crc32.Value);
    }
}