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); + } + } +}