解决MySql布尔型新旧版本兼容问题,采用枚举来表示布尔型的数据表。由正向工程赋值
大石头 authored at 2018-05-15 21:21:05
1.55 KiB
X
using NewLife.Serialization;
using Xunit;

namespace XUnitTest.Serialization;

/// <summary>XML解析器测试</summary>
public class XmlParserTests
{
    [Fact(DisplayName = "解析简单XML")]
    public void ParseSimpleXml()
    {
        var xml = @"<?xml version=""1.0"" encoding=""utf-8""?>
<root>
    <name>NewLife</name>
    <value>123</value>
</root>";

        var dic = XmlParser.Decode(xml);
        Assert.NotNull(dic);
        Assert.Equal("NewLife", dic["name"]);
        Assert.Equal("123", dic["value"]);
    }

    [Fact(DisplayName = "解析嵌套XML")]
    public void ParseNestedXml()
    {
        var xml = @"<Config>
    <App>
        <Id>1</Id>
        <Name>Test</Name>
    </App>
    <Debug>true</Debug>
</Config>";

        var dic = XmlParser.Decode(xml);
        Assert.NotNull(dic);

        // App 应为嵌套字典
        var app = dic["App"] as IDictionary<String, Object?>;
        Assert.NotNull(app);
        Assert.Equal("1", app!["Id"]);
        Assert.Equal("Test", app["Name"]);

        Assert.Equal("true", dic["Debug"]);
    }

    [Fact(DisplayName = "解析带属性的XML")]
    public void ParseAttributes()
    {
        var xml = @"<Response>
    <Status Code=""200"" />
</Response>";

        var dic = XmlParser.Decode(xml);
        Assert.NotNull(dic);
        // 属性值被读取到字典中
        Assert.Equal("200", dic["Code"]);
    }

    [Fact(DisplayName = "解析空XML抛出异常")]
    public void ParseEmptyThrowsException()
    {
        Assert.Throws<System.Xml.XmlException>(() => XmlParser.Decode(""));
    }
}