From 455e452ec2c048c4ee0118aaab55ae286039e22d Mon Sep 17 00:00:00 2001 From: "zhengxuan.zhang" Date: Thu, 14 May 2026 20:28:31 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=B5=8B=E8=AF=95=E7=94=A8?= =?UTF-8?q?=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/CncProgramServiceTests.cs | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 XplorePlane.Tests/Services/CncProgramServiceTests.cs diff --git a/XplorePlane.Tests/Services/CncProgramServiceTests.cs b/XplorePlane.Tests/Services/CncProgramServiceTests.cs new file mode 100644 index 0000000..0656f42 --- /dev/null +++ b/XplorePlane.Tests/Services/CncProgramServiceTests.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using Moq; +using XP.Common.Logging.Interfaces; +using XP.Hardware.RaySource.Services; +using XplorePlane.Models; +using XplorePlane.Services.AppState; +using XplorePlane.Services.Cnc; +using Xunit; + +namespace XplorePlane.Tests.Services +{ + public class CncProgramServiceTests + { + [Fact] + public void SerializeDeserialize_SavePosition_PreservesSaveImage() + { + var appState = new Mock(); + appState.SetupGet(s => s.MotionState).Returns(MotionState.Default); + appState.SetupGet(s => s.RaySourceState).Returns(RaySourceState.Default); + appState.SetupGet(s => s.DetectorState).Returns(DetectorState.Default); + + var raySource = new Mock(); + var logger = new Mock(); + logger.Setup(l => l.ForModule()).Returns(logger.Object); + + var service = new CncProgramService(appState.Object, raySource.Object, logger.Object); + var program = new CncProgram( + Guid.NewGuid(), + "Program", + DateTime.UtcNow, + DateTime.UtcNow, + new List + { + new SavePositionNode(Guid.NewGuid(), 0, "保存位置_0", MotionState.Default, SaveImage: true) + }.AsReadOnly()); + + var json = service.Serialize(program); + var deserialized = service.Deserialize(json); + + var savePosition = Assert.IsType(Assert.Single(deserialized.Nodes)); + Assert.True(savePosition.SaveImage); + } + } +}