From 559890c482f5973f06aafdfec9550fee5ba3c7f2 Mon Sep 17 00:00:00 2001
From: wenxiangchao <wenxiangchao@ihengxin.com.cn>
Date: 星期一, 09 十一月 2026 17:02:15 +0800
Subject: [PATCH] feat: CAN 模拟器 TCP 化 + 多设备并发调试 + 后台生命周期管理
---
tests/Aging.MvpTests/ContractSerializeTests.cs | 39 +++++++++++++++++++++++++++++++++++++++
1 files changed, 39 insertions(+), 0 deletions(-)
diff --git a/tests/Aging.MvpTests/ContractSerializeTests.cs b/tests/Aging.MvpTests/ContractSerializeTests.cs
new file mode 100644
index 0000000..c5faff0
--- /dev/null
+++ b/tests/Aging.MvpTests/ContractSerializeTests.cs
@@ -0,0 +1,39 @@
+using System.Text.Json;
+using Aging.ResourceContracts;
+using Xunit;
+
+namespace Aging.MvpTests
+{
+ public class ContractSerializeTests
+ {
+ [Fact]
+ public void LeaseGrant_RoundTrips_Json()
+ {
+ var g = new LeaseGrant("broker-b01", "can/can02", "lease_abc",
+ "W01.RunA", OwnerTypeV3.Maintenance, epoch: 7, generation: 42,
+ expiresUtcMs: 1793673600000);
+ var json = JsonSerializer.Serialize(g);
+ var back = JsonSerializer.Deserialize<LeaseGrant>(json)!;
+ Assert.Equal(g.Generation, back.Generation);
+ Assert.Equal(g.Epoch, back.Epoch);
+ Assert.Equal(g.LeaseId, back.LeaseId);
+ Assert.Equal(g.OwnerType, back.OwnerType);
+ }
+
+ [Fact]
+ public void IpcEnvelope_Carries_BodyAndIdentity()
+ {
+ var e = new IpcEnvelope
+ {
+ ProtocolVersion = 1, MessageType = "SubmitTask",
+ RequestId = "req-1", ClientInstanceId = "hmi/bootA/123",
+ AuthorityId = "broker-b01", ConfigHash = "sha256:x",
+ BodyJson = "{\"operationCode\":\"SEND\"}"
+ };
+ var json = JsonSerializer.Serialize(e);
+ var back = JsonSerializer.Deserialize<IpcEnvelope>(json)!;
+ Assert.Equal("SubmitTask", back.MessageType);
+ Assert.Equal("sha256:x", back.ConfigHash);
+ }
+ }
+}
--
Gitblit v1.9.1