From a1f5693180012f2eb05febead7d6a5eb4c27a97e Mon Sep 17 00:00:00 2001 From: DHR60 Date: Tue, 5 May 2026 16:28:16 +0800 Subject: [PATCH] Add tests --- v2rayN/ServiceLib.Tests/Fmt/InnerFmtTests.cs | 37 ++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 v2rayN/ServiceLib.Tests/Fmt/InnerFmtTests.cs diff --git a/v2rayN/ServiceLib.Tests/Fmt/InnerFmtTests.cs b/v2rayN/ServiceLib.Tests/Fmt/InnerFmtTests.cs new file mode 100644 index 00000000..91df67f4 --- /dev/null +++ b/v2rayN/ServiceLib.Tests/Fmt/InnerFmtTests.cs @@ -0,0 +1,37 @@ +using AwesomeAssertions; +using ServiceLib.Enums; +using ServiceLib.Handler.Fmt; +using ServiceLib.Tests.CoreConfig; +using Xunit; + +namespace ServiceLib.Tests.Fmt; + +public class InnerFmtTests +{ + [Fact] + public void ToUriAndResolve_ShouldRoundTripPolicyGroupReferences() + { + var childA = CoreConfigTestFactory.CreateSocksNode(ECoreType.Xray, "child-a", "child-a"); + var childB = CoreConfigTestFactory.CreateVmessNode(ECoreType.Xray, "child-b", "child-b"); + var group = CoreConfigTestFactory.CreatePolicyGroupNode(ECoreType.Xray, "group-1", "group-1", + [childA.IndexId, childB.IndexId]); + group.SetProtocolExtra(group.GetProtocolExtra() with { SubChildItems = "original-sub" }); + + var uri = InnerFmt.ToUri([group, childA, childB]); + + uri.Should().NotBeNullOrWhiteSpace(); + + var resolved = InnerFmt.Resolve(uri!, "sub-123"); + + resolved.Should().NotBeNull(); + resolved.Should().HaveCount(3); + + var resolvedGroup = resolved!.Single(x => x.Remarks == group.Remarks); + var resolvedChildA = resolved.Single(x => x.Remarks == childA.Remarks); + var resolvedChildB = resolved.Single(x => x.Remarks == childB.Remarks); + + resolvedGroup.ConfigType.Should().Be(EConfigType.PolicyGroup); + resolvedGroup.GetProtocolExtra().SubChildItems.Should().Be("sub-123"); + resolvedGroup.GetProtocolExtra().ChildItems.Should().Be($"{resolvedChildA.IndexId},{resolvedChildB.IndexId}"); + } +}