AutoControlIntegrationTests.cs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. using Xunit;
  2. using YZWater.Core.Models;
  3. using YZWater.Core.Services;
  4. namespace YZWater.Core.Tests.Services;
  5. /// <summary>
  6. /// 自动控制服务集成测试
  7. /// 使用 MockPlcService 模拟 PLC 数据
  8. /// </summary>
  9. public class AutoControlIntegrationTests
  10. {
  11. [Fact]
  12. public void AutoControlService_ShouldBeCreated()
  13. {
  14. var service = AutoControlService.Instance;
  15. Assert.NotNull(service);
  16. }
  17. [Fact]
  18. public void AutoControlService_DefaultSettings()
  19. {
  20. var service = AutoControlService.Instance;
  21. Assert.True(service.IsEnabled);
  22. Assert.Equal(60, service.MinIntervalSeconds);
  23. Assert.Equal(3, service.StartDelaySeconds);
  24. Assert.Equal(5, service.StopDelaySeconds);
  25. Assert.True(service.EnablePumpRotation);
  26. }
  27. [Fact]
  28. public void AutoControlService_CanToggleEnabled()
  29. {
  30. var service = AutoControlService.Instance;
  31. var original = service.IsEnabled;
  32. service.IsEnabled = false;
  33. Assert.False(service.IsEnabled);
  34. service.IsEnabled = original;
  35. }
  36. [Fact]
  37. public void MockPlcService_ShouldBeToggleable()
  38. {
  39. var wasEnabled = MockPlcService.IsEnabled;
  40. MockPlcService.Enable();
  41. Assert.True(MockPlcService.IsEnabled);
  42. // Note: MockPlcService 没有 Disable 方法,只能 Enable
  43. // Restore original state if needed
  44. }
  45. [Fact]
  46. public void MockPlcService_ShouldGenerateData()
  47. {
  48. MockPlcService.Enable();
  49. var data = new PlcDataModel();
  50. MockPlcService.UpdateData(data);
  51. // Mock 模式应生成模拟数据
  52. Assert.True(data.IsDataValid || data.LastReadTime > DateTime.MinValue);
  53. }
  54. }