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

namespace XUnitTest.Security;

public class Crc16Tests
{
    [Fact]
    public void TestComputeWithByteArray()
    {
        var data = "123456789"u8.ToArray();
        var crc = Crc16.Compute(data);
        Assert.Equal(0x31C3, crc);
    }

    [Fact]
    public void TestComputeWithStream()
    {
        var data = "123456789"u8.ToArray();
        using var stream = new MemoryStream(data);
        var crc = Crc16.Compute(stream, -1);
        Assert.Equal(0x31C3, crc);
    }

    [Fact]
    public void TestComputeWithReadOnlySpan()
    {
        var data = "123456789"u8.ToArray();
        var crc = Crc16.Compute(new ReadOnlySpan<Byte>(data));
        Assert.Equal(0x31C3, crc);
    }

    [Fact]
    public void TestComputeModbusWithByteArray()
    {
        var data = "123456789"u8.ToArray();
        var crc = Crc16.ComputeModbus(data, 0);
        Assert.Equal(0x4B37, crc);
    }

    [Fact]
    public void TestComputeModbusWithStream()
    {
        var data = "123456789"u8.ToArray();
        using var stream = new MemoryStream(data);
        var crc = Crc16.ComputeModbus(stream);
        Assert.Equal(0x4B37, crc);
    }
}