| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- using Xunit;
- using YZWater.Core.Models;
- using YZWater.Core.Services;
- namespace YZWater.Core.Tests.Services;
- /// <summary>
- /// 自动控制服务集成测试
- /// 使用 MockPlcService 模拟 PLC 数据
- /// </summary>
- 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 = true;
- Assert.True(service.IsEnabled);
- service.IsEnabled = original;
- }
- [Fact]
- public void AutoControlService_CanTogglePumpRotation()
- {
- var service = AutoControlService.Instance;
- var original = service.EnablePumpRotation;
- service.EnablePumpRotation = false;
- Assert.False(service.EnablePumpRotation);
- service.EnablePumpRotation = true;
- Assert.True(service.EnablePumpRotation);
- service.EnablePumpRotation = original;
- }
- [Fact]
- public void AutoControlService_CanModifyDelays()
- {
- var service = AutoControlService.Instance;
- service.StartDelaySeconds = 5;
- service.StopDelaySeconds = 10;
- service.MinIntervalSeconds = 120;
- Assert.Equal(5, service.StartDelaySeconds);
- Assert.Equal(10, service.StopDelaySeconds);
- Assert.Equal(120, service.MinIntervalSeconds);
- // Reset
- service.StartDelaySeconds = 3;
- service.StopDelaySeconds = 5;
- service.MinIntervalSeconds = 60;
- }
- [Fact]
- public void MockPlcService_ShouldBeToggleable()
- {
- MockPlcService.Enable();
- Assert.True(MockPlcService.IsEnabled);
- }
- [Fact]
- public void MockPlcService_ShouldGenerateData()
- {
- MockPlcService.Enable();
- var data = new PlcDataModel();
- MockPlcService.UpdateData(data);
- // Mock 模式应生成模拟数据
- Assert.True(data.IsDataValid || data.LastReadTime > DateTime.MinValue);
- }
- [Fact]
- public void ProjectProfile_CanCreatePumpConfig()
- {
- var pump = new PumpConfig
- {
- Name = "TestPump",
- RunAddress = "Q0.1",
- FaultAddress = "I0.1",
- CurrentAddress = "VD50",
- StartAddress = "M1.3",
- StopAddress = "M1.4"
- };
- Assert.Equal("TestPump", pump.Name);
- Assert.Equal("Q0.1", pump.RunAddress);
- Assert.Equal("I0.1", pump.FaultAddress);
- }
- [Fact]
- public void ProjectProfile_CanCreateTankConfig()
- {
- var tank = new TankConfig
- {
- Name = "TestTank",
- LevelAddress = "VD62",
- StartPump1LevelAddress = "VD500",
- StopLevelAddress = "VD528",
- ProtectionLevelAddress = "VD962"
- };
- Assert.Equal("TestTank", tank.Name);
- Assert.Equal("VD62", tank.LevelAddress);
- }
- [Fact]
- public void ProjectProfile_CanCreateFullProfile()
- {
- var profile = new ProjectProfile
- {
- Name = "测试项目",
- Description = "测试用项目档案",
- Pumps = new()
- {
- new PumpConfig { Name = "P1", RunAddress = "Q0.1", FaultAddress = "I0.1" },
- new PumpConfig { Name = "P2", RunAddress = "Q0.2", FaultAddress = "I0.2" }
- },
- Tanks = new()
- {
- new TankConfig { Name = "T1", LevelAddress = "VD62" }
- },
- AlarmThresholds = new AlarmThresholds
- {
- PressureHigh = 1.2f,
- PressureLow = 0.1f
- }
- };
- Assert.Equal("测试项目", profile.Name);
- Assert.Equal(2, profile.Pumps.Count);
- Assert.Single(profile.Tanks);
- Assert.NotNull(profile.AlarmThresholds);
- Assert.Equal(1.2f, profile.AlarmThresholds.PressureHigh);
- }
- }
|