using Xunit; using YZWater.Core.Models; using YZWater.Core.Services; namespace YZWater.Core.Tests.Services; /// /// 自动控制服务集成测试 /// 使用 MockPlcService 模拟 PLC 数据 /// public class AutoControlIntegrationTests { [Fact] public void AutoControlService_ShouldBeCreated() { var service = AutoControlService.Instance; Assert.NotNull(service); } [Fact] public void AutoControlService_DefaultSettings() { var service = AutoControlService.Instance; Assert.True(service.IsEnabled); Assert.Equal(60, service.MinIntervalSeconds); Assert.Equal(3, service.StartDelaySeconds); Assert.Equal(5, service.StopDelaySeconds); Assert.True(service.EnablePumpRotation); } [Fact] public void AutoControlService_CanToggleEnabled() { var service = AutoControlService.Instance; var original = service.IsEnabled; service.IsEnabled = false; Assert.False(service.IsEnabled); service.IsEnabled = original; } [Fact] public void MockPlcService_ShouldBeToggleable() { var wasEnabled = MockPlcService.IsEnabled; MockPlcService.Enable(); Assert.True(MockPlcService.IsEnabled); // Note: MockPlcService 没有 Disable 方法,只能 Enable // Restore original state if needed } [Fact] public void MockPlcService_ShouldGenerateData() { MockPlcService.Enable(); var data = new PlcDataModel(); MockPlcService.UpdateData(data); // Mock 模式应生成模拟数据 Assert.True(data.IsDataValid || data.LastReadTime > DateTime.MinValue); } }