Files
懒得勤快 a91befb5f4 1. 修正ChineseCalendar计算干支日不正确的bug
2. 重构 ImageBorderRemover.cs,增强参数校验与异常处理,提升多层边框检测准确性,支持浅色背景自动识别,优化性能与颜色比较,移除灰度化处理,结构更清晰。
3. 增强HtmlDiff,新增 maxUnchangedLength 参数与辅助方法,优化 diff 合并逻辑,保持兼容性。
2026-09-15 10:14:58 +08:00

85 lines
2.1 KiB
C#

using System;
using System.Collections.Generic;
using Masuit.Tools.Dynamics;
using Masuit.Tools.Extension.Object;
using Xunit;
namespace Masuit.Tools.Abstractions.Test.Extensions;
public class DynamicObjectTest
{
[Fact]
public void Can_Dynamic()
{
var obj = DynamicFactory.NewObject();
obj.Name = "Masuit";
obj.Age = 18;
obj.MyClass = DynamicFactory.WithObject(new
{
X = 10,
Y = 20,
Z = new List<int> { 1, 2, 3, 4, 5 }
});
Assert.Equal(obj.Name, obj["Name"]);
Assert.Equal(obj["MyClass"]["X"], obj.MyClass.X);
Assert.Equal(obj.MyClass.Z[2], obj["MyClass"]["Z"][2]);
}
[Fact]
public void Can_ToDynamic()
{
var obj = new
{
Name = "Masuit"
}.ToDynamic();
obj.Age = 18;
obj.MyClass = new
{
X = 10,
Y = 20,
Z = new List<int> { 1, 2, 3, 4, 5 }
}.ToDynamic();
obj.Prop = "test";
_ = obj - "Prop";
Assert.Equal(obj.Name, obj["Name"]);
Assert.Equal(obj["MyClass"]["X"], obj.MyClass.X);
Assert.IsType<Clay>(obj.Prop);
}
[Fact]
public void NewObject_ShouldCreateDynamicObject()
{
dynamic obj = DynamicFactory.NewObject();
obj.Name = "Test";
Assert.Equal("Test", obj.Name);
}
[Fact]
public void WithObject_ShouldWrapExistingObject()
{
var existingObject = new { Name = "Test" };
dynamic obj = DynamicFactory.WithObject(existingObject);
Assert.Equal("Test", obj.Name);
}
[Fact]
public void NewObject_ShouldAllowAddingProperties()
{
dynamic obj = DynamicFactory.NewObject();
obj.Name = "Test";
obj.Age = 30;
Assert.Equal("Test", obj.Name);
Assert.Equal(30, obj.Age);
}
[Fact]
public void WithObject_ShouldAllowAddingPropertiesToExistingObject()
{
var existingObject = new { Name = "Test" };
dynamic obj = DynamicFactory.WithObject(existingObject);
obj.Age = 30;
Assert.Equal("Test", obj.Name);
Assert.Equal(30, obj.Age);
}
}