| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- using System.Collections.Generic;
- using System.Linq;
- using IvfTl.Control.Entity.InitEntitys;
- using ivf_tl_Control;
- using Xunit;
- namespace IvfTl.ControlHost.Tests
- {
- public class StartupFaultPolicyTests
- {
- private static HouseFault Fault(int sn, HouseFaultType t = HouseFaultType.CcdSnMissing)
- => new HouseFault { HouseSn = sn, Type = t, Reason = "x", Stage = "扫口握手" };
- [Fact]
- public void BadHouseSns_Only_Counts_Known_Houses()
- {
- var faults = new List<HouseFault>
- {
- Fault(6),
- Fault(-1, HouseFaultType.CameraDuplicateSn), // 舱号未知 → 不算坏舱
- Fault(8),
- };
- var bad = StartupFaultPolicy.BadHouseSns(faults);
- Assert.Equal(new[] { 6, 8 }, bad.OrderBy(x => x).ToArray());
- }
- [Fact]
- public void RunnableHouses_Excludes_Bad_And_Sorts()
- {
- var discovered = new[] { 2, 4, 6, 7, 8, 9, 11 };
- var faults = new List<HouseFault> { Fault(6), Fault(8) };
- var run = StartupFaultPolicy.RunnableHouses(discovered, faults);
- Assert.Equal(new[] { 2, 4, 7, 9, 11 }, run.ToArray());
- }
- [Fact]
- public void RunnableHouses_With_No_Faults_Returns_All_Discovered()
- {
- var discovered = new[] { 2, 4, 6 };
- var run = StartupFaultPolicy.RunnableHouses(discovered, new List<HouseFault>());
- Assert.Equal(new[] { 2, 4, 6 }, run.ToArray());
- }
- [Fact]
- public void RunnableHouses_UnknownHouseFault_Does_Not_Exclude_Anyone()
- {
- var discovered = new[] { 2, 4 };
- var faults = new List<HouseFault> { Fault(-1, HouseFaultType.CameraReadFailed) };
- var run = StartupFaultPolicy.RunnableHouses(discovered, faults);
- Assert.Equal(new[] { 2, 4 }, run.ToArray());
- }
- [Fact]
- public void IsFatal_True_Only_When_No_Runnable_House()
- {
- Assert.True(StartupFaultPolicy.IsFatal(new List<int>()));
- Assert.False(StartupFaultPolicy.IsFatal(new List<int> { 11 }));
- Assert.False(StartupFaultPolicy.IsFatal(new List<int> { 2, 4 }));
- }
- [Fact]
- public void Partial_Failure_Is_Never_Fatal()
- {
- // 7 个舱里坏 2 个 → 仍 5 个可跑 → 不致命(核心需求)
- var discovered = new[] { 2, 4, 6, 7, 8, 9, 11 };
- var faults = new List<HouseFault> { Fault(6), Fault(8) };
- var run = StartupFaultPolicy.RunnableHouses(discovered, faults);
- Assert.False(StartupFaultPolicy.IsFatal(run));
- }
- }
- }
|