[fix] 如果分隔符是 \u0001,则必须使用Ordinal,否则无法分割直接返回0。close: https://github.com/NewLifeX/NewLife.RocketMQ/issues/93
大石头 authored at 2025-02-02 22:39:53
1.84 KiB
NewLife.RocketMQ
using NewLife;
using NewLife.RocketMQ.Protocol;
using Xunit;

namespace XUnitTestRocketMQ;

public class MessageTests
{
    [Fact]
    public void SetBody_WithString_SetsBodyCorrectly()
    {
        // Arrange
        var message = new Message();
        var body = "Hello, World!";

        // Act
        message.SetBody(body);

        // Assert
        Assert.Equal(body, message.BodyString);
        Assert.Equal(body.GetBytes(), message.Body);
    }

    [Fact]
    public void SetBody_WithByteArray_SetsBodyCorrectly()
    {
        // Arrange
        var message = new Message();
        var body = new byte[] { 1, 2, 3, 4 };

        // Act
        message.SetBody(body);

        // Assert
        Assert.Equal(body, message.Body);
    }

    [Fact]
    public void GetProperties_ReturnsCorrectProperties()
    {
        // Arrange
        var message = new Message
        {
            Tags = "Tag1",
            Keys = "Key1",
            DelayTimeLevel = 2,
            WaitStoreMsgOK = false
        };

        // Act
        var properties = message.GetProperties();

        // Assert
        Assert.Contains("TAGS\u0001Tag1\u0002", properties);
        Assert.Contains("KEYS\u0001Key1\u0002", properties);
        Assert.Contains("DELAY\u00012\u0002", properties);
        Assert.Contains("WAIT\u0001False\u0002", properties);
    }

    [Fact]
    public void ParseProperties_SetsPropertiesCorrectly()
    {
        // Arrange
        var message = new Message();
        var properties = "TAGS\u0001Tag1\u0002KEYS\u0001Key1\u0002DELAY\u00012\u0002WAIT\u0001False\u0002";

        // Act
        var result = message.ParseProperties(properties);

        // Assert
        Assert.Equal("Tag1", message.Tags);
        Assert.Equal("Key1", message.Keys);
        Assert.Equal(2, message.DelayTimeLevel);
        Assert.False(message.WaitStoreMsgOK);
    }
}