feat(cordis): 完成阶段5访问介导与诊断
This commit is contained in:
@@ -95,6 +95,40 @@ namespace ShrinkContext.Tests
|
||||
Assert.AreEqual(1, rootValueFinal);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TypedKey_PreservesVersionedIdentityAcrossMediatedAccess()
|
||||
{
|
||||
var key = new ShrinkKey<string>("test.package", "typed-service", 2);
|
||||
Assert.AreEqual("test.package/typed-service@v2", key.Id);
|
||||
|
||||
_runtime.Use(new PolicyProviderComponent(key.Id), "typed-value");
|
||||
var consumer = _runtime.Use(new PolicyConsumerComponent(key.Id));
|
||||
|
||||
Assert.AreEqual(ShrinkFiberState.Active, consumer.State);
|
||||
Assert.AreEqual("typed-value", consumer.Ctx.Get(key));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Intercept_MergesRootToLeafAndChildMetadataWins()
|
||||
{
|
||||
const string key = "policy.service";
|
||||
_runtime.Use(new PolicyProviderComponent(key), "value");
|
||||
var consumer = _runtime.Use(new PolicyConsumerComponent(key));
|
||||
Assert.AreEqual(ShrinkFiberState.Active, consumer.State);
|
||||
|
||||
var parent = consumer.Ctx.Intercept(key, new Dictionary<string, object?>
|
||||
{
|
||||
["prefix"] = "parent-",
|
||||
["suffix"] = "-parent"
|
||||
});
|
||||
var child = parent.Intercept(key, new Dictionary<string, object?>
|
||||
{
|
||||
["suffix"] = "-child"
|
||||
});
|
||||
|
||||
Assert.AreEqual("parent-value-child", child.Get<string>(key));
|
||||
}
|
||||
|
||||
/// <summary>声明一个键却访问另一个未声明键的组件(验证能力介导纪律)。</summary>
|
||||
private sealed class GreedyConsumerComponent : IShrinkComponent
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user